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)); }
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); } } }
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++; } }
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++; } }
//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; } } } }
public static void SetInput(GameState state, int team, ACInputController ic) { state.teams[team].Input = ic; }