1 #pragma once 2 3 DEVILUTION_BEGIN_NAMESPACE 4 5 struct DiabloOptions { 6 /** @brief Play game intro video on startup. */ 7 bool bIntro; 8 }; 9 10 struct HellfireOptions { 11 /** @brief Play game intro video on startup. */ 12 bool bIntro; 13 /** @brief Cornerstone of the world item. */ 14 char szItem[sizeof(PkItemStruct) * 2 + 1]; 15 }; 16 17 struct AudioOptions { 18 /** @brief Movie and SFX volume. */ 19 Sint32 nSoundVolume; 20 /** @brief Music volume. */ 21 Sint32 nMusicVolume; 22 /** @brief Player emits sound when walking. */ 23 bool bWalkingSound; 24 /** @brief Automatically equipping items on pickup emits the equipment sound. */ 25 bool bAutoEquipSound; 26 }; 27 28 struct GraphicsOptions { 29 /** @brief Render width. */ 30 Sint32 nWidth; 31 /** @brief Render height. */ 32 Sint32 nHeight; 33 /** @brief Run in fullscreen or windowed mode. */ 34 bool bFullscreen; 35 /** @brief Scale the image after rendering. */ 36 bool bUpscale; 37 /** @brief Expand the aspect ratio to match the screen. */ 38 bool bFitToScreen; 39 /** @brief See SDL_HINT_RENDER_SCALE_QUALITY. */ 40 char szScaleQuality[2]; 41 /** @brief Only scale by values divisible by the width and height. */ 42 bool bIntegerScaling; 43 /** @brief Enable vsync on the output. */ 44 bool bVSync; 45 /** @brief Use blended transparency rather than stippled. */ 46 bool bBlendedTransparancy; 47 /** @brief Gamma correction level. */ 48 Sint32 nGammaCorrection; 49 /** @brief Enable color cycling animations. */ 50 bool bColorCycling; 51 /** @brief Enable FPS Limit. */ 52 bool bFPSLimit; 53 }; 54 55 struct GameplayOptions { 56 /** @brief Gameplay ticks per second. */ 57 Sint32 nTickRate; 58 /** @brief Enable double walk speed when in town. */ 59 bool bRunInTown; 60 /** @brief Do not let the mouse leave the application window. */ 61 bool bGrabInput; 62 /** @brief Enable the Theo quest. */ 63 bool bTheoQuest; 64 /** @brief Enable the cow quest. */ 65 bool bCowQuest; 66 /** @brief Will players still damage other players in non-PvP mode. */ 67 bool bFriendlyFire; 68 /** @brief Enable the bard hero class. */ 69 bool bTestBard; 70 /** @brief Enable the babarian hero class. */ 71 bool bTestBarbarian; 72 /** @brief Show the current level progress. */ 73 bool bExperienceBar; 74 /** @brief Show enemy health at the top of the screen. */ 75 bool bEnemyHealthBar; 76 /** @brief Automatically pick up gold when walking over it. */ 77 bool bAutoGoldPickup; 78 /** @brief Recover mana when talking to Adria. */ 79 bool bAdriaRefillsMana; 80 /** @brief Automatically attempt to equip weapon-type items when picking them up. */ 81 bool bAutoEquipWeapons; 82 /** @brief Automatically attempt to equip armor-type items when picking them up. */ 83 bool bAutoEquipArmor; 84 /** @brief Automatically attempt to equip helm-type items when picking them up. */ 85 bool bAutoEquipHelms; 86 /** @brief Automatically attempt to equip shield-type items when picking them up. */ 87 bool bAutoEquipShields; 88 /** @brief Automatically attempt to equip jewelry-type items when picking them up. */ 89 bool bAutoEquipJewelry; 90 /** @brief Only enable 2/3 quests in each game session */ 91 bool bRandomizeQuests; 92 /** @brief Indicates whether or not monster type (Animal, Demon, Undead) is shown along with other monster information. */ 93 bool bShowMonsterType; 94 }; 95 96 struct ControllerOptions { 97 /** @brief SDL Controller mapping, see SDL_GameControllerDB. */ 98 char szMapping[1024]; 99 /** @brief Use dpad for spell hotkeys without holding "start" */ 100 bool bDpadHotkeys; 101 /** @brief Shoulder gamepad shoulder buttons act as potions by default */ 102 bool bSwapShoulderButtonMode; 103 #ifdef __vita__ 104 /** @brief Enable input via rear touchpad */ 105 bool bRearTouch; 106 #endif 107 }; 108 109 struct NetworkOptions { 110 /** @brief Optionally bind to a specific network interface. */ 111 char szBindAddress[129]; 112 /** @brief Most recently entered Hostname in join dialog. */ 113 char szPreviousHost[129]; 114 /** @brief What network port to use. */ 115 Uint16 nPort; 116 }; 117 118 struct ChatOptions { 119 /** @brief Quick chat messages. */ 120 char szHotKeyMsgs[4][MAX_SEND_STR_LEN]; 121 }; 122 123 struct Options { 124 DiabloOptions Diablo; 125 HellfireOptions Hellfire; 126 AudioOptions Audio; 127 GameplayOptions Gameplay; 128 GraphicsOptions Graphics; 129 ControllerOptions Controller; 130 NetworkOptions Network; 131 ChatOptions Chat; 132 }; 133 134 extern Options sgOptions; 135 136 DEVILUTION_END_NAMESPACE 137