Beispiel #1
0
    public List <UT_Pair <UT_Node <T>, int> > GetPathLengths(UT_Node <T> startNode)
    {
        int level = 0;
        List <UT_Pair <UT_Node <T>, int> > res = new List <UT_Pair <UT_Node <T>, int> >();

        bool[] visited = new bool[m_nodes.Count];

        Queue <UT_Pair <UT_Node <T>, int> > queue = new Queue <UT_Pair <UT_Node <T>, int> >();

        visited[m_nodes.IndexOf(startNode)] = true;
        queue.Enqueue(new UT_Pair <UT_Node <T>, int>(startNode, level));

        while (queue.Count > 0)
        {
            UT_Pair <UT_Node <T>, int> temp = queue.Dequeue();
            res.Add(temp);
            if (temp.second > level)
            {
                level++;
            }

            List <UT_Node <T> > adj = temp.first.GetAdjacent();
            foreach (UT_Node <T> node in adj)
            {
                int index = m_nodes.IndexOf(node);
                if (!visited[index])
                {
                    visited[index] = true;
                    queue.Enqueue(new UT_Pair <UT_Node <T>, int>(node, level + 1));
                }
            }
        }

        return(res);
    }
Beispiel #2
0
    /// <summary> Function called when Building is supposed to be placed. </summary>
    private void OnBuildingBuildIconClick()
    {
        // check whether the place is not occupied.
        foreach (Tile tile in m_tilesHighlighted)
        {
            if (tile.IsOccupied())
            {
                return;
            }
        }

        UT_Pair <int, int> cost = M_BuildingManager.SGetBuildingCost(m_tempBuildingComp.GetData().id);

        // Apply cost to the resources
        M_InGameResourcesManager.SAddFood(-cost.first);
        M_InGameResourcesManager.SAddResearch(-cost.second);

        // Mark highlighted tiles as occupied
        foreach (Tile tile in m_tilesHighlighted)
        {
            tile.SetOccupied(true);
            tile.Highlight(false);
        }
        // set final building position
        Vector3 pos = m_currentMiddleTile.transform.position;

        pos.y = M_MapManager.SGetYDepthValue(pos.z);
        m_tempBuildingObj.transform.position = pos;
        // Move to the BUILDINGS group
        M_GameHelper.AddToGroup(m_tempBuildingObj, M_GameHelper.Group.BUILDINGS);

        m_tempBuildingComp.SetActionOnBuildingFinished(ActionOnBuildingFinished);
        // Start in-game building process
        m_tempBuildingComp.StartBuilding();


        m_onBuildingPlacedAction(m_tempBuildingComp);

        // reset values
        m_tempBuildingObj.GetComponent <IBuilding>().GetBuildButton().SetActive(false);
        m_tempBuildingObj   = null;
        m_tempBuildingComp  = null;
        m_currentMiddleTile = null;
        m_tilesHighlighted.Clear();
        M_MiscManager.ShowCancelButton(false);
    }
Beispiel #3
0
    public void Setup(DAT_Building data)
    {
        buildingData      = data;
        buildingName.text = data.name;

        UT_Pair <int, int> cost = M_BuildingManager.SGetBuildingCost(data.id);

        requiredFood     = cost.first;
        requiredResearch = cost.second;

        if (data != null && requiredFood <= M_InGameResourcesManager.GetFood() && requiredResearch <= M_InGameResourcesManager.GetResearchPoints())
        {
            buildButton.interactable = true;
            buildButton.image.color  = Color.green;
        }
        else
        {
            buildButton.interactable = false;
            buildButton.image.color  = Color.red;
        }
    }
Beispiel #4
0
    public void Setup()
    {
        if (buildingData != null)
        {
            UT_Pair <int, int> cost = M_BuildingManager.SGetBuildingCost(buildingData.id);
            requiredFood     = cost.first;
            requiredResearch = cost.second;

            foodText.text     = requiredFood.ToString();
            researchText.text = requiredResearch.ToString();

            if (buildingData != null && requiredFood <= M_InGameResourcesManager.GetFood() && requiredResearch <= M_InGameResourcesManager.GetResearchPoints())
            {
                buildButton.interactable = true;
                buildButton.image.color  = Color.green;
            }
            else
            {
                buildButton.interactable = false;
                buildButton.image.color  = Color.red;
            }
        }
    }