mirror of
https://github.com/celisej567/mcpe.git
synced 2026-09-17 20:10:23 +03:00
* Initial cleanup.
Will now need to cleanup includes, which will take a while ...
This commit is contained in:
169
source/client/common/Options.cpp
Normal file
169
source/client/common/Options.cpp
Normal file
@@ -0,0 +1,169 @@
|
||||
/********************************************************************
|
||||
Minecraft: Pocket Edition - Decompilation Project
|
||||
Copyright (C) 2023 iProgramInCpp
|
||||
|
||||
The following code is licensed under the BSD 1 clause license.
|
||||
SPDX-License-Identifier: BSD-1-Clause
|
||||
********************************************************************/
|
||||
|
||||
#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;
|
||||
|
||||
#ifndef ORIGINAL_CODE
|
||||
m_keyBinds[9].value = AKEYCODE_SHIFT_LEFT;
|
||||
#endif
|
||||
}
|
||||
|
||||
Options::Options()
|
||||
{
|
||||
initDefaultValues();
|
||||
}
|
||||
|
||||
std::string getMessage(const Options::Option& option)
|
||||
{
|
||||
return "Options::getMessage - Not implemented";
|
||||
}
|
||||
|
||||
void Options::load()
|
||||
{
|
||||
// stub
|
||||
}
|
||||
|
||||
void Options::save()
|
||||
{
|
||||
// stub
|
||||
}
|
||||
|
||||
std::string Options::getMessage(const Options::Option& option)
|
||||
{
|
||||
return "Options::getMessage - Not implemented";
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
#ifndef ORIGINAL_CODE
|
||||
int Options::readInt(const std::string& str)
|
||||
{
|
||||
int f;
|
||||
|
||||
if (!sscanf(str.c_str(), "%d", &f))
|
||||
f = 0;
|
||||
|
||||
return f;
|
||||
}
|
||||
#endif
|
||||
|
||||
void Options::update(const std::vector<std::string>& strings)
|
||||
{
|
||||
for (int i = 0; i<int(strings.size()); i += 2)
|
||||
{
|
||||
std::string key = strings[i], value = strings[i + 1];
|
||||
|
||||
if (key == "mp_username")
|
||||
m_playerName = value;
|
||||
else if (key == "ctrl_invertmouse")
|
||||
m_bInvertMouse = readBool(value);
|
||||
else if (key == "gfx_fancygraphics")
|
||||
m_bFancyGraphics = readBool(value);
|
||||
else if (key == "mp_server_visible_default")
|
||||
m_bServerVisibleDefault = readBool(value);
|
||||
#ifndef ORIGINAL_CODE
|
||||
else if (key == "gfx_smoothlighting")
|
||||
Minecraft::useAmbientOcclusion = field_18 = readBool(value);
|
||||
else if (key == "gfx_viewdistance")
|
||||
field_10 = readInt(value);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
110
source/client/common/Options.hpp
Normal file
110
source/client/common/Options.hpp
Normal file
@@ -0,0 +1,110 @@
|
||||
/********************************************************************
|
||||
Minecraft: Pocket Edition - Decompilation Project
|
||||
Copyright (C) 2023 iProgramInCpp
|
||||
|
||||
The following code is licensed under the BSD 1 clause license.
|
||||
SPDX-License-Identifier: BSD-1-Clause
|
||||
********************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class Options
|
||||
{
|
||||
public:
|
||||
struct Option;
|
||||
struct KeyBind;
|
||||
public:
|
||||
Options();
|
||||
void initDefaultValues();
|
||||
void load();
|
||||
void save();
|
||||
std::string getMessage(const Options::Option&);
|
||||
void update(const std::vector<std::string>& string);
|
||||
|
||||
public:
|
||||
static bool readBool(const std::string& str);
|
||||
#ifndef ORIGINAL_CODE
|
||||
static int readInt(const std::string& str);
|
||||
#endif
|
||||
|
||||
public:
|
||||
enum KeyBindIndex
|
||||
{
|
||||
FORWARD,
|
||||
LEFT,
|
||||
BACK,
|
||||
RIGHT,
|
||||
JUMP,
|
||||
INVENTORY,
|
||||
DROP,
|
||||
CHAT,
|
||||
FOG,
|
||||
SNEAK,
|
||||
DESTROY,
|
||||
PLACE,
|
||||
MENU_NEXT,
|
||||
MENU_PREVIOUS,
|
||||
MENU_OK,
|
||||
MENU_CANCEL,
|
||||
};
|
||||
|
||||
struct KeyBind {
|
||||
std::string key;
|
||||
int value;
|
||||
};
|
||||
|
||||
struct Option
|
||||
{
|
||||
bool field_0;
|
||||
bool field_1;
|
||||
std::string str;
|
||||
int field_1C;
|
||||
|
||||
Option(int i, const std::string& str, bool b1, bool b2) : field_0(b1), field_1(b2), str(str), field_1C(i) {}
|
||||
|
||||
static Option MUSIC;
|
||||
static Option SOUND;
|
||||
static Option INVERT_MOUSE;
|
||||
static Option SENSITIVITY;
|
||||
static Option RENDER_DISTANCE;
|
||||
static Option VIEW_BOBBING;
|
||||
static Option ANAGLYPH;
|
||||
static Option LIMIT_FRAMERATE;
|
||||
static Option DIFFICULTY;
|
||||
static Option GRAPHICS;
|
||||
static Option AMBIENT_OCCLUSION;
|
||||
static Option GUI_SCALE;
|
||||
};
|
||||
|
||||
public:
|
||||
float field_0;
|
||||
float field_4;
|
||||
float field_8;
|
||||
bool m_bInvertMouse;
|
||||
int field_10; // @NOTE: Render distance?
|
||||
bool field_14;
|
||||
bool m_bAnaglyphs;
|
||||
uint8_t field_16;
|
||||
bool m_bFancyGraphics;
|
||||
uint8_t field_18; // @NOTE: Ambient occlusion?
|
||||
uint8_t field_19;
|
||||
std::string field_1C;
|
||||
KeyBind m_keyBinds[16];
|
||||
|
||||
int field_238;
|
||||
uint8_t field_23C;
|
||||
uint8_t field_23D; // @NOTE: Third person mode?
|
||||
uint8_t field_23E;
|
||||
bool m_bFlyCheat;
|
||||
uint8_t field_240;
|
||||
uint8_t field_241;
|
||||
float field_244;
|
||||
float field_248;
|
||||
int field_24C;
|
||||
std::string m_playerName;
|
||||
bool m_bServerVisibleDefault;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user