public override LogicPart Create()
        {
            var logicPart = new LogicPart();
            var rules     = new HommRules();

            logicPart.CreateWorld           = () => new HommWorld(pids.Take(playersCount).ToArray());
            logicPart.CreateDefaultSettings = () => new Settings {
                OperationalTimeLimit = 5, TimeLimit = 90
            };

            logicPart.WorldStateType   = typeof(HommWorldState);
            logicPart.CreateWorldState = seed => new HommWorldState(int.Parse(seed));
            logicPart.PredefinedWorldStates.AddRange(Enumerable.Range(0, 5).Select(i => i.ToString()));

            var actorFactory = ActorFactory.FromRobot(new HommRobot(), rules);

            foreach (var pid in pids.Take(playersCount))
            {
                logicPart.Actors[pid] = actorFactory;
            }

            logicPart.Bots[HommRules.StandingBotName] = () =>
                                                        new Bot <HommCommand>(_ => new HommCommand {
                Movement = new Wait()
            });

            return(logicPart);
        }
Exemple #2
0
        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);
        }