Hi all,
i'm using RBT (0.7.6) and Perforce (P4/LINUX26X86_64/2016.1/1404799) and
while creating a review sometimes (rarely to be honest) happens that a file
is not correctly parsed and not showing any diff (and i get the error: the
patch to 'path/to/my/file' didn't apply cleanly). I've attached one of
those file to this post, so maybe you can help me to understand if is a
format error from our side or maybe a RB bug :)
Thanks,
Max
--
Supercharge your Review Board with Power Pack:
https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons:
https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
---
You received this message because you are subscribed to the Google Groups
"reviewboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
using System.Collections;
using System.Collections.Generic;
using Svelto.DataStructures;
using Svelto.Factories;
using Svelto.IoC;
using Svelto.ServiceLayer;
using Svelto.Tasks;
using Svelto.Ticker;
using UnityEngine;
namespace Mothership
{
internal class PurchaseRefresher : ITickable
{
[Inject] public IServiceRequestFactory serviceFactory { set; private get; }
[Inject] public PremiumMembership premiumMembership { set; private get; }
[Inject] public IGameObjectFactory gameObjectFactory { set; private get; }
[Inject] public ICubeInventory cubeInventory { set; private get; }
[Inject] public OpenSalvageCrateController salvageCrateController { private get; set; }
[Inject] public IServiceRequestFactory serviceRequestFactory { set; private get; }
[Inject] internal PromoCodeItemsAwardedController promoItemsAwardedController { set; private get; }
[Inject] internal IGUIInputControllerMothership guiInputController { set; private get; }
public void Tick(float deltaSec)
{
if (_retries > 0)
{
if (_untilNow <= 0)
{
_untilNow = 10;
LoadPurchases();
_retries--;
}
else
_untilNow -= deltaSec;
}
}
public void PollForPurchases(bool purchaseTriggered)
{
_untilNow = 0;
if (purchaseTriggered)
{
if (_retries == 0)
_retries = 10;
ShowLoadingScreen("strVerifyingPurchase");
}
else
{
ShowLoadingScreen("strConnectingToServer");
_retries = 1;
}
}
public AsyncTask RequestDataAsTask()
{
ILoadPurchasesRequest service = serviceFactory.Create<ILoadPurchasesRequest>();
service.SetAnswer(new ServiceAnswer<FasterList<PurchaseRequestData>>(OnPurchasesLoaded, OnPurchasesLoadFail));
return new AsyncTask(service as ITask);
}
void LoadPurchases()
{
if (_requestIsLoading == false)
{
Utility.Console.Log("LoadPurchases retry: " + _retries);
_requestIsLoading = true;
ILoadPurchasesRequest loadPurchasesRequest = serviceFactory.Create<ILoadPurchasesRequest>();
loadPurchasesRequest.SetAnswer(new ServiceAnswer<FasterList<PurchaseRequestData>>(OnPurchasesLoaded, OnPurchasesLoadFail));
loadPurchasesRequest.Execute();
}
}
void OnPurchasesLoaded(FasterList<PurchaseRequestData> purchases)
{
Utility.Console.Log("LoadPurchases retry: done " + _retries);
if (purchases.Count > 0)
{
_retries = 0;
int totalCratesPurchased = 0;
Dictionary<string, object> cubesAwarded = null;
for (int i = 0; i < purchases.Count; i++)
{
PurchaseRequestData requestData = purchases[i];
switch (requestData.ShopItemType)
{
case ShopItemType.Premium:
premiumMembership.UpdatePremiumPurchase(requestData.premiumPurchaseResponse);
break;
case ShopItemType.Crate:
totalCratesPurchased = requestData.totalCrates;
break;
case ShopItemType.Cube:
for (var enumer = requestData.newCubeTotals.GetEnumerator(); enumer.MoveNext(); )
{
var current = enumer.Current;
cubeInventory.SetCubeTotal(new CubeTypeID(current.Key), current.Value);
}
cubesAwarded = requestData.cubesAwarded;
break;
}
}
if (totalCratesPurchased > 0)
{
HandlePurchaseCrates(totalCratesPurchased, cubesAwarded);
}
}
if (_retries == 0)
HideLoadingScreen();
_requestIsLoading = false;
}
void HandlePurchaseCrates(int cratesToBuy, Dictionary<string, object> cubesAwarded)
{
AnalyticsEvent.LogCratePurchaseSuccess(cratesToBuy);
TaskRunner.Instance.DeepRun(ShowPurchasedCratesSuccessDialogs(cubesAwarded));
}
IEnumerator ShowPurchasedCratesSuccessDialogs(Dictionary<string, object> cubesAwarded)
{
int totalCratesCount = 0;
//first part
ShowLoadingScreen("strConnectingToServer");
yield return salvageCrateController.PrepareCratesToView((serviceBehaviour) => ErrorWindow.ShowServiceErrorWindow(serviceBehaviour, () => ShowLoadingScreen("strConnectingToServer")));
HideLoadingScreen();
//second part
IServiceAnswer<List<Loot.LootCrate>> loadBatchRequestAnswerObject = new ServiceAnswer<List<Loot.LootCrate>>((result) =>
{
totalCratesCount = result.Count;
},
(behaviour) => ErrorWindow.ShowServiceErrorWindow(behaviour, () => ShowLoadingScreen("strConnectingToServer")));
IGetLootCrateBatchRequest loadCratesRequest = serviceRequestFactory.Create<IGetLootCrateBatchRequest, GetLootCrateBatchRequestInputDependancy>(new GetLootCrateBatchRequestInputDependancy());
loadCratesRequest.SetAnswer(loadBatchRequestAnswerObject);
AsyncTask newTask = new AsyncTask(loadCratesRequest as ITask);
yield return newTask;
salvageCrateController.ShowSalvageCrateScreen(totalCratesCount);
while (salvageCrateController.IsActive())
{
yield return null;
}
if (cubesAwarded != null)
{
promoItemsAwardedController.SetAwardedCubeDataAndShowScreen(cubesAwarded);
}
while (promoItemsAwardedController.IsActive())
{
yield return null;
}
guiInputController.CloseCurrentScreen();
yield return null;
}
void OnPurchasesLoadFail(ServiceBehaviour behaviour)
{
_requestIsLoading = false;
HideLoadingScreen();
ErrorWindow.ShowServiceErrorWindow(behaviour);
}
void ShowLoadingScreen(string loadingStrKey)
{
if (_loadingScreen == null)
{
_loadingScreen = gameObjectFactory.Build(Prefabs.ServiceLoadingIcon);
_loadingScreen.GetComponent<GenericLoadingScreen>().text = StringTable.Instance.GetString(loadingStrKey);
}
_loadingScreen.gameObject.SetActive(true);
}
void HideLoadingScreen()
{
if(_loadingScreen)
_loadingScreen.gameObject.SetActive(false);
}
bool _requestIsLoading = false;
int _retries = 0;
float _untilNow = 0f;
GameObject _loadingScreen = null;
}
}