Пример #1
0
        protected IEnumerator PushEditObjectToNGUIObjectOverTime()
        {
            //wait a tick - we do this to allow our containers to be built, etc.
            while (PlayerInventoryDisplay == null)
            {
                yield return(null);
            }

            PlayerInventoryDisplay.Session    = mEditObject;
            CharacterInventoryDisplay.Session = mEditObject;
            PlayerGoodsDisplay.Session        = mEditObject;
            CharacterGoodsDisplay.Session     = mEditObject;
            //this will build the squares
            PlayerInventoryDisplay.Refresh();
            CharacterInventoryDisplay.Refresh();
            PlayerGoodsDisplay.Refresh();
            CharacterGoodsDisplay.Refresh();
            //set up the banks so they'll transfer to each other correctly when clicked
            PlayerInventoryBank.SetBank(mEditObject.PlayerInventory.InventoryBank, mEditObject.PlayerGoodsBank);
            CharacterInventoryBank.SetBank(mEditObject.CharacterInventory.InventoryBank, mEditObject.CharacterGoodsBank);
            PlayerGoodsBank.SetBank(mEditObject.PlayerGoodsBank, mEditObject.PlayerInventory.InventoryBank);
            CharacterGoodsBank.SetBank(mEditObject.CharacterGoodsBank, mEditObject.CharacterInventory.InventoryBank);

            while (!PlayerInventoryDisplay.HasCreatedSquares)
            {
                yield return(null);
            }
            //this will automatically refresh everything
            EditObject.Activate();

            PlayerNameLabel.text    = mEditObject.PlayerInventory.InventoryOwnerName;
            CharacterNameLabel.text = mEditObject.CharacterInventory.InventoryOwnerName;
            //BuyDisplay.SetEnabler (mEditObject.BuyEnabler);
            //SellDisplay.SetEnabler (mEditObject.SellEnabler);

            //are we being asked to barter a specific item?

            /*
             *                      if (mEditObject.HasCharacterStartupItem) {
             *                              BarterGoods startupGoods = new BarterGoods ();
             *                              startupGoods.Add (mEditObject.CharacterStartupStack, 1);
             *                              mEditObject.CharacterGoods.Add (startupGoods);
             *                              mEditObject.CurrentCharacterStackEnablerIndex = 0;
             *                              //the next page button will automatically set the goods to 1
             *                              //which is where temporary items are held
             *                      }
             */
            //now find the stack enabler to start with
            bool goToNextCharacterPage = true;

            if (mEditObject.HasCharacterStartupItem)
            {
                bool foundStartupStack = false;
                int  iterations        = 0;
                int  maxIterations     = 100;
                while (!foundStartupStack)
                {
                    OnClickCharacterNextPageButton();
                    while (mWaitingForContainer)
                    {
                        yield return(null);
                    }
                    //check the stack
                    List <WIStack> stacks = mEditObject.CurrentCharacterStackEnabler.EnablerStacks;
                    for (int i = 0; i < stacks.Count; i++)
                    {
                        if (stacks [i] == mEditObject.CharacterStartupStack)
                        {
                            foundStartupStack = true;
                            break;
                        }
                        else
                        {
                            WIStack newStartupStack = null;
                            if (Stacks.Find.Item(mEditObject.CurrentPlayerStackEnabler.EnablerContainer, mEditObject.CharacterStartupItem, out newStartupStack))
                            {
                                mEditObject.CharacterStartupStack = newStartupStack;
                                foundStartupStack = true;
                                break;
                            }
                        }
                    }
                    if (iterations > maxIterations)
                    {
                        Debug.Log("Reached max iterations, breaking");
                        break;
                    }
                }
                if (foundStartupStack)
                {
                    //now put that good in the 'buy' column immediately for convenience
                    mEditObject.AddGoods(mEditObject.CharacterStartupStack, 1, BarterParty.Character);
                    goToNextCharacterPage = false;
                }
            }

            if (goToNextCharacterPage)
            {
                OnClickCharacterNextPageButton();
                while (mWaitingForContainer)
                {
                    yield return(null);
                }
            }
            OnClickPlayerNextPageButton();
            while (mWaitingForContainer)
            {
                yield return(null);
            }
            yield return(null);

            mPushingObjectToNGUIObjectOverTime = false;
            yield break;
        }