Exemple #1
0
        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);
        }
Exemple #2
0
 private static TacticsNode GetTacticsNodes(StrategyNode p_strategyNode)
 {
     if (p_strategyNode.GetInputPort("tacticsNode").IsConnected)
     {
         return((TacticsNode)p_strategyNode.GetInputPort("tacticsNode").Connection.node);
     }
     return(null);
 }
Exemple #3
0
        public StrategyNode GetStrategyByID(string p_id)
        {
            if (strategies.Count <= 0)
            {
                return(null);
            }
            StrategyNode s = strategies.Find(x => x.id == p_id);

            return(s);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 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;
     }
 }
Exemple #6
0
        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);
        }