public Culture(string cultureName, Color cultureColor, Vector2 position, params CultureParameter[] parameter) { Name = cultureName; AddParameter(parameter); CultureColor = cultureColor; StartPosition = position; BT_Culture = new BehaviourTree(this); //example Behaviour Tree BT_Selector selector = new BT_WeightedSelector("Start Selector", new BT_WeightedSelector.WeightedPair( GetParameterValue("Behaviour"), new BT_Selector("Behaviour", new BT_Kill("Kill"), new BT_Claim("Claim: Behaviour", CultureType.Behaviour))), new BT_WeightedSelector.WeightedPair( GetParameterValue("Communication"), new BT_Selector("Communication", new BT_Trade("Trade"), new BT_Reputation("Reputation: Communication", CultureType.Communication), new BT_Claim("Claim: Communication", CultureType.Communication))), new BT_WeightedSelector.WeightedPair( GetParameterValue("Economics"), new BT_Selector("Economics", new BT_Reputation("Reputation: Economics", CultureType.Economics), new BT_Claim("Claim: Economics", CultureType.Economics))), new BT_WeightedSelector.WeightedPair( GetParameterValue("Sociology"), new BT_Selector("Sociology", new BT_Reputation("Reputation: Sociology", CultureType.Sociology)))); BT_Culture.Add(selector); //example Behaviour Tree Variables.PopulationSize = Random.Range(15, 30); //adding Start Population }
public void ChangeParameterValue(string paramName, float newValue) { if (Parameter.Any(t => t.Name == paramName)) { Parameter.First(t => t.Name == paramName).Value = newValue; } //This is not the optimal solution BT_WeightedSelector selector = BT_Culture.GetChild(0) as BT_WeightedSelector; if (selector == null) { return; } int index = paramName == "Behaviour" ? 0 : paramName == "Communication" ? 1 : paramName == "Economics" ? 2 : paramName == "Sociology" ? 3 : -1; selector.ChangeWeight(index, newValue); }
protected void Update() { if (Input.GetKeyDown(KeyCode.F5)) { BehaviourTree bt = new BehaviourTree(CultureManager.Instance.Cultures[0]); BT_Selector selector = new BT_WeightedSelector("Start Selector", new BT_WeightedSelector.WeightedPair( CultureManager.Instance.Cultures[0].GetParameterValue("Behaviour"), new BT_Selector("Behaviour", new BT_Kill("Kill"), new BT_Claim("Claim: Behaviour", CultureType.Behaviour))), new BT_WeightedSelector.WeightedPair( CultureManager.Instance.Cultures[0].GetParameterValue("Communication"), new BT_Selector("Communication", new BT_Trade("Trade"), new BT_Reputation("Reputation: Communication", CultureType.Communication), new BT_Claim("Claim: Communication", CultureType.Communication))), new BT_WeightedSelector.WeightedPair( CultureManager.Instance.Cultures[0].GetParameterValue("Economics"), new BT_Selector("Economics", new BT_Claim("Claim: Economics", CultureType.Economics), new BT_Reputation("Reputation: Economics", CultureType.Economics))), new BT_WeightedSelector.WeightedPair( CultureManager.Instance.Cultures[0].GetParameterValue("Sociology"), new BT_Selector("Sociology", new BT_Reputation("Reputation: Sociology", CultureType.Sociology)))); bt.Add(selector); Debug.Log("X"); bt.Run(); } }