public override LogicPart Create() { var logicPart = new LogicPart(); var rules = new HommRules(); logicPart.CreateWorld = () => new HommWorld(pids.Take(playersCount).ToArray()); logicPart.CreateDefaultSettings = () => new GameSettings { OperationalTimeLimit = 5, TimeLimit = 90, SpectacularView = true, }; logicPart.WorldStateType = typeof(HommWorldState); logicPart.CreateWorldState = seed => seed == "debug" ? new HommWorldState(0, true) : new HommWorldState(Int32.Parse(seed), false); logicPart.PredefinedWorldStates.Add("debug"); var visibilityRadius = limitView ? rules.HeroViewRadius : Double.PositiveInfinity; var actorFactory = useRoughQuantities ? ActorFactory.FromFunction(() => new HommRobot <HommFinalSensorData>(visibilityRadius), rules) : ActorFactory.FromFunction(() => new HommRobot <HommSensorData>(visibilityRadius), rules); foreach (var pid in pids.Take(playersCount)) { logicPart.Actors[pid] = actorFactory; } logicPart.Bots[HommRules.StandingBotName] = () => new Bot <HommCommand>(_ => new HommCommand { Movement = new HexMovement(waitDuration: 0.5) }); return(logicPart); }