Пример #1
0
        public override void OnEntry(GameTime gameTime)
        {
            tPopup = null;
            end    = false;
            MouseEventDispatcher.OnMousePress     += OnMP;
            KeyboardEventDispatcher.OnKeyPressed  += OnKP;
            KeyboardEventDispatcher.OnKeyReleased += OnKR;
            DevConsole.OnNewCommand += DevConsole_OnNewCommand;

            team = 0;
            type = 0;

            state             = game.LoadScreen.LoadedState;
            state.OnNewPopup += OnNewPopup;
            camera            = game.LoadScreen.LoadedCamera;
            renderer          = game.LoadScreen.LoadedRenderer;
            renderer.UseFOW   = true;
            gameInput         = (from t in state.teams
                                 where t.Input != null && t.Input.Type == RTSInputType.Player
                                 select t.Input).FirstOrDefault();
            vInput         = gameInput == null ? null : gameInput as IVisualInputController;
            playController = game.LoadScreen.LoadedGPlay;

            sfDebug = renderer.LoadFont(@"Fonts\CourierNew32");


            // Create Game Engine Thread
            playController.BeginPlaying(state);
            tEngine          = new Thread(EngineThread);
            tEngine.Priority = ThreadPriority.Highest;
            tEngine.TrySetApartmentState(ApartmentState.MTA);
            tEngine.IsBackground = true;
            playing     = 1;
            pauseEngine = false;
            pauseRender = false;
            tEngine.Start();

            // Create Background Music
            jukeBox = new Jukebox();
            jukeBox.LoadFromDirectory(new DirectoryInfo(BS_SOUND_DIR));
        }
Пример #2
0
 void Player_OnNewSelection(ACInputController arg1, List <IEntity> arg2)
 {
     if (arg2 == null || arg2.Count != 1)
     {
         UI.SelectionToggle = 0;
     }
     else
     {
         var u = arg2[0] as RTSUnit;
         var b = arg2[0] as RTSBuilding;
         if (u != null)
         {
             UI.SelectionToggle = 1;
             UI.UnitDataPanel.SetData(u);
         }
         else if (b != null)
         {
             UI.SelectionToggle = 2;
             UI.BuildingDataPanel.SetData(b);
         }
     }
 }
Пример #3
0
        public void OnNewSelection(ACInputController ic, List <IEntity> entities)
        {
            Clear();
            if (IconLibrary == null)
            {
                return;
            }

            int bType = -1;
            List <RTSBuilding> sBuildings = new List <RTSBuilding>();

            for (int i = 0; i < entities.Count; i++)
            {
                if (entities[i] as RTSUnit != null)
                {
                    return;
                }
                RTSBuilding b = entities[i] as RTSBuilding;
                if (b == null || b.Team.Index != ic.TeamIndex || !b.IsBuilt || !b.IsAlive)
                {
                    continue;
                }

                if (bType < 0)
                {
                    bType = b.Data.Index;
                }
                else if (bType != b.Data.Index)
                {
                    return;
                }

                sBuildings.Add(b);
            }

            if (bType < 0)
            {
                return;
            }

            int wi = 0;
            var bd = ic.Team.Race.Buildings[bType].DefaultButtonControllers;

            foreach (var bc in sBuildings[0].ButtonControllers)
            {
                if (wi >= groups.Length)
                {
                    break;
                }
                if (!IconLibrary.ContainsKey(bc.IconKey))
                {
                    continue;
                }
                groups[wi].Widget.Texture = IconLibrary[bc.IconKey];
                var bcs = new List <ACBuildingButtonController>();
                foreach (var nb in sBuildings)
                {
                    bcs.Add(nb.ButtonControllers[wi]);
                }
                groups[wi].Data = bcs;
                Show(groups[wi]);
                wi++;
            }
        }
