Exemplo n.º 1
0
        // Robot event handler, when the robot sees another robot
        public override void OnScannedRobot(ScannedRobotEvent e)
        {
            //let each handler to handle onScaned event to build up complete data for all tick
            foreach (IHandleScanedRobot handleScanedRobot in handlers)
            {
                handleScanedRobot.HandleScanedRobot(this, e, lastScannedRobotEvent, operations, battleEvents);
            }

            if (tickcount == 0)
            {
                tickcount = minticks + (int)rnd.NextDouble() * ticksRange;
                var results =
                    handlers.Select(
                        handler => new { Evaludation = (int)handler.Evaluate(this, e, battleEvents), Handler = handler })
                    .OrderBy(item => item.Evaludation);
                var topones = results.Where(result => result.Evaludation == results.First().Evaludation);
                var choosen = topones.ElementAt((int)Math.Floor(rnd.NextDouble() * topones.Count())).Handler;
                currentHandler = choosen;
            }
            else
            {
                tickcount--;
            }

            ApplyOperations(currentHandler.HandleScanedRobot(this, e, lastScannedRobotEvent, operations, battleEvents));
            lastScannedRobotEvent = e;
        }
Exemplo n.º 2
0
 // Robot event handler, when the robot sees another robot
 public override void OnScannedRobot(ScannedRobotEvent e)
 {
     ApplyOperations(handler.HandleScanedRobot(this, e, lastScannedRobotEvent, operations));
     lastScannedRobotEvent = e;
 }