1 #ifndef _included_AvP_Menus_h_ 2 #define _included_AvP_Menus_h_ 3 4 #ifndef MARINE_DEMO 5 #define MARINE_DEMO 0 6 #endif 7 8 #ifndef PREDATOR_DEMO 9 #define PREDATOR_DEMO 0 10 #endif 11 12 #ifndef ALIEN_DEMO 13 #define ALIEN_DEMO 0 14 #endif 15 16 #define DEATHMATCH_DEMO 0 // more multiplayer-only demo really 17 18 19 #ifdef AVP_DEBUG_VERSION 20 #define CONSOLE_DEBUGGING_COMMANDS_ACTIVATED 1 21 22 #define LOAD_SCREAMS_FROM_FASTFILES 0 23 #define LOAD_USING_FASTFILES 0 24 25 #else //AVP_DEBUG_VERSION 26 27 #ifdef AVP_DEBUG_FOR_FOX 28 #define CONSOLE_DEBUGGING_COMMANDS_ACTIVATED 1 29 #else 30 #define CONSOLE_DEBUGGING_COMMANDS_ACTIVATED 0 31 #endif 32 33 #define LOAD_SCREAMS_FROM_FASTFILES 1 34 #define LOAD_USING_FASTFILES 1 35 #endif //AVP_DEBUG_VERSION 36 37 #define PLAY_INTRO 1 38 #define ALLOW_SKIP_INTRO 1 39 40 #define SAVE_GAME_ON 1 41 42 #include "avp_menugfx.hpp" 43 #include "language.h" 44 45 enum MENUSSTATE_ID 46 { 47 MENUSSTATE_MAINMENUS, 48 MENUSSTATE_INGAMEMENUS, 49 MENUSSTATE_OUTSIDEMENUS, 50 MENUSSTATE_STARTGAME, 51 }; 52 53 enum AVPMENU_ID 54 { 55 AVPMENU_MAIN, 56 AVPMENU_MAIN_WITHCHEATS, 57 AVPMENU_DEBUG_MAIN, 58 AVPMENU_DEBUG_MAIN_WITHCHEATS, 59 60 AVPMENU_EXITGAME, 61 62 AVPMENU_USERPROFILESELECT, 63 AVPMENU_USERPROFILEENTERNAME, 64 AVPMENU_USERPROFILEDELETE, 65 66 AVPMENU_SINGLEPLAYER, 67 AVPMENU_MARINELEVELS, 68 AVPMENU_ALIENLEVELS, 69 AVPMENU_PREDATORLEVELS, 70 71 AVPMENU_MULTIPLAYER, 72 AVPMENU_MULTIPLAYER_LOBBIEDSERVER, 73 AVPMENU_MULTIPLAYER_LOBBIEDCLIENT, 74 AVPMENU_MULTIPLAYER_SKIRMISH, 75 AVPMENU_MULTIPLAYERSTARTGAME, 76 AVPMENU_MULTIPLAYERJOINGAME, 77 AVPMENU_MULTIPLAYERSELECTSESSION, 78 AVPMENU_MULTIPLAYERJOINGAME2, 79 AVPMENU_MULTIPLAYEROPENADDRESS, 80 AVPMENU_MULTIPLAYER_LOADIPADDRESS, 81 AVPMENU_MULTIPLAYER_CONNECTION, 82 AVPMENU_MULTIPLAYER_CONFIG, 83 AVPMENU_MULTIPLAYER_CONFIG_JOIN, 84 AVPMENU_SKIRMISH_CONFIG, 85 AVPMENU_MULTIPLAYER_SPECIES_HOST, 86 AVPMENU_MULTIPLAYER_SPECIES_JOIN, 87 88 AVPMENU_MULTIPLAYER_SAVECONFIG, 89 AVPMENU_MULTIPLAYER_LOADCONFIG, 90 AVPMENU_MULTIPLAYER_DELETECONFIG, 91 92 AVPMENU_MULTIPLAYER_JOINING, 93 94 AVPMENU_CONTROLS, 95 AVPMENU_JOYSTICKCONTROLS, 96 97 AVPMENU_INGAMEAVOPTIONS, 98 AVPMENU_MAINMENUAVOPTIONS, 99 AVPMENU_VIDEOMODE, 100 101 102 AVPMENU_INGAME, 103 AVPMENU_INNETGAME, 104 105 AVPMENU_MARINEKEYCONFIG, 106 AVPMENU_PREDATORKEYCONFIG, 107 AVPMENU_ALIENKEYCONFIG, 108 AVPMENU_OPTIONS, 109 110 AVPMENU_LEVELBRIEFING_BASIC, 111 AVPMENU_LEVELBRIEFING_BONUS, 112 113 AVPMENU_CHEATOPTIONS, 114 AVPMENU_DETAILLEVELS, 115 116 AVPMENU_LOADGAME, 117 AVPMENU_SAVEGAME, 118 119 }; 120 121 enum AVPMENU_FONT_ID 122 { 123 AVPMENU_FONT_SMALL, 124 AVPMENU_FONT_BIG, 125 }; 126 /* menu elements */ 127 enum AVPMENU_ELEMENT_ID 128 { 129 AVPMENU_ELEMENT_GOTOMENU, 130 AVPMENU_ELEMENT_GOTOMENU_GFX, 131 132 AVPMENU_ELEMENT_TOGGLE, 133 AVPMENU_ELEMENT_SLIDER, 134 135 AVPMENU_ELEMENT_USERPROFILE, 136 AVPMENU_ELEMENT_ALIENEPISODE, 137 AVPMENU_ELEMENT_MARINEEPISODE, 138 AVPMENU_ELEMENT_PREDATOREPISODE, 139 AVPMENU_ELEMENT_STARTMPGAME, 140 AVPMENU_ELEMENT_JOINMPGAME, 141 AVPMENU_ELEMENT_JOINLOBBIED, 142 143 AVPMENU_ELEMENT_QUITGAME, 144 145 AVPMENU_ELEMENT_TEXTFIELD, 146 AVPMENU_ELEMENT_DUMMYTEXTFIELD, 147 AVPMENU_ELEMENT_TEXTFIELD_SMALLWRAPPED, 148 AVPMENU_ELEMENT_TEXTSLIDER, 149 AVPMENU_ELEMENT_DUMMYTEXTSLIDER, 150 AVPMENU_ELEMENT_SPECIES_TEXTSLIDER, 151 152 AVPMENU_ELEMENT_TEXTSLIDER_POINTER, // text slider with a char** rather than a string index 153 AVPMENU_ELEMENT_DUMMYTEXTSLIDER_POINTER, // text slider with a char** rather than a string index 154 155 AVPMENU_ELEMENT_CHEATMODE_TEXTSLIDER, 156 AVPMENU_ELEMENT_CHEATMODE_SPECIES_TEXTSLIDER, 157 AVPMENU_ELEMENT_CHEATMODE_ENVIRONMENT_TEXTSLIDER, 158 159 AVPMENU_ELEMENT_NUMBERFIELD, 160 AVPMENU_ELEMENT_DUMMYNUMBERFIELD, 161 162 AVPMENU_ELEMENT_LISTCHOICE, 163 164 AVPMENU_ELEMENT_CONNECTIONCHOICE, 165 166 AVPMENU_ELEMENT_VIDEOMODE, 167 AVPMENU_ELEMENT_VIDEOMODEOK, 168 169 AVPMENU_ELEMENT_KEYCONFIG, 170 AVPMENU_ELEMENT_KEYCONFIGOK, 171 AVPMENU_ELEMENT_RESETKEYCONFIG, 172 173 AVPMENU_ELEMENT_ENDOFMENU, 174 175 AVPMENU_ELEMENT_RESUMEGAME, 176 AVPMENU_ELEMENT_RESTARTGAME, 177 178 AVPMENU_ELEMENT_STARTMARINEDEMO, 179 AVPMENU_ELEMENT_STARTPREDATORDEMO, 180 AVPMENU_ELEMENT_STARTALIENDEMO, 181 AVPMENU_ELEMENT_STARTLEVELWITHCHEAT, 182 183 AVPMENU_ELEMENT_BUTTONSETTING, 184 AVPMENU_ELEMENT_LOADMPCONFIG, 185 AVPMENU_ELEMENT_SAVEMPCONFIG, 186 AVPMENU_ELEMENT_DELETEMPCONFIG, 187 AVPMENU_ELEMENT_RESETMPCONFIG, 188 189 AVPMENU_ELEMENT_DIFFICULTYLEVEL, 190 191 AVPMENU_ELEMENT_LOADIPADDRESS, 192 193 AVPMENU_ELEMENT_USERPROFILE_DELETE, 194 195 196 AVPMENU_ELEMENT_SAVESETTINGS, 197 198 AVPMENU_ELEMENT_SAVEGAME, 199 AVPMENU_ELEMENT_LOADGAME, 200 }; 201 202 203 enum AVPMENU_ELEMENT_INTERACTION_ID 204 { 205 AVPMENU_ELEMENT_INTERACTION_SELECT, 206 AVPMENU_ELEMENT_INTERACTION_DECREASE, 207 AVPMENU_ELEMENT_INTERACTION_INCREASE, 208 }; 209 210 typedef struct 211 { 212 enum AVPMENU_ELEMENT_ID ElementID; 213 214 union 215 { 216 enum TEXTSTRING_ID TextDescription; 217 enum AVPMENUGFX_ID GfxID; 218 } a; 219 220 union 221 { 222 enum AVPMENU_ID MenuToGoTo; 223 int MaxSliderValue; 224 int MaxTextLength; 225 int MaxValue; //for number fields 226 } b; 227 228 union 229 { 230 int *ToggleValuePtr; 231 int *SliderValuePtr; 232 char *TextPtr; 233 int *NumberPtr; 234 int Value; 235 } c; 236 237 union 238 { 239 enum TEXTSTRING_ID FirstTextSliderString; 240 enum TEXTSTRING_ID NumberFieldUnitsString; 241 char** TextSliderStringPointer; 242 } d; 243 244 enum TEXTSTRING_ID HelpString; 245 246 enum TEXTSTRING_ID NumberFieldZeroString; //special string for 0 247 248 int Brightness; 249 } AVPMENU_ELEMENT; 250 251 typedef struct 252 { 253 enum AVPMENU_FONT_ID FontToUse; 254 enum TEXTSTRING_ID MenuTitle; 255 256 AVPMENU_ELEMENT *MenuElements; 257 enum AVPMENU_ID ParentMenu; 258 int DefaultElement; 259 } AVPMENU; 260 261 262 typedef struct 263 { 264 enum MENUSSTATE_ID MenusState; 265 266 267 enum AVPMENU_ID CurrentMenu; 268 AVPMENU_ELEMENT *MenuElements; 269 int NumberOfElementsInMenu; 270 int CurrentlySelectedElement; 271 int MenuHeight; 272 273 enum AVPMENU_FONT_ID FontToUse; 274 275 int PositionInTextField; 276 277 int WidthLeftForText; //thing for checking whether user input will fit on screen 278 279 unsigned int UserEnteringText :1; 280 unsigned int UserEnteringNumber :1; 281 unsigned int UserChangingKeyConfig :1; 282 unsigned int ChangingPrimaryConfig :1; 283 } AVP_MENUS; 284 285 286 #define BRIGHTNESS_OF_HIGHLIGHTED_ELEMENT (ONE_FIXED) 287 #define BRIGHTNESS_OF_DARKENED_ELEMENT (ONE_FIXED/4) 288 #define BRIGHTNESS_CHANGE_SPEED (RealFrameTime*2) 289 290 #define MENU_TOPY (150) 291 #define MENU_CENTREY (280) 292 #define MENU_HEIGHT (255) 293 #define MENU_CENTREX (ScreenDescriptorBlock.SDB_Width/2) 294 295 #define MENU_ELEMENT_SPACING (9) 296 #define MENU_FONT_HEIGHT (21) 297 #define MENU_LEFTXEDGE (30) 298 #define MENU_RIGHTXEDGE (ScreenDescriptorBlock.SDB_Width-30) 299 #define MENU_BOTTOMYEDGE (390) 300 #define MENU_TOPYEDGE (130) 301 #define MENU_WIDTH (MENU_RIGHTXEDGE-MENU_LEFTXEDGE) 302 303 304 /* 305 Defines for numbers of levels transferred to AvP_EnvInfo.h 306 -Richard. 307 */ 308 309 310 311 /* KJL 18:05:51 05/07/98 - multiplayer stuff */ 312 typedef struct 313 { 314 char Name[40]; 315 char levelIndex;//local level index 316 // GUID Guid; 317 int Guid; 318 319 BOOL AllowedToJoin; 320 } SESSION_DESC; 321 #define MAX_NO_OF_SESSIONS 10 322 extern SESSION_DESC SessionData[]; 323 extern int NumberOfSessionsFound; 324 325 extern char IP_Address_Name[]; 326 327 328 329 typedef struct 330 { 331 unsigned char SlotUsed; 332 unsigned char SavesLeft; 333 unsigned char Species; 334 unsigned char Episode; 335 unsigned char ElapsedTime_Hours; 336 unsigned char ElapsedTime_Minutes; 337 unsigned char ElapsedTime_Seconds; 338 unsigned char Difficulty; 339 340 time_t TimeStamp; 341 } SAVE_SLOT_HEADER; 342 343 #define NUMBER_OF_SAVE_SLOTS 8 344 345 346 void KeyboardEntryQueue_Add(char c); 347 348 int AvP_MainMenus(void); 349 350 int AvP_InGameMenus(void); 351 352 int InGameMenusAreRunning(void); 353 354 void RenderBriefingText(int centreY, int brightness); 355 void GetFilenameForSaveSlot(int i, unsigned char *filenamePtr); 356 void ScanSaveSlots(void); 357 358 #endif 359