public static AgentBaseNode Parse(AIAgentChart p_agent_chart) { if (p_agent_chart.nodes.Count <= 0) { return(null); } AgentBaseNode baseNode = (AgentBaseNode)p_agent_chart.nodes.Find((x) => x.GetType() == typeof(AgentBaseNode)); if (baseNode == null) { return(null); } int strategyCount = baseNode.GetInputPort("strategies").ConnectionCount; baseNode.strategies = new List <StrategyNode>(); for (int i = 0; i < strategyCount; i++) { StrategyNode strategy = baseNode.GetInputPort("strategies").GetConnection(i).node as StrategyNode; strategy.tacticsNode = GetTacticsNodes(strategy); strategy.eventNodes = GetEventNodes(strategy); baseNode.strategies.Add(strategy); } return(baseNode); }
private static TacticsNode GetTacticsNodes(StrategyNode p_strategyNode) { if (p_strategyNode.GetInputPort("tacticsNode").IsConnected) { return((TacticsNode)p_strategyNode.GetInputPort("tacticsNode").Connection.node); } return(null); }
public StrategyNode GetStrategyByID(string p_id) { if (strategies.Count <= 0) { return(null); } StrategyNode s = strategies.Find(x => x.id == p_id); return(s); }
private static List <EventNode> GetEventNodes(StrategyNode p_strategyNode) { List <EventNode> events = new List <EventNode>(); if (p_strategyNode.GetInputPort("eventNodes").IsConnected) { int eventCount = p_strategyNode.GetInputPort("eventNodes").ConnectionCount; for (int i = 0; i < eventCount; i++) { events.Add(p_strategyNode.GetInputPort("eventNodes").GetConnection(i).node as EventNode); } } return(events); }
private void EventParser(EventNode p_node) { switch (p_node.TITLE) { case EventFlag.AIEvent.LINK: { StrategyNode s_node = agent.AIAgentChart.agentNode.GetStrategyByID(p_node.MainValue); Debug.Log("Strategy " + s_node.id); if (s_node != null) { agent.SetStrategy(s_node); } }; break; } }
public StrategyNode GetDefaultStrategy() { if (strategies.Count <= 0) { return(null); } if (string.IsNullOrEmpty(default_strategy_id)) { return(strategies[0]); } StrategyNode s = strategies.Find(x => x.id == default_strategy_id); if (s == null) { return(strategies[0]); } return(s); }