public override void OnEntry(GameTime gameTime) { // Load All The Races And Schemes Races = new Dictionary <string, FileInfo>(); schemes = new Dictionary <string, RTSColorScheme>(); GameEngine.SearchAllInitInfo(new DirectoryInfo("Packs"), Races, schemes); if (schemes.Count < 1) { schemes.Add("Default", RTSColorScheme.Default); } string defScheme = "Default"; foreach (var kvp in schemes) { defScheme = kvp.Key; break; } // Set Init Data To Be Nothing game.LoadScreen.LoadFile = null; eld = new EngineLoadData(); eld.Teams = new TeamInitOption[GameState.MAX_PLAYERS]; for (int i = 0; i < eld.Teams.Length; i++) { eld.Teams[i].InputType = RTSInputType.None; eld.Teams[i].Race = null; eld.Teams[i].PlayerName = null; eld.Teams[i].Colors = schemes[defScheme]; } game.LoadScreen.LoadData = eld; wr = new WidgetRenderer(G, game.Content.Load <SpriteFont>(@"Fonts\Impact32")); widgets = new TeamInitWidget[eld.Teams.Length]; ButtonHighlightOptions bh1 = new ButtonHighlightOptions(120, 36, Color.Black); ButtonHighlightOptions bh2 = new ButtonHighlightOptions(120, 36, Color.DarkGray); string[] pt = { "None", "Player", "Computer", "Environment" }; for (int i = 0; i < widgets.Length; i++) { widgets[i] = new TeamInitWidget(wr, 600, 44, 8, new Color(8, 8, 8), bh1, bh2, Color.Lime); if (i > 0) { widgets[i].Parent = widgets[i - 1].BackRect; } widgets[i].TextIndex.Text = (i + 1).ToString(); widgets[i].TextUser.Text = "Unknown"; widgets[i].Set(pt, Races, schemes); } widgets[0].TextUser.Text = UserConfig.UserName; menuPresets = new ScrollMenu(wr, game.Window.ClientBounds.Width - widgets[0].BackRect.Width - 20, 24, game.Window.ClientBounds.Height / 24, 20, 40 ); menuPresets.BaseColor = UserConfig.MainScheme.WidgetBase; menuPresets.TextColor = UserConfig.MainScheme.Text; menuPresets.ScrollBarBaseColor = UserConfig.MainScheme.WidgetInactive; menuPresets.HighlightColor = UserConfig.MainScheme.WidgetActive; menuPresets.Widget.Anchor = new Point(game.Window.ClientBounds.Width - 20, 0); menuPresets.Widget.AlignX = Alignment.RIGHT; menuPresets.Build((from gp in gPresets select gp.Name).ToArray()); menuPresets.Hook(); textMap = new TextWidget(wr); textMap.Color = UserConfig.MainScheme.Text; textMap.Offset = new Point(0, 5); textMap.Height = 32; textMap.OffsetAlignY = Alignment.BOTTOM; textMap.Parent = widgets[widgets.Length - 1].BackRect; textGTController = new TextWidget(wr); textGTController.Color = UserConfig.MainScheme.Text; textGTController.Offset = new Point(0, 5); textGTController.Height = 32; textGTController.OffsetAlignY = Alignment.BOTTOM; textGTController.Parent = textMap; SetWidgetData(gPresets[0]); DevConsole.OnNewCommand += DevConsole_OnNewCommand; KeyboardEventDispatcher.OnKeyPressed += OnKeyPressed; MouseEventDispatcher.OnMousePress += OnMP; }
private void WorkThread() { try { // Start With Default Values isLoaded = false; loadException = null; LoadedRenderer = null; // Grab The Initialization Info loadData = game.LobbyScreen.InitInfo; // Build The Local Game State LoadedState = new GameState(); if (LoadFile == null) { GameEngine.BuildLocal(LoadedState, LoadData, new DirectoryInfo(@"Packs"), game.LobbyScreen.Races); } else { GameEngine.Load(LoadedState, new DirectoryInfo(@"Packs"), LoadFile.FullName); } // Create The Input Controllers for (int ti = 0; ti < LoadedState.teams.Length; ti++) { if (string.IsNullOrWhiteSpace(LoadData.Teams[ti].InputController)) { continue; } GameEngine.SetInput(LoadedState, ti, LoadedState.Scripts[LoadData.Teams[ti].InputController].CreateInstance <ACInputController>()); } // Create Camera LoadedCamera = new Camera(G.Viewport); LoadedCamera.Controller.Hook(game.Window); // Load The Renderer RendererInitArgs ria = ZXParser.ParseFile(@"Content\FX\RIA.txt", typeof(RendererInitArgs)) as RendererInitArgs; LoadedRenderer = new RTSRenderer(game.Graphics, game.Content, ria, game.Window); LoadedRenderer.HookToGame(LoadedState, 0, LoadedCamera); // Initialize Inputs int teami = -1; foreach (var t in LoadedState.teams) { teami++; if (t == null) { continue; } // Set Camera var vInput = t.Input as IVisualInputController; if (vInput != null) { vInput.Camera = LoadedCamera; } // Init t.Input.Init(LoadedState, t.Index, loadData.Teams[teami].InputInitArgs); // Build if (vInput != null) { vInput.Build(LoadedRenderer); } } // Create Gameplay LoadedGPlay = new GameplayController(); GCInitArgs gca = new GCInitArgs() { GameTypeScript = LoadData.GTController }; LoadedGPlay.Init(LoadedState, gca); } catch (Exception e) { if (LoadedRenderer != null) { LoadedRenderer.Dispose(); } loadException = e; } isLoaded = true; }