Example #1
0
        public override void setGameState(int currentRound, List <Point> O_c, IEnumerable <GameLogic.Utils.CapturedObservation> O_d)
        {
            prevO_c = O_c;
            prevO_d = O_d;

            Dictionary <string, List <Point> > markedLocations = new Dictionary <string, List <Point> >();

            markedLocations.Add("Detected Evaders(O_c)", O_c);
            markedLocations.Add("Prev. Killed Evaders (O_d)", O_d.Select(x => x.where).ToList());
            pgui.markLocations(markedLocations.toPointFMarkings());

            InputRequest req = new InputRequest();

            foreach (Pursuer p in gm.A_P)
            {
                if (currentRound == 0)
                {
                    //req.addMovementOption(p, new Location(intrusionCenterPoint),
                    //  GameLogic.Utils.getAllPointsInArea(gm.r_e + 10).Select(x => new Location(x)).ToList());
                    req.addMovementOption(p, new Location(new Point(-1, -1)),
                                          getPossibleNextLocations(new Location(Location.Type.Unset)));
                }
                else
                {
                    req.addMovementOption(p, new Location(currentPursuersLocations[p]),
                                          getPossibleNextLocations(new Location(currentPursuersLocations[p])));
                }
            }
            pgui.setInputRequest(req);
        }
Example #2
0
        public override void setGameState(int currentRound, List <Point> O_c, IEnumerable <Point> O_d)
        {
            prevO_c = O_c;
            prevO_d = O_d;

            Dictionary <string, List <Point> > markedLocations = new Dictionary <string, List <Point> >();

            markedLocations.Add("Detected Evaders(O_c)", O_c);
            markedLocations.Add("Prev. Killed Evaders (O_d)", O_d.ToList());
            pgui.markLocations(markedLocations.toPointFMarkings());

            InputRequest req = new InputRequest();

            foreach (Pursuer p in gm.A_P)
            {
                req.addMovementOption(p, currentPursuersLocations[p], getPossibleNextLocations(currentPursuersLocations[p]));
            }

            pgui.setInputRequest(req);
        }
Example #3
0
        public override void setGameState(int currentRound,
                                          IEnumerable <GoE.GameLogic.Utils.CapturedObservation> O_d,
                                          List <GameLogic.Utils.PursuerPathObservation> O_p,
                                          IntrusionGameState s)
        {
            prevS   = s;
            prevO_p = O_p;
            prevO_d = O_d;

            foreach (var o in O_p)
            {
                accumObservationsPerEve[o.observer].Add(o);
            }

            foreach (Evader e in s.ActiveEvaders)
            {
                foreach (var obs in O_d)
                {
                    if (obs.who == e)
                    {
                        currentEvadersLocations[e] = new Location(Location.Type.Captured);
                    }
                }
            }

            Dictionary <string, List <Point> > markedLocations = new Dictionary <string, List <Point> >();

            List <Point> tmpPointList = new List <Point>();

            foreach (var p in O_p)
            {
                tmpPointList.AddRange(p.observedPursuerPath);
            }
            markedLocations.Add("Pursuer trail(O_p)", tmpPointList);

            tmpPointList = new List <Point>();
            foreach (var p in O_p)
            {
                tmpPointList.Add(p.observedPursuerPath.Last());
            }
            markedLocations.Add("Pursuer last pos", tmpPointList);

            tmpPointList = new List <Point>();
            foreach (var p in O_d)
            {
                tmpPointList.Add(p.where);
            }
            markedLocations.Add("Dead Evaders(O_d)", tmpPointList);


            List <Point> detectionArea = new List <Point>();

            foreach (Evader e in s.ActiveEvaders)
            {
                detectionArea.AddRange(
                    g.getNodesWithinDistance(currentEvadersLocations[e].nodeLocation, gm.r_es));
            }
            markedLocations.Add("Area within r_s(evaders detecting pursuers)", detectionArea);


            pgui.markLocations(markedLocations.toPointFMarkings());

            InputRequest         req = new InputRequest();
            IEnumerable <Evader> relevantEvaders;

            if (currentRound == 0)
            {
                relevantEvaders = gm.A_E;
            }
            else
            {
                relevantEvaders = s.ActiveEvaders;
            }

            foreach (Evader e in relevantEvaders)
            {
                if (currentEvadersLocations[e].locationType != Location.Type.Node ||
                    (currentEvadersLocations[e].nodeLocation.manDist(intrusionAreaCenter) > gm.r_e))
                {
                    req.addMovementOption(e, currentEvadersLocations[e], getPossibleNextLocations(currentEvadersLocations[e]));
                }

                prevChoiceKey = req.addComboChoice(e, "communicate", new string[] { "yes", "no" }, "no");
                //req.addComboChoice(e, "Noise/Data unit to transmit",
                //    s.M[s.MostUpdatedEvadersMemoryRound][e].ToList().Except(dataUnitsInSink).Union(new DataUnit[]{DataUnit.NIL, DataUnit.Flush}),
                //    DataUnit.NIL);

                //List<Point> relevantTargets = new List<Point>();
                //var relevantTargetsDummy = targets.Intersect(g.getNodesWithinDistance(currentEvadersLocations[e].nodeLocation, gm.r_e));
                //foreach (Point p in relevantTargetsDummy)
                //    relevantTargets.Add(p);

                //req.addComboChoice(e, "Target to eavesdrop (" + relevantTargets.Count.ToString() + " available)",
                //    GameLogic.Utils.pointsToLocations(relevantTargets),
                //    new Location(Location.Type.Undefined));
            }

            pgui.setInputRequest(req);
            nextEvadersToCommunicate.Clear();
        }