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))); }
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))); }