Exemple #1
0
        public Squad(HackyAI bot, SquadType type, Actor target)
        {
            this.bot    = bot;
            this.world  = bot.world;
            this.random = bot.random;
            this.type   = type;
            this.target = Traits.Target.FromActor(target);
            fsm         = new StateMachine();

            switch (type)
            {
            case SquadType.Assault:
            case SquadType.Rush:
                fsm.ChangeState(this, new GroundUnitsIdleState(), true);
                break;

            case SquadType.Air:
                fsm.ChangeState(this, new AirIdleState(), true);
                break;

            case SquadType.Protection:
                fsm.ChangeState(this, new UnitsForProtectionIdleState(), true);
                break;
            }
        }
Exemple #2
0
        internal World(Manifest manifest, Map map, OrderManager orderManager, bool isShellmap)
        {
            IsShellmap        = isShellmap;
            this.orderManager = orderManager;
            orderGenerator_   = new UnitOrderGenerator();
            Map = map;

            TileSet      = Rules.TileSets[Map.Tileset];
            SharedRandom = new XRandom(orderManager.LobbyInfo.GlobalSettings.RandomSeed);

            WorldActor = CreateActor("World", new TypeDictionary());
            ActorMap   = WorldActor.Trait <ActorMap>();
            ScreenMap  = WorldActor.Trait <ScreenMap>();

            // Add players
            foreach (var cmp in WorldActor.TraitsImplementing <ICreatePlayers>())
            {
                cmp.CreatePlayers(this);
            }

            // Set defaults for any unset stances
            foreach (var p in Players)
            {
                foreach (var q in Players)
                {
                    if (!p.Stances.ContainsKey(q))
                    {
                        p.Stances[q] = Stance.Neutral;
                    }
                }
            }

            Sound.SoundVolumeModifier = 1.0f;
        }
Exemple #3
0
        // Called by the host's player creation code
        public void Activate(Player p)
        {
            this.p           = p;
            enabled          = true;
            playerPower      = p.PlayerActor.Trait <PowerManager>();
            supportPowerMngr = p.PlayerActor.Trait <SupportPowerManager>();
            playerResource   = p.PlayerActor.Trait <PlayerResources>();
            builders         = new BaseBuilder[] {
                new BaseBuilder(this, "Building", q => ChooseBuildingToBuild(q, false)),
                new BaseBuilder(this, "Defense", q => ChooseBuildingToBuild(q, true))
            };

            random = new XRandom((int)p.PlayerActor.ActorID);

            resourceTypes = Rules.Info["world"].Traits.WithInterface <ResourceTypeInfo>()
                            .Select(t => t.TerrainType).ToArray();
        }
Exemple #4
0
        public void Activate(Player p)
        {
            this.p = p;
            this.world = p.World;
            GameStarted = true;

            random = new XRandom((int)p.PlayerActor.ActorID);

            SpecialPowers = p.PlayerActor.Trait<SupportPowerManager>();
            Power = p.PlayerActor.Trait<PowerManager>();
            Resources = p.PlayerActor.Trait<PlayerResources>();

            squadmanager = new SquadManager(this);

            // Initialize builders
            Builders = new List<IAIBuilder>() { new BaseBuilder(this), new DefenseBuilder(this),
                new InfantryBuilder(this), new VehicleBuilder(this),
                new AircraftBuilder(this), new ShipBuilder(this) };

            // Have the bot cheat, gets free 500 000 credits at the start of the match
            Resources.GiveCash(500000);
        }
Exemple #5
0
        public Squad(HackyAI bot, SquadType type, Actor target)
        {
            this.bot = bot;
            this.world = bot.world;
            this.random = bot.random;
            this.type = type;
            this.target = Traits.Target.FromActor(target);
            fsm = new StateMachine();

            switch (type)
            {
                case SquadType.Assault:
                case SquadType.Rush:
                    fsm.ChangeState(this, new GroundUnitsIdleState(), true);
                    break;
                case SquadType.Air:
                    fsm.ChangeState(this, new AirIdleState(), true);
                    break;
                case SquadType.Protection:
                    fsm.ChangeState(this, new UnitsForProtectionIdleState(), true);
                    break;
            }
        }