public void loadStoredMarket() { Vector3 slotPos = marketStartPos.position; float origX = slotPos.x; for (int i = 0; i < storedMarketUnits.Count; i++) { MarketSlot tempSl = Instantiate(marketSlot, slotPos, Quaternion.identity).GetComponent <MarketSlot>(); if (storedMarketUnits[i] != null) { tempSl.assignUnit(storedMarketUnits[i]); } else { tempSl.emptyUnit(); } tempSl.isInvSlot = false; marketSlots.Add(tempSl); if (((i + 1) % rowCount) != 0) { slotPos.x -= itemWidth; } else { slotPos.x = origX; slotPos.y -= itemHeight; } } emptyStoredMarket(); }
void chooseAvailable(int slotCount, BaseLevel level) { Vector3 slotPos = marketStartPos.position; float origX = slotPos.x; for (int i = 0; i < slotCount; i++) { MarketSlot tempSlot = Instantiate(marketSlot, slotPos, Quaternion.identity).GetComponent <MarketSlot>(); tempSlot.isInvSlot = false; if (!sg.isInfinite) { chooseUnitFor(tempSlot, level); } else { chooseInfUnitFor(tempSlot, gc.curLevel); } marketSlots.Add(tempSlot); if (((i + 1) % rowCount) != 0) { slotPos.x -= itemWidth; } else { slotPos.x = origX; slotPos.y -= itemHeight; } } }
/// <summary> /// When a market product button is clicked. /// If enough money and buying, instantiate and add to inventory /// </summary> /// <param name="clicked"></param> private void OnSlotClicked(MarketSlot clicked) { if (player.CheckGold(clicked.GetProduct().price)) { clicked.Disable(); player.RemoveGold(clicked.GetProduct().price); // Need to Instantiate the product first (Not Inventory's job) GameObject yield = Instantiate(clicked.GetProduct().product.gameObject, Vector3.zero, Quaternion.identity); inventory.Add(yield); onBuy.Invoke(); } }
void chooseUnitFor(MarketSlot sl, BaseLevel levelFrom) { int choice = Random.Range(0, chancesTotal); int total = 0; for (int i = 0; i < levelFrom.marketUnits.Length; i++) { total += levelFrom.marketChances[i]; if (choice < total) { sl.assignUnit(new bUnit(levelFrom.marketUnits[i])); break; } } }
void chooseInfUnitFor(MarketSlot sl, GenLevel levelFrom) { int choice = Random.Range(0, chancesTotal); int total = 0; bool chosenYet = false; for (int i = 0; i < levelFrom.availableInMarket.Length; i++) { total += levelFrom.marketUnitChances[i]; if (choice < total) { sl.assignUnit(new bUnit(levelFrom.availableInMarket[i])); chosenYet = true; break; } } if (!chosenYet) { Debug.LogError("ERROR: Did not choose unit for slot"); } }
public void refreshInventory() { //inventory slots in market. Vector3 invPos = marketInvStartPos.position; float origX = invPos.x; int fullCount = ih.unitInventory.Count; if (invSlots.Count > 0) { for (int i = 0; i < InventoryHandler.maxInvSlots; i++) { Destroy(invSlots[i].gameObject); } } invSlots.Clear(); for (int i = 0; i < InventoryHandler.maxInvSlots; i++) { MarketSlot invSlot = Instantiate(marketInvSlot, invPos, Quaternion.identity).GetComponent <MarketSlot>(); invSlot.isInvSlot = true; if (i < fullCount) { invSlot.assignUnit(ih.unitInventory[i]); } invSlots.Add(invSlot); if ((i + 1) % rowCount != 0) { invPos.x -= itemWidth; } else { invPos.x = origX; invPos.y -= itemHeight; } } curInvCount = fullCount; }
public void emptyMarketSlot(MarketSlot sl) { sl.emptyUnit(); }