forked from bradharding/doomretro
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathm_menu.h
134 lines (109 loc) · 4.02 KB
/
m_menu.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
==============================================================================
DOOM Retro
The classic, refined DOOM source port. For Windows PC.
==============================================================================
Copyright © 1993-2024 by id Software LLC, a ZeniMax Media company.
Copyright © 2013-2024 by Brad Harding <mailto:[email protected]>.
This file is a part of DOOM Retro.
DOOM Retro is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the license, or (at your
option) any later version.
DOOM Retro is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with DOOM Retro. If not, see <https://www.gnu.org/licenses/>.
DOOM is a registered trademark of id Software LLC, a ZeniMax Media
company, in the US and/or other countries, and is used without
permission. All other trademarks are the property of their respective
holders. DOOM Retro is in no way affiliated with nor endorsed by
id Software.
==============================================================================
*/
#pragma once
#include "p_saveg.h"
typedef struct
{
short status;
char name[10];
void (*routine)(int choice);
char **text;
int x;
int y;
int width;
int height;
int sliderx;
} menuitem_t;
typedef struct menu_s
{
short numitems;
struct menu_s *prevmenu;
menuitem_t *menuitems;
void (*routine)(void);
short x;
short y;
int laston;
bool change;
} menu_t;
//
// MENUS
//
// Called by main loop,
// saves config file and calls I_Quit when user exits.
// Even when the menu is not displayed,
// this can resize the view and change game parameters.
// Does all the real work of the menu interaction.
bool M_Responder(event_t *ev);
// Called by main loop,
// only used for menu (skull cursor) animation.
void M_Ticker(void);
// Called by main loop,
// draws the menus directly into the screen buffer.
void M_Drawer(void);
// Called by D_DoomMain,
// loads the config file.
void M_Init(void);
// Called by intro code to force menu up upon a keypress,
// does nothing if menu is already up.
void M_OpenMainMenu(void);
void M_CloseMenu(void);
void M_EndGame(int choice);
void M_DrawMenuBackground(void);
void M_DrawSmallChar(int x, int y, int i, bool highlight, bool shadow);
void M_DrawString(int x, int y, char *string, bool highlight, bool shadow);
void M_DrawCenteredString(int y, char *string);
int M_CharacterWidth(unsigned char ch, unsigned char prevletter);
int M_StringWidth(const char *string);
void M_SetWindowCaption(void);
void M_UpdateSaveGameName(int i);
int M_CountSaveGames(void);
void M_StartMessage(char *string, void (*routine)(int), bool input);
void M_QuitResponse(int key);
void M_QuitDOOM(int choice);
void M_AddEpisode(int map, const int ep, const char *lumpname, const char *string);
extern bool messagetoprint;
extern bool nomusic;
extern bool nosound;
extern bool nosfx;
extern bool firstevent;
extern bool savegames;
extern bool helpscreen;
extern bool quitting;
extern bool reopenautomap;
extern int menuspindirection;
extern int menuspinspeed;
extern int quicksaveslot;
extern char savegamestrings[savegame_max][SAVESTRINGSIZE];
extern menu_t EpiDef;
extern menu_t ExpDef;
extern menu_t LoadDef;
extern menu_t MainDef;
extern menu_t NewDef;
extern menu_t SaveDef;
extern bool customepisodes;
extern uint64_t controllerwait;
extern uint64_t mousewait;
extern int maptoepisode[100];