Exemplo n.º 1
0
    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);
        }
    }
Exemplo n.º 2
0
    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());
                    }
                }
            }
        }
    }