コード例 #1
0
        public static IsConsumeResult IsConsume(ArrangementResourceAmount amount, bool withReserve = true)
        {
            if (!GameManager.Instance.MouseStockManager.IsConsume(amount.MouseOrderAmount, withReserve))
            {
                return(new IsConsumeResult(false, string.Format("MouseOrderAmount:{0}/{1}", amount.MouseOrderAmount, GameManager.Instance.MouseStockManager.MouseStockCount), ErrorReason.NoMouse));
            }

            if (!GameManager.Instance.Wallet.IsConsume(amount.Currency, withReserve))
            {
                return(new IsConsumeResult(false, string.Format("Currency:{0}/{1}", amount.Currency, GameManager.Instance.Wallet.Current), ErrorReason.NoCurrency));
            }

            if (!GameManager.Instance.ArrangementItemStore.IsConsume(amount.ArrangementItemAmount, withReserve))
            {
                return(new IsConsumeResult(false, string.Format("ArrangementItemStore:{0}/{1}", amount.ArrangementItemAmount, GameManager.Instance.ArrangementItemStore.Current), ErrorReason.NoArrangementItem));
            }

            var monoIds             = amount.ArrangementCount.GetCountedMonoInfos();
            var monoRepository      = new MonoInfoRepository(ContextMap.DefaultMap);
            var arrangementMaxCount = monoRepository.GetMaxCount(monoIds);

            foreach (var monoId in monoIds)
            {
                var currentCount = GameManager.Instance.ArrangementManager.GetAppearMonoCountById(monoId, withReserve);
                var maxCount     = arrangementMaxCount.GetMaxCount(monoId);
                if (maxCount <= currentCount)
                {
                    return(new IsConsumeResult(false, string.Format("currentCount:{0}:{1}/{2}", monoId, currentCount, maxCount), ErrorReason.NoArrangement));
                }
            }

            return(new IsConsumeResult(true, "success", ErrorReason.UnKnown));
        }
コード例 #2
0
 public static void UnReserveConsume(ArrangementResourceAmount amount)
 {
     GameManager.Instance.ReserveAmountManager.UnReserve <Currency>(ReserveKey, amount.Currency);
     GameManager.Instance.ReserveAmountManager.UnReserve <ArrangementItemAmount>(ReserveKey, amount.ArrangementItemAmount);
     GameManager.Instance.ReserveAmountManager.UnReserve <ArrangementCount>(ReserveKey, amount.ArrangementCount);
     GameManager.Instance.ReserveAmountManager.UnReserve <MouseOrderAmount>(ReserveKey, amount.MouseOrderAmount);
 }
コード例 #3
0
        public static void Consume(ArrangementResourceAmount amount)
        {
            var isConsumeResult = ArrangementResourceHelper.IsConsume(amount, false);

            Debug.Assert(isConsumeResult.IsConsume, isConsumeResult.SystemErrorMessage);
            GameManager.Instance.Wallet.Consume(amount.Currency);
            GameManager.Instance.ArrangementItemStore.Consume(amount.ArrangementItemAmount);
        }
コード例 #4
0
        public static void ConsumeReserve()
        {
            var amount = new ArrangementResourceAmount(
                GameManager.Instance.ReserveAmountManager.GetByKey <Currency>(ReserveKey),
                GameManager.Instance.ReserveAmountManager.GetByKey <ArrangementItemAmount>(ReserveKey),
                GameManager.Instance.ReserveAmountManager.GetByKey <ArrangementCount>(ReserveKey),
                GameManager.Instance.ReserveAmountManager.GetByKey <MouseOrderAmount>(ReserveKey));

            GameManager.Instance.EffectManager.PlayConsumeEffect(
                amount.Currency,
                GameManager.Instance.MouseHomeManager.HomePostion);

            Consume(amount);
            ResetReserve();
        }