void Develop(Node n) { Building b = BuildingAvailable(n.buildingName); if (b) { if (!aihandler.HasResources(n, ResourceType.Money)) { airesource.AllocateMoney(n.GetCost(ResourceType.Money)); if (!aihandler.HasLimitResources(n, ResourceType.Money)) { aibuilding.BuildHut(); } } if (!aihandler.HasResources(n, ResourceType.Water)) { airesource.AllocateWater(n.GetCost(ResourceType.Water)); if (!aihandler.HasLimitResources(n, ResourceType.Water)) { aibuilding.BuildHut(); } } else if (aihandler.HasResources(n, ResourceType.Money)) { b.StartNode(n); } } else { BuildRequiredBuilding(n.buildingName); } }
void ChooseBuilding() { if (aihandler.playerList.workers.Count == 0) { return; } foreach (Worker w in aihandler.playerList.workers) { if (queue.Count == 0) { break; } if (w.state == WOState.Nothing) { WorldObject wo = aihandler.player.GetBuilding(queue.Peek()).GetComponent <WorldObject> (); if (!aihandler.HasResources(wo, ResourceType.Money)) { airesource.AllocateMoney(wo.moneyCost); if (!aihandler.HasLimitResources(wo, ResourceType.Money)) { BuildHut(); } } if (!aihandler.HasResources(wo, ResourceType.Water)) { airesource.AllocateWater(wo.waterCost); if (!aihandler.HasLimitResources(wo, ResourceType.Water)) { BuildHut(); } } else if (aihandler.HasResources(wo, ResourceType.Money)) { w.getOwner().CreateBuilding(queue.Peek(), Vector3.zero, w); Vector3 playerPos = Vector3.zero; int tries = 1; Vector3 place; if (queue.Peek() == "Hut") { place = airesource.GetNeededResourcePosition(); } else { place = transform.position; } do { playerPos = aihandler.player.FindRandomPlace(tries, place); tries++; } while(!w.getOwner().CanPlaceBuilding() && tries < 10); w.getOwner().CancelBuilding(); if (tries < 10) { w.getOwner().Construction(queue.Dequeue(), playerPos, w.gameObject); buildingTypes.Add(wo.value); } else { queue.Enqueue(queue.Dequeue()); } } } } }