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