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)); }
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); }
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); }
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(); }