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