Exemplo n.º 1
0
        private void OnSelectUseItemCallBack(ItemlistModel model)
        {
            bool activeState = CurrentState == State.ItemSelect || CurrentState == State.UseCheck;

            if (!activeState)
            {
                return;
            }
            if (CurrentState == State.ItemSelect)
            {
                mItemList.SetKeyController(null);
                PushState(State.UseCheck);
            }
            mItemListChildDetai.SetKeyController(null);
            if (IsExchangeItemlistModel(model))
            {
                int mstId = model.MstId;
                if (mstId == 57)
                {
                    mItemExchangeMedalConfirm.Initialize(model, mItemListManager);
                    mItemExchangeMedalConfirm.SetKeyController(mKeyController);
                    mItemExchangeMedalConfirm.SetOnExchangeItemSelectedCallBack(delegate(ItemExchangeKinds selectedItemExchangeKind)
                    {
                        mItemExchangeMedalConfirm.SetKeyController(null);
                        ItemlistManager.Result result3 = mItemListManager.UseItem(model.MstId, is_force: false, selectedItemExchangeKind);
                        if (result3.IsLimitOver())
                        {
                            mItemExchangeMedalConfirm.Close(null);
                            mItemUseLimitOverConfirm.SetOnNegativeCallBack(delegate
                            {
                                if (CurrentState == State.ExchangeSelect)
                                {
                                    PopState();
                                    mItemUseLimitOverConfirm.Close(null);
                                    mItemUseLimitOverConfirm.SetKeyController(null);
                                    ResumeState();
                                }
                            });
                            mItemUseLimitOverConfirm.SetOnPositiveCallBack(delegate
                            {
                                if (CurrentState == State.ExchangeSelect)
                                {
                                    PopState();
                                    mItemUseLimitOverConfirm.Close(null);
                                    mItemUseLimitOverConfirm.SetKeyController(null);
                                    ItemlistManager.Result result4 = mItemListManager.UseItem(model.MstId, is_force: true, selectedItemExchangeKind);
                                    StartCoroutine(OnGetRewards(model, result4.Rewards, delegate
                                    {
                                        mItemList.Refresh(mItemListManager.HaveItems.ToArray());
                                        ResumeState();
                                    }));
                                }
                            });
                            mItemUseLimitOverConfirm.Initialize();
                            mItemUseLimitOverConfirm.SetKeyController(mKeyController);
                            mItemUseLimitOverConfirm.Show(null);
                            ReplaceState(State.ExchangeSelect);
                        }
                        else
                        {
                            mItemExchangeMedalConfirm.Close(null);
                            ReplaceState(State.GetReward);
                            StartCoroutine(OnGetRewards(model, result3.Rewards, delegate
                            {
                                mItemList.Refresh(mItemListManager.HaveItems.ToArray());
                                PopState();
                                ResumeState();
                            }));
                        }
                    });
                    mItemExchangeMedalConfirm.SetOnCancelCallBack(delegate
                    {
                        mItemExchangeMedalConfirm.Close(null);
                        mItemExchangeMedalConfirm.SetKeyController(null);
                        PopState();
                        ResumeState();
                    });
                    mItemExchangeMedalConfirm.Show(null);
                    ReplaceState(State.ExchangeSelect);
                }
            }
            else
            {
                mItemUseConfirm.SetOnNegativeCallBack(delegate
                {
                    bool flag = CurrentState == State.ExchangeSelect;
                    if (activeState)
                    {
                        PopState();
                        mItemUseConfirm.SetKeyController(null);
                        mItemUseConfirm.Close(null);
                        ResumeState();
                    }
                });
                mItemUseConfirm.SetOnPositiveCallBack(delegate
                {
                    bool flag2 = CurrentState == State.ExchangeSelect;
                    if (activeState)
                    {
                        mItemUseConfirm.SetKeyController(null);
                        mItemUseConfirm.Close(null);
                        ItemlistManager.Result result = mItemListManager.UseItem(model.MstId, is_force: false, ItemExchangeKinds.NONE);
                        if (result == null)
                        {
                            if (model.MstId == 53)
                            {
                                CommonPopupDialog.Instance.StartPopup("これ以上拡張できません");
                            }
                            PopState();
                            ResumeState();
                        }
                        else if (result.IsLimitOver())
                        {
                            ReplaceState(State.ExchangeSelect);
                            mItemUseLimitOverConfirm.SetOnNegativeCallBack(delegate
                            {
                                PopState();
                                mItemUseLimitOverConfirm.SetKeyController(null);
                                mItemUseLimitOverConfirm.Close(null);
                                ResumeState();
                            });
                            mItemUseLimitOverConfirm.SetOnPositiveCallBack(delegate
                            {
                                mItemUseLimitOverConfirm.SetKeyController(null);
                                mItemUseLimitOverConfirm.Close(null);
                                ItemlistManager.Result result2 = mItemListManager.UseItem(model.MstId, is_force: true, ItemExchangeKinds.NONE);
                                StartCoroutine(OnGetRewards(model, result2.Rewards, delegate
                                {
                                    mItemList.Refresh(mItemListManager.HaveItems.ToArray());
                                    PopState();
                                    ResumeState();
                                }));
                            });
                            mItemUseLimitOverConfirm.Initialize();
                            mItemUseLimitOverConfirm.SetKeyController(mKeyController);
                            mItemUseLimitOverConfirm.Show(null);
                        }
                        else
                        {
                            ReplaceState(State.GetReward);
                            IReward[] rewards = result.Rewards;
                            StartCoroutine(OnGetRewards(model, rewards, delegate
                            {
                                mItemList.Refresh(mItemListManager.HaveItems.ToArray());
                                PopState();
                                ResumeState();
                            }));
                        }
                    }
                });
                mItemListChildDetai.SetKeyController(null);
                ReplaceState(State.ExchangeSelect);
                mItemUseConfirm.Initialize();
                mItemUseConfirm.Show(null);
                mItemUseConfirm.SetKeyController(mKeyController);
            }
        }