Beispiel #1
0
    public bool LoadGame(SaveGameInfo saveGame)
    {
        while (UiSystems.InGameSelect.IsPicking)
        {
            UiSystems.InGameSelect.FreeCurrentPicker();
        }

        Globals.GameLib.Reset();
        UiSystems.Reset();
        GameSystems.Player.PlayerObj_Destroy();
        if (Globals.GameLib.LoadGame(saveGame))
        {
            Globals.GameLib.ModuleName = saveGame.ModuleName;
            Stub.TODO("Calls to old MM UI were here"); // TODO
            return(true);
        }
        else
        {
            while (UiSystems.InGameSelect.IsPicking)
            {
                UiSystems.InGameSelect.FreeCurrentPicker();
            }

            Globals.GameLib.Reset();
            UiSystems.Reset();
            return(false);
        }
    }
 public void Dispose()
 {
     // Reset all of the UI and GameSystems
     GameSystems.Shutdown();
     UiSystems.DisposeAll();
     Tig.Shutdown();
 }
Beispiel #3
0
    public bool BkgAnimTimeEventExpires(TimeEvent evt)
    {
        var eventType = evt.arg1.int32;

        if (eventType == 0)
        {
            // Event type 0: Entire party died
            if (!GameSystems.Combat.AllPcsUnconscious())
            {
                return(true);
            }

            var fadeOutArgs = FadeArgs.Default;
            fadeOutArgs.color          = PackedLinearColorA.Black;
            fadeOutArgs.transitionTime = 1.0f;
            fadeOutArgs.fadeSteps      = 48;
            GameSystems.GFade.PerformFade(ref fadeOutArgs);
            var      referenceTime = TimePoint.Now;
            TimeSpan elapsed;
            do
            {
                Globals.GameLoop.RenderFrame();
                GameSystems.GFade.AdvanceTime(TimePoint.Now);
                elapsed = TimePoint.Now - referenceTime;
            } while (elapsed < TimeSpan.FromSeconds(fadeOutArgs.transitionTime));

            GameSystems.GFade.SetGameOpacity(1.0f);
            Globals.GameLib.KillIronmanSave();

            GameSystems.Movies.MovieQueueAdd(2);
            GameSystems.Movies.MovieQueuePlay();
            Logger.Info("DEATH: Resetting game!");
            Globals.GameLib.Reset();
            UiSystems.Reset();
            UiSystems.MainMenu.Show(0);
        }
        else if (eventType == 1)
        {
            // Event type 1: Reset the game.
            Logger.Info("EndGame: Resetting game!");
            Globals.GameLib.Reset();
            UiSystems.Reset();
            UiSystems.MainMenu.Show(0);
        }
        else
        {
            Logger.Info("AnimUI: anim_ui_bkg_process_callback: ERROR: Failed to match event type!");
            return(true);
        }

        var fadeInArgs = FadeArgs.Default;

        fadeInArgs.flags          = FadeFlag.FadeIn;
        fadeInArgs.transitionTime = 2.0f;
        fadeInArgs.fadeSteps      = 48;
        GameSystems.GFade.PerformFade(ref fadeInArgs);
        return(true);
    }
    private HeadlessGame(HeadlessGameOptions options)
    {
        var config = new GameConfig
        {
            InstallationFolder = options.InstallationFolder,
            SkipIntro          = true,
            SkipLegal          = true,
            // Debug UI makes no sense in the headless client
            EnableDebugUI = false,
            Rendering     =
            {
                DebugDevice = options.UseDebugRenderer
            }
        };
        var settings = new TigSettings
        {
            DataFolder   = options.OpenTempleDataPath ?? FindDataFolder(),
            OffScreen    = true,
            DisableSound = true
        };

        Globals.ConfigManager = new GameConfigManager(config);
        Globals.GameFolders   = new GameFolders(options.UserDataFolder);

        Tig.Startup(config, settings);

        GameSystems.InitializeFonts();
        GameSystems.InitializeSystems(new DummyLoadingProgress());

        GameSystems.GameInit.EnableStartMap = options.EnableStartMap; // Prevents shopmap from opening

        if (options.WithUserInterface)
        {
            Globals.UiManager          = new UiManager(Tig.MainWindow);
            Globals.UiAssets           = new UiAssets();
            Globals.UiStyles           = new UiStyles();
            Globals.WidgetButtonStyles = new WidgetButtonStyles();

            UiSystems.Startup(config);
        }

        GameSystems.LoadModule("ToEE", true);
    }
