// 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; }
// Robot event handler, when the robot sees another robot public override void OnScannedRobot(ScannedRobotEvent e) { ApplyOperations(handler.HandleScanedRobot(this, e, lastScannedRobotEvent, operations)); lastScannedRobotEvent = e; }