Options Logic Cleanup (#71)

* Output/Logging Overhaul
* Added StandardOut class
* Renamed LOGX macros to LOG_X
* Removed LogMsg macros in favor of LOG_X
* Added console window for debug Windows builds

* Options Refactor
* Moved options loading code from AppPlatform classes to Options class
* Added AppPlatform::singleton()
* Minecraft::m_options is now only accessible via Minecraft::getOptions() (as it should be)
* Making this work with SDL2 next

* Options Cleanup for SDL2

* Added AppPlatform::hasFileSystemAccess()
* Options won't try to load if hasFileSystemAccess returns false. Emscripten build will be happy.

---------

Co-authored-by: Brent Da Mage <BrentDaMage@users.noreply.github.com>
This commit is contained in:
Brent
2023-09-04 04:11:36 -05:00
committed by GitHub
parent cd4c469571
commit 2e55f99a54
25 changed files with 355 additions and 275 deletions

View File

@@ -382,12 +382,12 @@ void Gui::handleClick(int clickID, int mouseX, int mouseY)
void Gui::handleKeyPressed(int keyCode)
{
if (m_pMinecraft->m_options.isKey(KM_INVENTORY, keyCode))
if (m_pMinecraft->getOptions()->isKey(KM_INVENTORY, keyCode))
{
m_pMinecraft->setScreen(new IngameBlockSelectionScreen);
return;
}
if (m_pMinecraft->m_options.isKey(KM_SLOT_R, keyCode))
if (m_pMinecraft->getOptions()->isKey(KM_SLOT_R, keyCode))
{
int* slot = &m_pMinecraft->m_pLocalPlayer->m_pInventory->m_SelectedHotbarSlot;
@@ -402,7 +402,7 @@ void Gui::handleKeyPressed(int keyCode)
return;
}
if (m_pMinecraft->m_options.isKey(KM_SLOT_L, keyCode))
if (m_pMinecraft->getOptions()->isKey(KM_SLOT_L, keyCode))
{
int* slot = &m_pMinecraft->m_pLocalPlayer->m_pInventory->m_SelectedHotbarSlot;
@@ -412,12 +412,12 @@ void Gui::handleKeyPressed(int keyCode)
return;
}
if (m_pMinecraft->m_options.isKey(KM_CHAT_CMD, keyCode) || m_pMinecraft->m_options.isKey(KM_CHAT, keyCode))
if (m_pMinecraft->getOptions()->isKey(KM_CHAT_CMD, keyCode) || m_pMinecraft->getOptions()->isKey(KM_CHAT, keyCode))
{
if (m_pMinecraft->m_pScreen)
return;
m_pMinecraft->setScreen(new ChatScreen(m_pMinecraft->m_options.isKey(KM_CHAT_CMD, keyCode)));
m_pMinecraft->setScreen(new ChatScreen(m_pMinecraft->getOptions()->isKey(KM_CHAT_CMD, keyCode)));
return;
}
}

View File

@@ -70,7 +70,7 @@ bool Screen::isInGameScreen()
void Screen::keyPressed(int key)
{
if (m_pMinecraft->m_options.isKey(KM_MENU_CANCEL, key))
if (m_pMinecraft->getOptions()->isKey(KM_MENU_CANCEL, key))
{
m_pMinecraft->setScreen(nullptr);
}
@@ -78,19 +78,19 @@ void Screen::keyPressed(int key)
if (m_buttonTabList.size())
{
#ifndef ENH_HIGHLIGHT_BY_HOVER
if (m_pMinecraft->m_options.isKey(MENU_NEXT, key))
if (m_pMinecraft->getOptions()->isKey(MENU_NEXT, key))
{
m_tabButtonIndex++;
if (m_tabButtonIndex == int(m_buttonTabList.size()))
m_tabButtonIndex = 0;
}
if (m_pMinecraft->m_options.isKey(MENU_PREVIOUS, key))
if (m_pMinecraft->getOptions()->isKey(MENU_PREVIOUS, key))
{
m_tabButtonIndex--;
if (m_tabButtonIndex == -1)
m_tabButtonIndex = int(m_buttonTabList.size() - 1);
}
if (m_pMinecraft->m_options.isKey(MENU_OK, key))
if (m_pMinecraft->getOptions()->isKey(MENU_OK, key))
{
if (m_buttonTabList[m_tabButtonIndex]->m_bEnabled)
{

View File

@@ -60,7 +60,7 @@ void ChatScreen::render(int mouseX, int mouseY, float f)
void ChatScreen::keyPressed(int keyCode)
{
if (m_pMinecraft->m_options.isKey(KM_MENU_OK, keyCode))
if (m_pMinecraft->getOptions()->isKey(KM_MENU_OK, keyCode))
sendMessageAndExit();
Screen::keyPressed(keyCode);

View File

@@ -65,7 +65,7 @@ static std::string ViewDistanceStr(int dist)
void OptionsScreen::UpdateTexts()
{
Options& o = m_pMinecraft->m_options;
Options& o = *(m_pMinecraft->getOptions());
m_AOButton.m_text = "Smooth lighting: " + BoolOptionStr(o.m_bAmbientOcclusion);
m_invertYButton.m_text = "Invert Y-axis: " + BoolOptionStr(o.m_bInvertMouse);
@@ -159,16 +159,13 @@ void OptionsScreen::render(int a, int b, float c)
void OptionsScreen::removed()
{
#ifdef ORIGINAL_CODE // Reloading options will reload the options.txt we introduced. Don't do this
m_pMinecraft->reloadOptions();
#endif
}
#ifndef ORIGINAL_CODE
void OptionsScreen::buttonClicked(Button* pButton)
{
Options& o = m_pMinecraft->m_options;
Options& o = *(m_pMinecraft->getOptions());
bool* pOption = nullptr;
switch (pButton->m_buttonId)

View File

@@ -59,7 +59,7 @@ bool SelectWorldScreen::isInGameScreen()
void SelectWorldScreen::keyPressed(int code)
{
#ifndef ORIGINAL_CODE
if (m_pMinecraft->m_options.getKey(KM_MENU_OK) == code)
if (m_pMinecraft->getOptions()->getKey(KM_MENU_OK) == code)
m_pWorldSelectionList->selectItem(m_pWorldSelectionList->getItemAtPosition(m_width / 2, m_height / 2), false);
m_btnUnknown.field_36 = true;
@@ -67,10 +67,10 @@ void SelectWorldScreen::keyPressed(int code)
if (m_btnUnknown.field_36)
{
if (m_pMinecraft->m_options.getKey(KM_LEFT) == code)
if (m_pMinecraft->getOptions()->getKey(KM_LEFT) == code)
m_pWorldSelectionList->stepLeft();
if (m_pMinecraft->m_options.getKey(KM_RIGHT) == code)
if (m_pMinecraft->getOptions()->getKey(KM_RIGHT) == code)
m_pWorldSelectionList->stepRight();
}