Beispiel #5
0
    public void Show(MainMenuPage page)
    {
        // In case the main menu is shown in-game, we have to take care of some business
        if (!IsVisible())
        {
            if (page == MainMenuPage.InGameNormal || page == MainMenuPage.InGameIronman)
            {
                GameSystems.TimeEvent.PauseGameTime();
            }
        }

        // TODO: This seems wrong actually... This should come after hide()
        mCurrentPage = page;
        Hide();

        UiSystems.SaveGame.Hide();
        UiSystems.HideOpenedWindows(false);
        UiSystems.CharSheet.Hide();

        mMainWidget.Show();
        mMainWidget.BringToFront();

        foreach (var entry in mPageWidgets)
        {
            entry.Value.Visible = entry.Key == page;
        }

        if (page != MainMenuPage.InGameNormal)
        {
            UiSystems.UtilityBar.Hide();
        }

        UiSystems.InGame.ResetInput();

        if (!UiSystems.UtilityBar.IsVisible())
        {
            UiSystems.DungeonMaster.Hide();
        }
    }
        public override void Init()
        {
            foreach (var module in _modules)
            {
                module.Init();
            }


            foreach (var module in _modules)
            {
                ModuleInitSystems.AddRange(module.ModuleInitSystems);
                EntityInitSystems.AddRange(module.EntityInitSystems);
                PlaybackSystems.AddRange(module.PlaybackSystems);
                UserCmdExecuteSystems.AddRange(module.UserCmdExecuteSystems);


                ResourceLoadSystems.AddRange(module.ResourceLoadSystems);

                GameStateUpdateSystems.AddRange(module.GameStateUpdateSystems);

                PhysicsInitSystems.AddRange(module.PhysicsInitSystems);
                PhysicsUpdateSystems.AddRange(module.PhysicsUpdateSystems);
                PhysicsPostUpdateSystems.AddRange(module.PhysicsPostUpdateSystems);

                GizmosRenderSystems.AddRange(module.GizmosRenderSystems);
                RenderSystems.AddRange(module.RenderSystems);

                EntityCleanUpSystems.AddRange(module.EntityCleanUpSystems);

                LateUpdateSystems.AddRange(module.LateUpdateSystems);
                OnGUISystems.AddRange(module.OnGUISystems);
                GamePlaySystems.AddRange(module.GamePlaySystems);
                UiSystems.AddRange(module.UiSystems);
                UiHfrSystems.AddRange(module.UiHfrSystems);
                VehicleCmdExecuteSystems.AddRange(module.VehicleCmdExecuteSystems);
            }
        }
