예제 #1
0
 public void RemoveAgent(BoardAgent agent)
 {
     if (agent2cellpos.TryGetValue(agent, out var cellpos))
     {
         cellpos2agents[cellpos].Remove(agent);
         agent2cellpos.Remove(agent);
     }
     agents.Remove(agent);
 }
예제 #2
0
        public void UpdateAgentCellPos(BoardAgent agent, twin cellpos)
        {
            if (agents.Contains(agent))
            {
                if (agent2cellpos.TryGetValue(agent, out var prevpos))
                {
                    if (cellpos2agents.ContainsKey(prevpos))
                    {
                        cellpos2agents[prevpos].Remove(agent);
                    }
                }

                agent2cellpos[agent] = cellpos;
                if (!cellpos2agents.ContainsKey(cellpos))
                {
                    cellpos2agents[cellpos] = new HashSet <BoardAgent>();
                }
                cellpos2agents[cellpos].Add(agent);
            }
            else
            {
                Dj.Warn("UpdateAgentCellPos called on nonadded agent");
            }
        }
예제 #3
0
 public void AddAgent(BoardAgent agent)
 {
     agents.Add(agent);
     UpdateAgentCellPos(agent, agent.my_cell_pos);
 }