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); }
public SkinnerBox() { BoxInfos = new SkinnerBoxInfo[0]; }