- moved base menu code to "common".

This commit is contained in:
Christoph Oelckers 2020-06-13 23:04:10 +02:00
parent 90befff479
commit 475f740058
12 changed files with 100 additions and 82 deletions

View file

@ -955,14 +955,9 @@ set (PCH_SOURCES
maploader/compatibility.cpp
maploader/postprocessor.cpp
menu/doommenu.cpp
menu/joystickmenu.cpp
menu/loadsavemenu.cpp
menu/menu.cpp
menu/menudef.cpp
menu/messagebox.cpp
menu/optionmenu.cpp
menu/playermenu.cpp
menu/resolutionmenu.cpp
gamedata/textures/animations.cpp
gamedata/textures/anim_switches.cpp
gamedata/textures/buildloader.cpp
@ -1120,6 +1115,12 @@ set (PCH_SOURCES
common/objects/dobject.cpp
common/objects/dobjgc.cpp
common/objects/dobjtype.cpp
common/menu/joystickmenu.cpp
common/menu/menu.cpp
common/menu/messagebox.cpp
common/menu/optionmenu.cpp
common/menu/resolutionmenu.cpp
common/rendering/v_framebuffer.cpp
common/rendering/v_video.cpp
common/rendering/r_thread.cpp

View file

@ -32,7 +32,7 @@
**
*/
#include "menu/menu.h"
#include "menu.h"
#include "m_joy.h"
#include "vm.h"

View file

@ -51,6 +51,9 @@
#include "vm.h"
#include "gamestate.h"
#include "i_interface.h"
#include "menustate.h"
#include "i_time.h"
#include "printf.h"
void M_StartControlPanel(bool makeSound, bool scaleoverride = false);
@ -101,7 +104,7 @@ extern PClass *DefaultListMenuClass;
extern PClass *DefaultOptionMenuClass;
#define KEY_REPEAT_DELAY (TICRATE*5/12)
#define KEY_REPEAT_DELAY (GameTicRate*5/12)
#define KEY_REPEAT_RATE (3)
bool OkForLocalization(FTextureID texnum, const char* substitute);
@ -394,11 +397,6 @@ void M_SetMenu(FName menu, int param)
DMenuDescriptor **desc = MenuDescriptors.CheckKey(menu);
if (desc != nullptr)
{
if ((*desc)->mNetgameMessage.IsNotEmpty() && netgame && !demoplayback)
{
M_StartMessage((*desc)->mNetgameMessage, 1);
return;
}
if ((*desc)->IsKindOf(RUNTIME_CLASS(DListMenuDescriptor)))
{
@ -711,8 +709,6 @@ void M_Ticker (void)
void M_Drawer (void)
{
player_t *player = &players[consoleplayer];
AActor *camera = player->camera;
PalEntry fade = 0;
if (CurrentMenu != nullptr && menuactive != MENU_Off)

View file

@ -5,7 +5,6 @@
#include "dobject.h"
#include "d_player.h"
#include "c_cvars.h"
#include "v_font.h"
#include "textures.h"
@ -18,7 +17,6 @@ struct event_t;
class FTexture;
class FFont;
enum EColorRange : int;
class FPlayerClass;
class FKeyBindings;
struct FBrokenLines;
@ -45,64 +43,6 @@ enum EMenuKey
};
struct FNewGameStartup
{
const char *PlayerClass;
int Episode;
int Skill;
};
extern FNewGameStartup NewGameStartupInfo;
struct FSaveGameNode
{
FString SaveTitle;
FString Filename;
bool bOldVersion = false;
bool bMissingWads = false;
bool bNoDelete = false;
};
struct FSavegameManager
{
private:
TArray<FSaveGameNode*> SaveGames;
FSaveGameNode NewSaveNode;
int LastSaved = -1;
int LastAccessed = -1;
FGameTexture *SavePic = nullptr;
public:
int WindowSize = 0;
FString SaveCommentString;
FSaveGameNode *quickSaveSlot = nullptr;
~FSavegameManager();
private:
int InsertSaveNode(FSaveGameNode *node);
public:
void NotifyNewSave(const FString &file, const FString &title, bool okForQuicksave, bool forceQuicksave);
void ClearSaveGames();
void ReadSaveStrings();
void UnloadSaveData();
int RemoveSaveSlot(int index);
void LoadSavegame(int Selected);
void DoSave(int Selected, const char *savegamestring);
unsigned ExtractSaveData(int index);
void ClearSaveStuff();
bool DrawSavePic(int x, int y, int w, int h);
void DrawSaveComment(FFont *font, int cr, int x, int y, int scalefactor);
void SetFileInfo(int Selected);
unsigned SavegameCount();
FSaveGameNode *GetSavegame(int i);
void InsertNewSaveNode();
bool RemoveNewSaveNode();
};
extern FSavegameManager savegameManager;
class DMenu;
extern DMenu *CurrentMenu;
extern int MenuTime;
@ -343,8 +283,6 @@ void M_ActivateMenu(DMenu *menu);
void M_ClearMenus ();
void M_PreviousMenu ();
void M_ParseMenuDefs();
void M_StartupEpisodeMenu(FNewGameStartup *gs);
void M_StartupSkillMenu(FNewGameStartup *gs);
void M_DoStartControlPanel(bool scaleoverride);
void M_SetMenu(FName menu, int param = -1);
void M_StartMessage(const char *message, int messagemode, FName action = NAME_None);

View file

@ -38,6 +38,7 @@
#include "i_video.h"
#include "c_dispatch.h"
#include "vm.h"
#include "menustate.h"
void M_StartControlPanel(bool makeSound, bool scaleoverride = false);
FName MessageBoxClass = NAME_MessageBoxMenu;

View file

@ -33,7 +33,7 @@
*/
#include "v_video.h"
#include "menu/menu.h"
#include "menu.h"
#include "vm.h"

View file

@ -37,7 +37,8 @@
#include "c_dispatch.h"
#include "c_cvars.h"
#include "v_video.h"
#include "menu/menu.h"
#include "menu.h"
#include "printf.h"
CVAR(Int, menu_resolution_custom_width, 640, 0)
CVAR(Int, menu_resolution_custom_height, 480, 0)

View file

@ -42,7 +42,9 @@
#include "d_eventbase.h"
#include "d_gui.h"
#include "hardware.h"
#include "menu/menu.h"
#include "menu.h"
#include "menustate.h"
#include "keydef.h"
#include "i_interface.h"
// MACROS ------------------------------------------------------------------

View file

@ -34,12 +34,15 @@
*/
#include "menu/menu.h"
#include "menu.h"
#include "gi.h"
#include "c_bind.h"
#include "c_dispatch.h"
#include "gameconfigfile.h"
#include "filesystem.h"
#include "gi.h"
#include "d_player.h"
#include "c_dispatch.h"
TArray<FKeySection> KeySections;
extern TArray<FString> KeyConfWeapons;

View file

@ -62,6 +62,7 @@
#include "doommenu.h"
#include "r_utility.h"
#include "gameconfigfile.h"
#include "d_player.h"
EXTERN_CVAR(Int, cl_gfxlocalization)
EXTERN_CVAR(Bool, m_quickexit)
@ -191,6 +192,17 @@ bool M_SetSpecialMenu(FName menu, int param)
break;
}
DMenuDescriptor** desc = MenuDescriptors.CheckKey(menu);
if (desc != nullptr)
{
if ((*desc)->mNetgameMessage.IsNotEmpty() && netgame && !demoplayback)
{
M_StartMessage((*desc)->mNetgameMessage, 1);
return false;
}
}
// End of special checks
return true;
}

View file

@ -2,3 +2,66 @@
#include "menu.h"
void M_StartControlPanel (bool makeSound, bool scaleoverride = false);
struct FNewGameStartup
{
const char *PlayerClass;
int Episode;
int Skill;
};
extern FNewGameStartup NewGameStartupInfo;
void M_StartupEpisodeMenu(FNewGameStartup *gs);
void M_StartupSkillMenu(FNewGameStartup *gs);
// The savegame manager contains too much code that is game specific. Parts are shareable but need more work first.
struct FSaveGameNode
{
FString SaveTitle;
FString Filename;
bool bOldVersion = false;
bool bMissingWads = false;
bool bNoDelete = false;
};
struct FSavegameManager
{
private:
TArray<FSaveGameNode*> SaveGames;
FSaveGameNode NewSaveNode;
int LastSaved = -1;
int LastAccessed = -1;
FGameTexture *SavePic = nullptr;
public:
int WindowSize = 0;
FString SaveCommentString;
FSaveGameNode *quickSaveSlot = nullptr;
~FSavegameManager();
private:
int InsertSaveNode(FSaveGameNode *node);
public:
void NotifyNewSave(const FString &file, const FString &title, bool okForQuicksave, bool forceQuicksave);
void ClearSaveGames();
void ReadSaveStrings();
void UnloadSaveData();
int RemoveSaveSlot(int index);
void LoadSavegame(int Selected);
void DoSave(int Selected, const char *savegamestring);
unsigned ExtractSaveData(int index);
void ClearSaveStuff();
bool DrawSavePic(int x, int y, int w, int h);
void DrawSaveComment(FFont *font, int cr, int x, int y, int scalefactor);
void SetFileInfo(int Selected);
unsigned SavegameCount();
FSaveGameNode *GetSavegame(int i);
void InsertNewSaveNode();
bool RemoveNewSaveNode();
};
extern FSavegameManager savegameManager;

View file

@ -1,6 +1,6 @@
/*
** playermenu.cpp
** The player setup menu
** The player setup menu's setters. These are native for security purposes.
**
**---------------------------------------------------------------------------
** Copyright 2001-2010 Randy Heit
@ -33,12 +33,13 @@
**
*/
#include "menu/menu.h"
#include "menu.h"
#include "gi.h"
#include "c_dispatch.h"
#include "teaminfo.h"
#include "r_state.h"
#include "vm.h"
#include "d_player.h"
EXTERN_CVAR(Int, team)
EXTERN_CVAR(Float, autoaim)