Beispiel #7
0
    public MainMenuUi()
    {
        var mmLocalization = Tig.FS.ReadMesFile("mes/mainmenu.mes");

        var widgetDoc = WidgetDoc.Load("ui/main_menu.json", (type, definition) => {
            if (type == "mainMenuButton")
            {
                return(CreateMainMenuButton(definition));
            }
            else
            {
                throw new ArgumentException("Unknown custom widget type: " + type);
            }
        });

        mMainWidget = widgetDoc.GetRootContainer();

        mViewCinematicsDialog = new ViewCinematicsDialog(this, mmLocalization);
        mSetPiecesDialog      = new SetPiecesDialog(this);

        // This eats all mouse messages that reach the full-screen main menu
        mMainWidget.SetMouseMsgHandler(msg => { return(true); });
        mMainWidget.SetWidgetMsgHandler(msg => { return(true); });

        mMainWidget.SetKeyStateChangeHandler(msg =>
        {
            // Close the menu if it's the ingame menu
            if (msg.key == DIK.DIK_ESCAPE && !msg.down)
            {
                if (mCurrentPage == MainMenuPage.InGameNormal || mCurrentPage == MainMenuPage.InGameIronman)
                {
                    Hide();
                }
            }

            return(true);
        });

        mPagesWidget = widgetDoc.GetContainer("pages");

        mPageWidgets[MainMenuPage.MainMenu]      = widgetDoc.GetContainer("page-main-menu");
        mPageWidgets[MainMenuPage.Difficulty]    = widgetDoc.GetContainer("page-difficulty");
        mPageWidgets[MainMenuPage.InGameNormal]  = widgetDoc.GetContainer("page-ingame-normal");
        mPageWidgets[MainMenuPage.InGameIronman] = widgetDoc.GetContainer("page-ingame-ironman");
        mPageWidgets[MainMenuPage.Options]       = widgetDoc.GetContainer("page-options");
        //mPageWidgets[MainMenuPage.SetPieces] = widgetDoc.GetWindow("page-set-pieces");

        MainMenuButton GetButton(string id)
        {
            return((MainMenuButton)widgetDoc.GetWidget(id));
        }

        // Wire up buttons on the main menu
        GetButton("new-game").SetClickHandler(() => { Show(MainMenuPage.Difficulty); });
        GetButton("load-game").SetClickHandler(() =>
        {
            Hide();
            UiSystems.SaveGame.ShowLoad(true);
        });
        GetButton("tutorial").SetClickHandler(() => LaunchTutorial());
        GetButton("options").SetClickHandler(() => { Show(MainMenuPage.Options); });
        GetButton("quit-game").SetClickHandler(() =>
        {
            Tig.MessageQueue.Enqueue(new Message(MessageType.EXIT));
        });

        // Wire up buttons on the difficulty selection page
        GetButton("difficulty-normal").SetClickHandler(() =>
        {
            Globals.GameLib.IsIronmanGame = false;
            Hide();
            UiSystems.PCCreation.Start();
        });
        GetButton("difficulty-ironman").SetClickHandler(() =>
        {
            Globals.GameLib.IsIronmanGame = true;
            Hide();
            UiSystems.PCCreation.Start();
        });
        GetButton("difficulty-exit").SetClickHandler(() => { Show(MainMenuPage.MainMenu); });

        // Wire up buttons on the ingame menu (normal difficulty)
        GetButton("ingame-normal-load").SetClickHandler(() =>
        {
            Hide();
            UiSystems.SaveGame.ShowLoad(false);
        });
        GetButton("ingame-normal-save").SetClickHandler(() =>
        {
            Hide();
            UiSystems.SaveGame.ShowSave(true);
        });
        GetButton("ingame-normal-close").SetClickHandler(Hide);
        GetButton("ingame-normal-quit").SetClickHandler(() =>
        {
            Hide();
            GameSystems.ResetGame();
            UiSystems.Reset();
            Show(MainMenuPage.MainMenu);
        });

        // Wire up buttons on the ingame menu (ironman difficulty)
        GetButton("ingame-ironman-close").SetClickHandler(Hide);
        GetButton("ingame-ironman-save-quit").SetClickHandler(() =>
        {
            Globals.GameLib.IronmanSave();
            Globals.GameLib.Reset();
            UiSystems.Reset();
            Show(MainMenuPage.MainMenu);
        });

        // Wire up buttons on the ingame menu (ironman difficulty)
        GetButton("options-show").SetClickHandler(() =>
        {
            Hide();
            UiSystems.Options.Show(true);
        });
        GetButton("options-view-cinematics").SetClickHandler(() =>
        {
            Hide();
            UiSystems.UtilityBar.Hide();
            // TODO ui_mm_msg_ui4();
            mViewCinematicsDialog.Show();
        });
        GetButton("options-credits").SetClickHandler(() =>
        {
            Hide();

            List <int> creditsMovies = new List <int> {
                100, 110, 111, 112, 113
            };
            foreach (var movieId in creditsMovies)
            {
                GameSystems.Movies.MovieQueueAdd(movieId);
            }

            GameSystems.Movies.MovieQueuePlay();

            Show(MainMenuPage.Options);
        });
        GetButton("options-back").SetClickHandler(() => { Show(MainMenuPage.MainMenu); });

        RepositionWidgets(Globals.UiManager.CanvasSize);
        Globals.UiManager.OnCanvasSizeChanged += RepositionWidgets;

        Hide(); // Hide everything by default
    }