public int GetPurchableskinnerBoxCount(PurchableSkinnerBoxInfo boxInfo) { SkinnerBoxSavedData skinnerBoxSavedData = ServiceLocator.Resolve <IStorageService>().ResolveData <SkinnerBoxSavedData>() ?? new SkinnerBoxSavedData(); if (!skinnerBoxSavedData.ItemCount.ContainsKey(boxInfo.Id)) { return(0); } return(skinnerBoxSavedData.ItemCount[boxInfo.Id]); }
public bool IsFreeSkinnerBoxAvailable(FreeSkinnerBoxInfo boxInfo) { SkinnerBoxSavedData skinnerBoxSavedData = ServiceLocator.Resolve <IStorageService>().ResolveData <SkinnerBoxSavedData>() ?? new SkinnerBoxSavedData(); if (!skinnerBoxSavedData.FreeItemUseTime.ContainsKey(boxInfo.Id)) { return(true); } if (skinnerBoxSavedData.FreeItemUseTime[boxInfo.Id] < DateTime.Now) { return(true); } return(false); }
public TimeSpan GetFreeSkinnerBoxAvailabiltyDuration(FreeSkinnerBoxInfo boxInfo) { SkinnerBoxSavedData skinnerBoxSavedData = ServiceLocator.Resolve <IStorageService>().ResolveData <SkinnerBoxSavedData>() ?? new SkinnerBoxSavedData(); if (!skinnerBoxSavedData.FreeItemUseTime.ContainsKey(boxInfo.Id)) { return(TimeSpan.Zero); } if (skinnerBoxSavedData.FreeItemUseTime[boxInfo.Id] <= DateTime.Now) { return(TimeSpan.Zero); } return(skinnerBoxSavedData.FreeItemUseTime[boxInfo.Id] - DateTime.Now); }
public SkinnerBoxItemInfo OpenBox(SkinnerBoxInfo boxInfo) { SkinnerBoxSavedData skinnerBoxSavedData = ServiceLocator.Resolve <IStorageService>().ResolveData <SkinnerBoxSavedData>() ?? new SkinnerBoxSavedData(); FreeSkinnerBoxInfo freeSkinnerBoxInfo = boxInfo as FreeSkinnerBoxInfo; if (freeSkinnerBoxInfo != null) { if (!IsFreeSkinnerBoxAvailable(freeSkinnerBoxInfo)) { throw new Exception("no free skinner box avialable."); } SkinnerBoxItemInfo skinnerBoxItemInfo = PickItem(freeSkinnerBoxInfo.Items); skinnerBoxSavedData.FreeItemUseTime[boxInfo.Id] = DateTime.Now + TimeSpan.FromSeconds(freeSkinnerBoxInfo.UseDelay); ServiceLocator.Resolve <IStorageService>().UpdateData(skinnerBoxSavedData); ApplySkinnerBoxItemInfo(skinnerBoxItemInfo); return(skinnerBoxItemInfo); } PurchableSkinnerBoxInfo purchableSkinnerBoxInfo = boxInfo as PurchableSkinnerBoxInfo; if (purchableSkinnerBoxInfo != null) { if (GetPurchableskinnerBoxCount(purchableSkinnerBoxInfo) <= 0) { throw new Exception("no purchasable skinner box avialable."); } SkinnerBoxItemInfo skinnerBoxItemInfo = PickItem(purchableSkinnerBoxInfo.Items); skinnerBoxSavedData.ItemCount[purchableSkinnerBoxInfo.Id]--; ServiceLocator.Resolve <IStorageService>().UpdateData(skinnerBoxSavedData); ApplySkinnerBoxItemInfo(skinnerBoxItemInfo); return(skinnerBoxItemInfo); } return(null); }