Пример #4
0
        public void OnNewSelection(ACInputController ic, List <IEntity> entities)
        {
            Clear();
            if (IconLibrary == null)
            {
                return;
            }

            var units     = new Dictionary <RTSUnitData, List <IEntity> >();
            var buildings = new Dictionary <RTSBuildingData, List <IEntity> >();

            for (int i = 0; i < entities.Count; i++)
            {
                RTSUnit u = entities[i] as RTSUnit;
                if (u != null)
                {
                    if (units.ContainsKey(u.Data))
                    {
                        units[u.Data].Add(u);
                    }
                    else
                    {
                        var lu = new List <IEntity>();
                        lu.Add(u);
                        units.Add(u.Data, lu);
                    }
                }
                else
                {
                    RTSBuilding b = entities[i] as RTSBuilding;
                    if (buildings.ContainsKey(b.Data))
                    {
                        buildings[b.Data].Add(b);
                    }
                    else
                    {
                        var lb = new List <IEntity>();
                        lb.Add(b);
                        buildings.Add(b.Data, lb);
                    }
                }
            }

            int wi = 0;

            foreach (var kv in buildings)
            {
                if (wi >= groups.Length)
                {
                    break;
                }
                Texture2D t = IconLibrary[kv.Key.IconKey];
                if (t == null)
                {
                    continue;
                }
                groups[wi].Widget.Texture = t;
                groups[wi].Data           = kv.Value;
                Show(groups[wi]);
                wi++;
            }
            foreach (var kv in units)
            {
                if (wi >= groups.Length)
                {
                    break;
                }
                Texture2D t = IconLibrary[kv.Key.IconKey];
                if (t == null)
                {
                    continue;
                }
                groups[wi].Widget.Texture = t;
                groups[wi].Data           = kv.Value;
                Show(groups[wi]);
                wi++;
            }
        }
Пример #5
0
        //public SpriteFont CreateFont(string fontName, int size, int spacing = 0, bool useKerning = true, string style = "Regular", char defaultChar = '*', int cStart = 32, int cEnd = 126) {
        //    IDisposable disp;
        //    SpriteFont f = XNASpriteFont.Compile(G, fontName, size, out disp, spacing, useKerning, style, defaultChar, cStart, cEnd);
        //    toDispose.Add(disp);
        //    return f;
        //}
        //public SpriteFont CreateFont(string fontName, int size, out IDisposable disp, int spacing = 0, bool useKerning = true, string style = "Regular", char defaultChar = '*', int cStart = 32, int cEnd = 126) {
        //    SpriteFont f = XNASpriteFont.Compile(G, fontName, size, out disp, spacing, useKerning, style, defaultChar, cStart, cEnd);
        //    toDispose.Add(disp);
        //    return f;
        //}
        #endregion

        public void HookToGame(GameState state, int ti, Camera camera)
        {
            // Get The Team To Be Visualized
            teamIndex = ti;
            teamInput = state.teams[teamIndex].Input;
            SelectionCircleTexture = LoadTexture2D(@"Content\Textures\SelectionCircle.png");

            // Get The Camera
            Camera = camera;

            // Create The Map
            CreateVoxGeos(state.VoxState.World.Atlas);
            Map = new VoxMap(this, state.CGrid.numCells.X, state.CGrid.numCells.Y);
            // TODO: Parse This In
            VoxMapConfig vmc = new VoxMapConfig();

            vmc.VoxState  = state.VoxState;
            vmc.TexVoxMap = @"voxmap.png";
            vmc.RootPath  = state.LevelGrid.Directory.FullName;
            vmc.FXFile    = @"FX\Voxel";
            Map.Build(gManager, cManager, vmc);

            Camera.MoveTo(state.CGrid.size.X * 0.5f, state.CGrid.size.Y * 0.5f);
            fxMap.MapSize     = state.CGrid.size;
            pRenderer.MapSize = state.CGrid.size;

            // Hook FOW
            state.CGrid.OnFOWChange += OnFOWChange;
            Minimap.Hook(this, state, ti);


            // Load Particles
            // TODO: Config
            ParticleOptions pOpt = ZXParser.ParseFile(@"Content\FX\Particles\Particle.conf", typeof(ParticleOptions)) as ParticleOptions;

            pRenderer.Load(this, pOpt);

            // Load Team Visuals
            for (int i = 0; i < state.teams.Length; i++)
            {
                if (state.teams[i] == null)
                {
                    continue;
                }
                LoadTeamVisuals(state, i);
            }

            // Set FOW
            for (int y = 0; y < Map.FogOfWarTexture.Height; y++)
            {
                for (int x = 0; x < Map.FogOfWarTexture.Width; x++)
                {
                    switch (state.CGrid.GetFogOfWar(x, y, teamIndex))
                    {
                    case FogOfWar.Active:
                        Map.SetFOW(x, y, 1f);
                        break;

                    case FogOfWar.Passive:
                        Map.SetFOW(x, y, 0.5f);
                        break;

                    case FogOfWar.Nothing:
                        Map.SetFOW(x, y, 0f);
                        break;
                    }
                }
            }
        }
Пример #6
0
 public static void SetInput(GameState state, int team, ACInputController ic)
 {
     state.teams[team].Input = ic;
 }