1 /*------------------------------------------------------------------------------- 2 3 BARONY 4 File: menu.hpp 5 Desc: definitions and prototypes for menu.c 6 7 Copyright 2013-2016 (c) Turning Wheel LLC, all rights reserved. 8 See LICENSE for details. 9 10 -------------------------------------------------------------------------------*/ 11 12 #pragma once 13 14 extern bool savethisgame; 15 16 // main menu code 17 void handleMainMenu(bool mode); 18 19 #define NUMSUBTITLES 30 20 extern int subtitleCurrent; 21 extern bool subtitleVisible; 22 23 extern Sint32 gearrot; 24 extern Sint32 gearsize; 25 extern Uint16 logoalpha; 26 extern int credittime; 27 extern int creditstage; 28 extern int intromovietime; 29 extern int intromoviestage; 30 extern int firstendmovietime; 31 extern int firstendmoviestage; 32 extern int secondendmovietime; 33 extern int secondendmoviestage; 34 extern int thirdendmoviestage; 35 extern int thirdendmovietime; 36 extern int fourthendmoviestage; 37 extern int fourthendmovietime; 38 extern int DLCendmovieStageAndTime[8][2]; 39 enum NewMovieStageAndTimeIndex : int 40 { 41 MOVIE_STAGE, 42 MOVIE_TIME, 43 }; 44 enum NewMovieCrawlTypes : int 45 { 46 MOVIE_MIDGAME_HERX_MONSTERS, 47 MOVIE_MIDGAME_BAPHOMET_MONSTERS, 48 MOVIE_MIDGAME_BAPHOMET_HUMAN_AUTOMATON, 49 MOVIE_CLASSIC_WIN_MONSTERS, 50 MOVIE_CLASSIC_WIN_BAPHOMET_MONSTERS, 51 MOVIE_WIN_AUTOMATON, 52 MOVIE_WIN_DEMONS_UNDEAD, 53 MOVIE_WIN_BEASTS 54 }; 55 extern real_t drunkextend; 56 extern bool losingConnection[MAXPLAYERS]; 57 extern int rebindaction; 58 59 // button definitions 60 void buttonQuitConfirm(button_t* my); 61 void buttonQuitNoSaveConfirm(button_t* my); 62 void buttonEndGameConfirm(button_t* my); 63 void buttonCloseAndEndGameConfirm(button_t* my); 64 void buttonCloseSubwindow(button_t* my); 65 void buttonContinue(button_t* my); 66 void buttonBack(button_t* my); 67 void buttonVideoTab(button_t* my); 68 void buttonAudioTab(button_t* my); 69 void buttonKeyboardTab(button_t* my); 70 void buttonMouseTab(button_t* my); 71 void buttonGamepadBindingsTab(button_t* my); 72 void buttonGamepadSettingsTab(button_t* my); 73 void buttonMiscTab(button_t* my); 74 void buttonSettingsAccept(button_t* my); 75 void buttonSettingsOK(button_t* my); 76 void buttonStartSingleplayer(button_t* my); 77 void buttonStartServer(button_t* my); 78 void buttonHostMultiplayer(button_t* my); 79 void buttonJoinMultiplayer(button_t* my); 80 void buttonHostLobby(button_t* my); 81 void buttonJoinLobby(button_t* my); 82 void buttonDisconnect(button_t* my); 83 void buttonScoreNext(button_t* my); 84 void buttonScorePrev(button_t* my); 85 void buttonScoreToggle(button_t* my); 86 void buttonDeleteCurrentScore(button_t* my); 87 void buttonOpenCharacterCreationWindow(button_t* my); 88 void buttonDeleteSavedSoloGame(button_t* my); 89 void buttonDeleteSavedMultiplayerGame(button_t* my); 90 void buttonConfirmDeleteSoloFile(button_t* my); 91 void buttonConfirmDeleteMultiplayerFile(button_t* my); 92 void buttonLoadSingleplayerGame(button_t* my); 93 void buttonLoadMultiplayerGame(button_t* my); 94 void buttonRandomCharacter(button_t* my); 95 void buttonReplayLastCharacter(button_t* my); 96 void buttonDeleteScoreWindow(button_t* my); 97 void buttonOpenScoresWindow(button_t* my); 98 void buttonRandomName(button_t* my); 99 void buttonGamemodsOpenDirectory(button_t* my); 100 void buttonGamemodsPrevDirectory(button_t* my); 101 void buttonGamemodsBaseDirectory(button_t* my); 102 void buttonGamemodsSelectDirectoryForUpload(button_t* my); 103 void buttonGamemodsOpenModifyExistingWindow(button_t* my); 104 void buttonGamemodsStartModdedGame(button_t* my); 105 void buttonInviteFriends(button_t* my); 106 107 #ifdef STEAMWORKS 108 void buttonGamemodsPrepareWorkshopItemUpload(button_t* my); 109 void buttonGamemodsSetWorkshopItemFields(button_t* my); 110 void buttonGamemodsStartUploadItem(button_t* my); 111 void buttonGamemodsGetSubscribedItems(button_t* my); 112 void buttonGamemodsOpenSubscribedWindow(button_t* my); 113 void buttonGamemodsOpenUploadWindow(button_t* my); 114 void buttonGamemodsGetMyWorkshopItems(button_t* my); 115 void buttonGamemodsModifyExistingWorkshopItemFields(button_t* my); 116 void buttonGamemodsCancelModifyFileContents(button_t* my); 117 void buttonSteamLobbyBrowserJoinGame(button_t* my); 118 void buttonSteamLobbyBrowserRefresh(button_t* my); 119 void buttonGamemodsSubscribeToHostsModFiles(button_t* my); 120 void buttonGamemodsMountHostsModFiles(button_t* my); 121 void* cpp_SteamMatchmaking_GetLobbyOwner(void* steamIDLobby); 122 void* cpp_SteamMatchmaking_GetLobbyMember(void* steamIDLobby, int index); 123 void openSteamLobbyWaitWindow(button_t* my); 124 #elif defined USE_EOS 125 void buttonSteamLobbyBrowserJoinGame(button_t* my); 126 void buttonSteamLobbyBrowserRefresh(button_t* my); 127 void openSteamLobbyWaitWindow(button_t* my); 128 #else 129 void windowEnterSerialPrompt(); 130 void windowSerialResult(int success); 131 size_t serialHash(std::string input); 132 extern char serialInputText[64]; 133 #endif 134 135 #define SLIDERFONT font12x12_bmp 136 137 // achievement window 138 void openAchievementsWindow(); 139 void closeAchievementsWindow(button_t*); 140 extern bool achievements_window; 141 extern int achievements_window_page; 142 void buttonAchievementsUp(button_t* my); 143 void buttonAchievementsDown(button_t* my); 144 145 // misc functions 146 void openSettingsWindow(); 147 void openFailedConnectionWindow(int mode); 148 void openGameoverWindow(); 149 void openSteamLobbyBrowserWindow(button_t* my); 150 void openLoadGameWindow(button_t* my); 151 void openNewLoadGameWindow(button_t* my); 152 void reloadSavegamesList(bool showWindow = true); 153 void doSlider(int x, int y, int dots, int minvalue, int maxvalue, int increment, int* var, SDL_Surface* slider_font = SLIDERFONT, int slider_font_char_width = 16); 154 void doSliderF(int x, int y, int dots, real_t minvalue, real_t maxvalue, real_t increment, real_t* var); 155 156 // menu variables 157 extern bool settings_window; 158 extern int charcreation_step; 159 extern int loadGameSaveShowRectangle; 160 extern Uint32 charcreation_ticks; 161 extern bool playing_random_char; 162 extern int settings_tab; 163 extern int connect_window; 164 extern bool lobby_window; 165 extern int score_window; 166 extern Uint32 lobbyWindowSvFlags; 167 168 // gamemods window stuff 169 extern int gamemods_window; 170 extern int gamemods_window_scroll; 171 extern int gamemods_window_fileSelect; 172 extern int gamemods_uploadStatus; 173 extern int gamemods_numCurrentModsLoaded; 174 extern std::list<std::string> currentDirectoryFiles; 175 extern std::string directoryPath; 176 void gamemodsWindowClearVariables(); 177 void gamemodsCustomContentInit(); 178 bool gamemodsDrawClickableButton(int padx, int pady, int padw, int padh, Uint32 btnColor, std::string btnText, int action); 179 bool gamemodsRemovePathFromMountedFiles(std::string findStr); 180 bool gamemodsIsPathInMountedFiles(std::string findStr); 181 bool gamemodsClearAllMountedPaths(); 182 bool gamemodsMountAllExistingPaths(); 183 extern bool gamemods_disableSteamAchievements; 184 extern std::vector<std::pair<std::string, std::string>> gamemods_mountedFilepaths; 185 extern bool gamemods_modelsListRequiresReload; 186 extern bool gamemods_soundListRequiresReload; 187 extern bool gamemods_modPreload; 188 #ifdef STEAMWORKS 189 void gamemodsWorkshopPreloadMod(int fileID, std::string modTitle); 190 void gamemodsWindowUploadInit(bool creatingNewItem); 191 void gamemodsSubscribedItemsInit(); 192 void gamemodsDrawWorkshopItemTagToggle(std::string tagname, int x, int y); 193 bool gamemodsCheckIfSubscribedAndDownloadedFileID(uint64 fileID); 194 bool gamemodsCheckFileIDInLoadedPaths(uint64 fileID); 195 bool gamemodsIsClientLoadOrderMatchingHost(std::vector<std::string> serverModList); 196 extern std::vector<std::pair<std::string, uint64>> gamemods_workshopLoadedFileIDMap; 197 extern std::unordered_set<uint64> betaPlayers; 198 #endif // STEAMWORKS 199 bool drawClickableButton(int padx, int pady, int padw, int padh, Uint32 btnColor); 200 extern bool scoreDisplayMultiplayer; 201 extern std::vector<std::tuple<int, int, int, std::string>> savegamesList; // tuple - last modified, multiplayer type, file entry, and description of save game. 202 203 extern Sint32 slidery, slidersize, oslidery; 204 205 // settings window 206 extern Uint32 settings_fov; 207 extern Uint32 settings_fps; 208 extern int settings_xres, settings_yres; 209 extern bool settings_smoothlighting; 210 extern int settings_fullscreen, settings_shaking, settings_bobbing; 211 extern bool settings_borderless; 212 extern real_t settings_gamma; 213 extern int settings_sfxvolume, settings_musvolume; 214 extern int settings_sfxAmbientVolume; 215 extern int settings_sfxEnvironmentVolume; 216 extern int settings_impulses[NUMIMPULSES]; 217 extern int settings_reversemouse; 218 extern bool settings_smoothmouse; 219 extern bool settings_disablemouserotationlimit; 220 extern real_t settings_mousespeed; 221 extern bool settings_broadcast; 222 extern bool settings_nohud; 223 extern bool settings_colorblind; 224 extern bool settings_spawn_blood; 225 extern bool settings_light_flicker; 226 extern bool settings_vsync; 227 extern bool settings_status_effect_icons; 228 extern bool settings_minimap_ping_mute; 229 extern bool settings_mute_audio_on_focus_lost; 230 extern bool settings_mute_player_monster_sounds; 231 extern int settings_minimap_transparency_foreground; 232 extern int settings_minimap_transparency_background; 233 extern int settings_minimap_scale; 234 extern int settings_minimap_object_zoom; 235 extern char portnumber_char[6]; 236 extern char connectaddress[64]; 237 extern bool smoothmouse; 238 extern bool usecamerasmoothing; 239 extern bool disablemouserotationlimit; 240 extern bool broadcast; 241 extern bool nohud; 242 extern int menuselect; 243 extern bool colorblind; 244 extern bool right_click_protect; 245 extern bool settings_auto_hotbar_new_items; 246 extern bool settings_auto_hotbar_categories[NUM_HOTBAR_CATEGORIES]; 247 extern int settings_autosort_inventory_categories[NUM_AUTOSORT_CATEGORIES]; 248 extern bool settings_hotbar_numkey_quick_add; 249 extern bool settings_disable_messages; 250 extern bool settings_right_click_protect; 251 extern bool settings_auto_appraise_new_items; 252 extern bool settings_lock_right_sidebar; 253 extern bool settings_show_game_timer_always; 254 extern bool settings_uiscale_charactersheet; 255 extern bool settings_uiscale_skillspage; 256 extern real_t settings_uiscale_hotbar; 257 extern real_t settings_uiscale_playerbars; 258 extern real_t settings_uiscale_chatlog; 259 extern real_t settings_uiscale_inventory; 260 extern bool settings_hide_statusbar; 261 extern bool settings_hide_playertags; 262 extern bool settings_show_skill_values; 263 extern bool settings_disableMultithreadedSteamNetworking; 264 extern bool settings_disableFPSLimitOnNetworkMessages; 265 266 static const int NUM_SETTINGS_TABS = 7; 267 268 static const int SETTINGS_VIDEO_TAB = 0; 269 static const int SETTINGS_AUDIO_TAB = 1; 270 static const int SETTINGS_KEYBOARD_TAB = 2; 271 static const int SETTINGS_MOUSE_TAB = 3; 272 static const int SETTINGS_GAMEPAD_BINDINGS_TAB = 4; 273 static const int SETTINGS_GAMEPAD_SETTINGS_TAB = 5; 274 static const int SETTINGS_MISC_TAB = 6; 275 276 277 //Confirm resolution window stuff. 278 extern bool resolutionChanged; 279 extern bool confirmResolutionWindow; 280 extern int resolutionConfirmationTimer; 281 static const int RESOLUTION_CONFIRMATION_TIME = 10000; //Time in milliseconds before resolution reverts. 282 extern Sint32 oldXres; 283 extern Sint32 oldYres; 284 extern button_t* revertResolutionButton; 285 286 void applySettings(); 287 void openConfirmResolutionWindow(); 288 void buttonAcceptResolution(button_t* my); 289 void buttonRevertResolution(button_t* my); 290 void revertResolution(); 291 292 extern std::vector<std::pair<std::string, int>> menuOptions; 293 void initMenuOptions(); 294