Beispiel #1
0
        public override void OnEntry(GameTime gameTime)
        {
            DevConsole.OnNewCommand += DevConsole_OnNewCommand;
            KeyboardEventDispatcher.OnKeyPressed += KeyboardEventDispatcher_OnKeyPressed;
            input.Refresh();
            sP.Hook();
            sS.Hook();
            sT.Hook();
            RendererInitArgs ria = ZXParser.ParseFile(@"Content\FX\RIA.txt", typeof(RendererInitArgs)) as RendererInitArgs;

            renderer = new RTSRenderer(game.Graphics, game.Content, ria, game.Window);

            // Rendering Effect
            fx = new RTSFXEntity(renderer.LoadEffect(FX_FILE_PATH));

            // Default Team
            sP.Color         = RTSColorScheme.Default.Primary;
            sS.Color         = RTSColorScheme.Default.Secondary;
            sT.Color         = RTSColorScheme.Default.Tertiary;
            colorScheme.Name = RTSColorScheme.Default.Name;

            // Create Camera
            camera       = new OrbitingCamera(Vector3.Zero, 4f, G.Viewport.AspectRatio);
            camera.Pitch = MathHelper.PiOver4;
            camera.Yaw   = 0;
            camera.FOV   = MathHelper.PiOver4;

            unitDataFiles = new List <FileInfo>();
            schemeFiles   = new List <FileInfo>();

            FindAllData();
            curUnit = 0;
        }
Beispiel #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;
        }