Esempio n. 1
0
 public void AddNewGoals()
 {
     buildingCommander.SetGoal(new WorldState("blackTowerIsBuilt", new WorldStateValue(true)));
     //buildingCommander.SetGoal(new WorldState("blueHouseIsBuilt", new WorldStateValue(true)));
     //buildingCommander.SetGoal(new WorldState("redHouseIsBuilt", new WorldStateValue(true)));
 }
Esempio n. 2
0
    private void AddNewGoals()
    {
        //Debug.Log ("Nu borde det slumpas mer tasks");
        //loopa igenom actions, välj ut en och posta dess postcondition
        WorldState goal = ActionManager.Instance.GetGoal(Random.Range(0, ActionManager.Instance.NumberOfActions() - 1));
        Dictionary <string, WorldStateValue> dict = goal.getProperties();
        string building = "";

        foreach (KeyValuePair <string, WorldStateValue> pair in dict)
        {
            building = pair.Key;
        }

        Action action     = ActionManager.Instance.getSuitableActions(goal)[0];
        string actionName = action.GetActionName().Substring(0, 5);         //Build action?

        if (actionName == "Build")
        {
            string type       = "";
            int    firstUpper = 0;

            for (int i = 0; i < building.Length - 1; i++)
            {
                if (char.IsUpper(building[i]))
                {
                    type = building.Substring(i);

                    if (firstUpper == 0)
                    {
                        firstUpper = i;
                    }
                    else
                    {
                        type = building.Substring(firstUpper, i - firstUpper);
                        break;
                    }
                }
            }

            if (type != "Floor")
            {
                List <string> colorsInClan = BlackBoard.Instance.GetColorsInClan(clan);
                //Check if action requires several agents then it should check if we got both those agentcolors

                bool haveAllAgents = true;

                foreach (List <string> listOfColors in ActionManager.Instance.AgentsThatDoAction(action.GetActionName()))
                {
                    foreach (string color in listOfColors)
                    {
                        if (!colorsInClan.Contains(color))
                        {
                            haveAllAgents = false;
                        }
                    }

                    if (haveAllAgents)
                    {
                        break;
                    }
                }


                if (haveAllAgents == true)                //We can only add new buildings as goals
                {
                    /*string color = "";
                     * for(int i = 0; i < building.Length; i++)
                     * {
                     *      if(char.IsUpper(building[i]))
                     *      {
                     *              color = building.Substring(0, i);
                     *              break;
                     *      }
                     * }
                     * color = char.ToUpper(color[0]) + color.Substring(1);
                     */
                    Debug.Log("NEW GOAL!!!! " + building);
                    buildingCommander.SetGoal(goal);
                }
            }
        }

        //buildingCommander.SetGoal(new WorldState("blackTowerIsBuilt", new WorldStateValue(true)));
        //buildingCommander.SetGoal(new WorldState("magentaFactoryIsBuilt", new WorldStateValue(true)));
        //buildingCommander.SetGoal(new WorldState("redHouseIsBuilt", new WorldStateValue(true)));
    }