Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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;
        }