/******************************************************************** Minecraft: Pocket Edition - Decompilation Project Copyright (C) 2023 iProgramInCpp Options.cpp The following code is licensed under the following license: < no license yet :( > ********************************************************************/ #include "Options.hpp" #include "Util.hpp" #include "compat/AKeyCodes.hpp" #include "Minecraft.hpp" Options::Option Options::Option::MUSIC (0, "options.music", true, false), Options::Option::SOUND (1, "options.sound", true, false), Options::Option::INVERT_MOUSE (2, "options.invertMouse", false, true), Options::Option::SENSITIVITY (3, "options.sensitivity", true, false), Options::Option::RENDER_DISTANCE (4, "options.renderDistance", false, false), Options::Option::VIEW_BOBBING (5, "options.viewBobbing", false, true), Options::Option::ANAGLYPH (6, "options.anaglyph", false, true), Options::Option::LIMIT_FRAMERATE (7, "options.limitFramerate", false, true), Options::Option::DIFFICULTY (8, "options.difficulty", false, false), Options::Option::GRAPHICS (9, "options.graphics", false, false), Options::Option::AMBIENT_OCCLUSION(10, "options.ao", false, true), Options::Option::GUI_SCALE (11, "options.guiScale", false, false); void Options::initDefaultValues() { field_238 = 2; field_244 = 1.0f; field_23C = 0; field_248 = 1.0f; field_23D = 0; // @NOTE: third person? field_0 = 1.0f; field_23E = 0; field_4 = 1.0f; m_bFlyCheat = false; field_241 = 0; field_8 = 0.5f; field_24C = 0; m_bInvertMouse = false; m_bAnaglyphs = false; field_16 = 0; #ifdef ORIGINAL_CODE field_18 = 0; #else field_18 = Minecraft::useAmbientOcclusion; #endif field_240 = 1; field_10 = 2; field_14 = 1; m_bFancyGraphics = true; field_19 = 1; field_1C = "Default"; m_playerName = "Steve"; m_bServerVisibleDefault = true; m_keyBinds[0] = { "key.forward", 'W' }; m_keyBinds[1] = { "key.left", 'A' }; m_keyBinds[2] = { "key.back", 'S' }; m_keyBinds[3] = { "key.right", 'D' }; m_keyBinds[4] = { "key.jump", ' ' }; m_keyBinds[5] = { "key.inventory", 'E' }; m_keyBinds[6] = { "key.drop", 'Q' }; m_keyBinds[7] = { "key.chat", 'T' }; m_keyBinds[8] = { "key.fog", 'F' }; m_keyBinds[9] = { "key.sneak", '\n' }; m_keyBinds[10] = { "key.destroy", 'X' }; m_keyBinds[11] = { "key.place", 'C' }; m_keyBinds[12] = { "key.menu.next", '(' }; m_keyBinds[13] = { "key.menu.previous", '&' }; m_keyBinds[14] = { "key.menu.ok", '\r' }; m_keyBinds[15] = { "key.menu.cancel", '\b' }; #ifdef ORIGINAL_CODE field_10 = 2; field_23D = 0; field_19 = 0; #endif m_bFancyGraphics = 1; // keybind now reprograms some the keybinds. // For the restoration, we don't actually need them m_keyBinds[0].value = AKEYCODE_DPAD_UP; m_keyBinds[1].value = AKEYCODE_DPAD_LEFT; m_keyBinds[2].value = AKEYCODE_DPAD_DOWN; m_keyBinds[3].value = AKEYCODE_DPAD_RIGHT; m_keyBinds[4].value = AKEYCODE_DPAD_CENTER; // lmao, how stupid. m_keyBinds[10].value = AKEYCODE_BUTTON_L1; m_keyBinds[11].value = AKEYCODE_BUTTON_R1; m_keyBinds[12].value = AKEYCODE_DPAD_DOWN; m_keyBinds[13].value = AKEYCODE_DPAD_UP; m_keyBinds[14].value = AKEYCODE_DPAD_CENTER; m_keyBinds[15].value = AKEYCODE_BACK; } Options::Options() { initDefaultValues(); } std::string getMessage(const Options::Option& option) { return "Options::getMessage - Not implemented"; } void Options::load() { // stub } void Options::save() { // stub } bool Options::readBool(const std::string& str) { std::string trimmed = Util::stringTrim(str); if (trimmed == "true" || trimmed == "1") return true; if (trimmed == "false" || trimmed == "0") return false; return false; } void Options::update(const std::vector& strings) { for (int i = 0; i