From 3bfd7d9bded05f4850f36cd455ede6f3035594ac Mon Sep 17 00:00:00 2001 From: GabsPuNs Date: Fri, 22 May 2026 23:48:03 -0400 Subject: [PATCH] Menu Progress LaunchMoreOptionsMenu and SettingsGraphicsMenu works now. Change seed dont work. Label update for sliders dont work. InGameHostOptionsMenu is disabled for now. --- Minecraft.Client/Common/UI/UIControl_List.h | 3 + .../Common/UI/UIControl_MultiList.cpp | 9 +- Minecraft.Client/Common/UI/UIControl_list.cpp | 72 ++++++++++- Minecraft.Client/Common/UI/UIScene.cpp | 6 +- Minecraft.Client/Common/UI/UIScene.h | 4 +- .../UI/UIScene_InGameHostOptionsMenu.cpp | 89 +++++++------ .../UI/UIScene_LaunchMoreOptionsMenu.cpp | 107 +++++++--------- .../Common/UI/UIScene_LaunchMoreOptionsMenu.h | 5 +- .../UI/UIScene_SettingsGraphicsMenu.cpp | 121 +++++++----------- .../Common/UI/UIScene_SettingsGraphicsMenu.h | 7 +- 10 files changed, 228 insertions(+), 195 deletions(-) diff --git a/Minecraft.Client/Common/UI/UIControl_List.h b/Minecraft.Client/Common/UI/UIControl_List.h index f6b72a96..2f1c7ebb 100644 --- a/Minecraft.Client/Common/UI/UIControl_List.h +++ b/Minecraft.Client/Common/UI/UIControl_List.h @@ -28,6 +28,9 @@ public: void removeItem(int index); + void SetItemLabel(int index, UIString label, bool applyImmediately); + const wchar_t* GetItemLabel(int index); + int getItemCount(); void setCurrentSelection(int iSelection); diff --git a/Minecraft.Client/Common/UI/UIControl_MultiList.cpp b/Minecraft.Client/Common/UI/UIControl_MultiList.cpp index f5ef9cfb..a7a9f79f 100644 --- a/Minecraft.Client/Common/UI/UIControl_MultiList.cpp +++ b/Minecraft.Client/Common/UI/UIControl_MultiList.cpp @@ -139,7 +139,7 @@ void UIControl_MultiList::AddNewTextInput(UIString label, int id) value[1].type = IGGY_DATATYPE_number; value[1].number = id; - auto out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_initFunc, 2, value); + auto out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcAddNewItemTextInput, 2, value); UIControl_List::addElement(UIControl::eTextInput, id); } @@ -190,8 +190,9 @@ bool UIControl_MultiList::GetCheckboxValue(int index) value[0].type = IGGY_DATATYPE_number; value[0].number = UIControl_List::getListIndex(index); - IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcGetCheckBox, 1, value); - return result.boolval == 1; + auto out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcGetCheckBox, 1, value); + + return result.boolval; } void UIControl_MultiList::SetSliderValue(int index, int value2, bool applyImmediately) @@ -235,7 +236,7 @@ int UIControl_MultiList::GetSliderValue(int index) value[0].type = IGGY_DATATYPE_number; value[0].number = UIControl_List::getListIndex(index); - IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcGetSliderValue, 1, value); + auto out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcGetSliderValue, 1, value); return result.number; } \ No newline at end of file diff --git a/Minecraft.Client/Common/UI/UIControl_list.cpp b/Minecraft.Client/Common/UI/UIControl_list.cpp index 4dd09262..7c6ed306 100644 --- a/Minecraft.Client/Common/UI/UIControl_list.cpp +++ b/Minecraft.Client/Common/UI/UIControl_list.cpp @@ -78,6 +78,61 @@ void UIControl_List::removeItem(int index) --m_itemCount; } +void UIControl_List::SetItemLabel(int index, UIString label, bool applyImmediately) +{ +/* + if (applyImmediately) + { +*/ + int listIndex = getListIndex(index); + + IggyDataValue result; + IggyDataValue value[2]; + + value[0].type = IGGY_DATATYPE_number; + value[0].number = listIndex; + + value[1].type = IGGY_DATATYPE_string_UTF16; + IggyStringUTF16 stringVal; + + stringVal.string = (IggyUTF16*)label.c_str(); + stringVal.length = label.length(); + value[1].string16 = stringVal; + + auto out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcSetItemLabel, 2, value); +/* + } + else + { + UIControl_List::GenericPendingUpdate* update = new UIControl_List::GenericPendingUpdate(); + + update->itemIndex = index; + update->control = this; + update->value2 = value2; + + m_pendingUpdates.push_back(update); + } +*/ +} + +const wchar_t* UIControl_List::GetItemLabel(int index) +{ + int listIndex = getListIndex(index); + + IggyDataValue result; + IggyDataValue value[1]; + + value[0].type = IGGY_DATATYPE_number; + value[0].number = listIndex; + + auto out = IggyPlayerCallMethodRS(m_parentScene->getMovie(), &result, getIggyValuePath(), m_funcGetItemLabel, 1, value); + + if (result.type == IGGY_DATATYPE_string_UTF16) + m_label = wstring((wchar_t *)result.string16.string, result.string16.length); + + return m_label.c_str(); +} + int UIControl_List::getItemCount() { return m_itemCount; @@ -141,16 +196,22 @@ bool UIControl_List::CanTouchTrigger(S32 iX, S32 iY) void UIControl_List::addElement(eUIControlType type, int index) { - //if (index < 0) index = m_elementCount; +/* + if (index < 0) index = m_elementCount; - //m_elementCount++; + m_elementCount++; - //UIControl::setControlType(type); - //m_elements.push_back(index); + m_elementTypes[index] = type; + m_elementActiveStates[index] = true; + m_elementIds.push_back(index); + + return index; +*/ } int UIControl_List::getListIndex(int id) { +/* for (auto it = m_list.begin(); it != m_list.end(); ++it) { if (*it == id) @@ -158,4 +219,7 @@ int UIControl_List::getListIndex(int id) } return -1; +*/ + // Temp Fix + return id; } \ No newline at end of file diff --git a/Minecraft.Client/Common/UI/UIScene.cpp b/Minecraft.Client/Common/UI/UIScene.cpp index 82664329..4cfd45c8 100644 --- a/Minecraft.Client/Common/UI/UIScene.cpp +++ b/Minecraft.Client/Common/UI/UIScene.cpp @@ -1258,7 +1258,7 @@ void UIScene::externalCallback(IggyExternalFunctionCallUTF16 * call) else if(call->num_arguments == 3) { if (call->arguments[0].type == IGGY_DATATYPE_number && call->arguments[1].type == IGGY_DATATYPE_number && call->arguments[2].type == IGGY_DATATYPE_boolean) - return handleCheckboxToggled(call->arguments[0].number, call->arguments[2].boolval); //call->arguments[1].number + return handleCheckboxElementToggled(call->arguments[0].number, call->arguments[1].number, call->arguments[2].boolval); } else { @@ -1284,8 +1284,8 @@ void UIScene::externalCallback(IggyExternalFunctionCallUTF16 * call) } else if(call->num_arguments == 3) { - if (call->arguments[0].type == IGGY_DATATYPE_number && call->arguments[1].type == IGGY_DATATYPE_number) - return handleSliderMove(call->arguments[0].number, call->arguments[1].number); + if (call->arguments[0].type == IGGY_DATATYPE_number && call->arguments[1].type == IGGY_DATATYPE_number && call->arguments[2].type == IGGY_DATATYPE_number) + return handleSliderElementMove(call->arguments[0].number, call->arguments[1].number, call->arguments[2].number); } else { diff --git a/Minecraft.Client/Common/UI/UIScene.h b/Minecraft.Client/Common/UI/UIScene.h index df08e297..57054e1c 100644 --- a/Minecraft.Client/Common/UI/UIScene.h +++ b/Minecraft.Client/Common/UI/UIScene.h @@ -245,9 +245,9 @@ protected: virtual void handlePress(F64 controlId, F64 childId) {} virtual void handleFocusChange(F64 controlId, F64 childId) {} virtual void handleInitFocus(F64 controlId, F64 childId) {} - virtual void handleCheckboxElementToggled(F64 controlId, F64 idk, bool selected) {} + virtual void handleCheckboxElementToggled(F64 controlId, F64 checkboxid, bool checked) {} virtual void handleCheckboxToggled(F64 controlId, bool selected) {} - virtual void handleSliderElementMove(F64 sliderId, F64 currentValue, F64 idk) {} + virtual void handleSliderElementMove(F64 controlId, F64 sliderId, F64 currentValue) {} virtual void handleSliderMove(F64 sliderId, F64 currentValue) {} virtual void handleAnimationEnd() {} virtual void handleSelectionChanged(F64 selectedId) {} diff --git a/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.cpp index b025a459..34cd02e1 100644 --- a/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_InGameHostOptionsMenu.cpp @@ -48,7 +48,7 @@ void UIScene_InGameHostOptionsMenu::Init() m_hostOptionsList.AddNewSlider(TempString, eControl_Difficulty, 0, 3, app.GetGameSettings(m_iPad, eGameSetting_Difficulty)); swprintf_s(TempString, 256, L"Game Mode: %ls", app.GetString(m_iGamemodeTitleSetting[0])); - m_hostOptionsList.AddNewSlider(TempString, eControl_GameType, 0, 2, 0); + m_hostOptionsList.AddNewSlider(TempString, eControl_GameType, 0, 2, app.GetGameHostOption(eGameHostOption_GameType)); m_hostOptionsList.AddNewButton(L"Set World Spawn Point", eControl_PlayerPermissions); @@ -113,31 +113,7 @@ void UIScene_InGameHostOptionsMenu::updateTooltips() void UIScene_InGameHostOptionsMenu::handleReload() { - UIScene::handleReload(); - -/* - // If cheats are disabled, remove checkboxes - if (!app.GetGameHostOption(eGameHostOption_CheatsEnabled)) - { - removeControl(&m_checkboxMobGriefing, true); - removeControl(&m_checkboxKeepInventory, true); - removeControl(&m_checkboxDoMobSpawning, true); - removeControl(&m_checkboxDoDaylightCycle, true); - } -*/ - - INetworkPlayer *localPlayer = g_NetworkManager.GetLocalPlayerByUserIndex( m_iPad ); - if (!localPlayer) - return; - - unsigned int privs = app.GetPlayerPrivileges(localPlayer->GetSmallId()); - const bool canTeleport = app.GetGameHostOption(eGameHostOption_CheatsEnabled) && Player::getPlayerGamePrivilege(privs, Player::ePlayerGamePrivilege_CanTeleport) && g_NetworkManager.GetPlayerCount() > 1; - - if(!canTeleport) - { - //removeControl(&m_buttonTeleportToPlayer, true); - //removeControl(&m_buttonTeleportToMe, true); - } + Init(); } void UIScene_InGameHostOptionsMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled) @@ -148,33 +124,64 @@ void UIScene_InGameHostOptionsMenu::handleInput(int iPad, int key, bool repeat, case ACTION_MENU_CANCEL: if(pressed) { + //Disable this for now /* unsigned int hostOptions = app.GetGameHostOption(eGameHostOption_All); - app.SetGameHostOption(hostOptions, eGameHostOption_FireSpreads, m_checkboxFireSpreads.IsChecked()); - app.SetGameHostOption(hostOptions, eGameHostOption_TNT, m_checkboxTNT.IsChecked()); - app.SetGameHostOption(hostOptions, eGameHostOption_DoMobLoot, m_checkboxDoMobLoot.IsChecked()); - app.SetGameHostOption(hostOptions, eGameHostOption_DoTileDrops, m_checkboxDoTileDrops.IsChecked()); - app.SetGameHostOption(hostOptions, eGameHostOption_NaturalRegeneration, m_checkboxNaturalRegeneration.IsChecked()); + app.SetGameHostOption(hostOptions, eGameHostOption_FireSpreads, m_hostOptionsList.GetCheckboxValue(eControl_FireSpreads)); + app.SetGameHostOption(hostOptions, eGameHostOption_TNT, m_hostOptionsList.GetCheckboxValue(eControl_TNT)); + app.SetGameHostOption(hostOptions, eGameHostOption_DoMobLoot, m_hostOptionsList.GetCheckboxValue(eControl_DoMobLoot)); + app.SetGameHostOption(hostOptions, eGameHostOption_DoTileDrops, m_hostOptionsList.GetCheckboxValue(eControl_DoTileDrops)); + app.SetGameHostOption(hostOptions, eGameHostOption_NaturalRegeneration, m_hostOptionsList.GetCheckboxValue(eControl_NaturalRegeneration)); // If cheats are enabled, set cheat values if (app.GetGameHostOption(eGameHostOption_CheatsEnabled)) { - app.SetGameHostOption(hostOptions, eGameHostOption_MobGriefing, m_checkboxMobGriefing.IsChecked()); - app.SetGameHostOption(hostOptions, eGameHostOption_KeepInventory, m_checkboxKeepInventory.IsChecked()); - app.SetGameHostOption(hostOptions, eGameHostOption_DoMobSpawning, m_checkboxDoMobSpawning.IsChecked()); - app.SetGameHostOption(hostOptions, eGameHostOption_DoDaylightCycle, m_checkboxDoDaylightCycle.IsChecked()); + app.SetGameHostOption(hostOptions, eGameHostOption_MobGriefing, m_hostOptionsList.GetCheckboxValue(eControl_MobGriefing)); + app.SetGameHostOption(hostOptions, eGameHostOption_KeepInventory, m_hostOptionsList.GetCheckboxValue(eControl_KeepInventory)); + app.SetGameHostOption(hostOptions, eGameHostOption_DoMobSpawning, m_hostOptionsList.GetCheckboxValue(eControl_DoMobSpawning)); + //app.SetGameHostOption(hostOptions, eGameHostOption_DoDaylightCycle, m_hostOptionsList.GetCheckboxValue(eControl_DoDayLightCycle)); + + auto pMinecraft = Minecraft::GetInstance(); + auto localPlayer = pMinecraft->localplayers[m_iPad]; + + int oldDifficulty = app.GetGameSettings(m_iPad, eGameSetting_Difficulty); + int newDifficulty = m_hostOptionsList.GetSliderValue(eControl_Difficulty); + if (oldDifficulty != newDifficulty && localPlayer && localPlayer->connection) + { + //GameDifficultyCommand packet(newDifficulty); + //localPlayer->connection->send(packet); + } + + int oldGameMode = app.GetGameHostOption(eGameHostOption_GameType); + int newGameMode = m_hostOptionsList.GetSliderValue(eControl_GameType); + if (oldGameMode != newGameMode && localPlayer && localPlayer->connection) + { + //DefaultGameModeCommand packet(newGameMode); + //localPlayer->connection->send(packet); + } + + auto level = pMinecraft->getLevel(0); + if (level) + { + int oldWeather = level->getWeatherState(); + int newWeather = m_hostOptionsList.GetSliderValue(eControl_Weather); + if (oldWeather != newWeather && localPlayer && localPlayer->connection) + { + //WeatherCommand packet(newWeather); + //localPlayer->connection->send(packet); + } + } } // Send update settings packet to server if(hostOptions != app.GetGameHostOption(eGameHostOption_All) ) { - Minecraft *pMinecraft = Minecraft::GetInstance(); - shared_ptr player = pMinecraft->localplayers[m_iPad]; - if(player->connection) - player->connection->send(std::make_shared(ServerSettingsChangedPacket::HOST_IN_GAME_SETTINGS, hostOptions)); + auto *pMinecraft = Minecraft::GetInstance(); + auto localPlayer = pMinecraft->localplayers[m_iPad]; + if(localPlayer->connection) + localPlayer->connection->send(std::make_shared(ServerSettingsChangedPacket::HOST_IN_GAME_SETTINGS, hostOptions)); } */ - navigateBack(); handled = true; @@ -198,7 +205,7 @@ void UIScene_InGameHostOptionsMenu::handlePress(F64 controlId, F64 childId) auto *initData = new TeleportMenuInitData(); initData->iPad = m_iPad; initData->teleportToPlayer = false; - if( static_cast(controlId) == eControl_TeleportToPlayer ) + if( static_cast(childId) == eControl_TeleportToPlayer ) initData->teleportToPlayer = true; ui.NavigateToScene(m_iPad,eUIScene_TeleportMenu,(void*)initData); diff --git a/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.cpp index 3c96bf24..9a1f59f1 100644 --- a/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.cpp @@ -81,28 +81,7 @@ UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *ini m_bUpdateCheats = false; // Update cheat checkboxes UpdateCheats(); -/* - m_checkboxes[eLaunchCheckbox_Online].init(app.GetString(IDS_ONLINE_GAME),eLaunchCheckbox_Online,bOnlineGame); - m_checkboxes[eLaunchCheckbox_InviteOnly].init(app.GetString(IDS_INVITE_ONLY),eLaunchCheckbox_InviteOnly,bInviteOnly); - m_checkboxes[eLaunchCheckbox_AllowFoF].init(app.GetString(IDS_ALLOWFRIENDSOFFRIENDS),eLaunchCheckbox_AllowFoF,bAllowFriendsOfFriends); - m_checkboxes[eLaunchCheckbox_PVP].init(app.GetString(IDS_PLAYER_VS_PLAYER),eLaunchCheckbox_PVP,m_params->bPVP); - m_checkboxes[eLaunchCheckbox_TrustSystem].init(app.GetString(IDS_TRUST_PLAYERS),eLaunchCheckbox_TrustSystem,m_params->bTrust); - m_checkboxes[eLaunchCheckbox_FireSpreads].init(app.GetString(IDS_FIRE_SPREADS),eLaunchCheckbox_FireSpreads,m_params->bFireSpreads); - m_checkboxes[eLaunchCheckbox_TNT].init(app.GetString(IDS_TNT_EXPLODES),eLaunchCheckbox_TNT,m_params->bTNT); - m_checkboxes[eLaunchCheckbox_HostPrivileges].init(app.GetString(IDS_HOST_PRIVILEGES),eLaunchCheckbox_HostPrivileges,m_params->bHostPrivileges); - m_checkboxes[eLaunchCheckbox_ResetNether].init(app.GetString(IDS_RESET_NETHER),eLaunchCheckbox_ResetNether,m_params->bResetNether); - m_checkboxes[eLaunchCheckbox_Structures].init(app.GetString(IDS_GENERATE_STRUCTURES),eLaunchCheckbox_Structures,m_params->bStructures); - m_checkboxes[eLaunchCheckbox_FlatWorld].init(app.GetString(IDS_SUPERFLAT_WORLD),eLaunchCheckbox_FlatWorld,m_params->bFlatWorld); - m_checkboxes[eLaunchCheckbox_BonusChest].init(app.GetString(IDS_BONUS_CHEST),eLaunchCheckbox_BonusChest,m_params->bBonusChest); - m_checkboxes[eLaunchCheckbox_KeepInventory].init(app.GetString(IDS_KEEP_INVENTORY), eLaunchCheckbox_KeepInventory, m_params->bKeepInventory); - m_checkboxes[eLaunchCheckbox_MobSpawning].init(app.GetString(IDS_MOB_SPAWNING), eLaunchCheckbox_MobSpawning, m_params->bDoMobSpawning); - m_checkboxes[eLaunchCheckbox_MobLoot].init(app.GetString(IDS_MOB_LOOT), eLaunchCheckbox_MobLoot, m_params->bDoMobLoot); - m_checkboxes[eLaunchCheckbox_MobGriefing].init(app.GetString(IDS_MOB_GRIEFING), eLaunchCheckbox_MobGriefing, m_params->bMobGriefing); - m_checkboxes[eLaunchCheckbox_TileDrops].init(app.GetString(IDS_TILE_DROPS), eLaunchCheckbox_TileDrops, m_params->bDoTileDrops); - m_checkboxes[eLaunchCheckbox_NaturalRegeneration].init(app.GetString(IDS_NATURAL_REGEN), eLaunchCheckbox_NaturalRegeneration, m_params->bNaturalRegeneration); - m_checkboxes[eLaunchCheckbox_DayLightCycle].init(app.GetString(IDS_DAYLIGHT_CYCLE), eLaunchCheckbox_DayLightCycle, m_params->bDoDaylightCycle); -*/ m_labelGameOptions.init(app.GetString(IDS_GAME_OPTIONS)); m_worldOptionsList.AddNewLabel(app.GetString(IDS_CREATE_NEW_WORLD_SEED)); @@ -119,12 +98,25 @@ UIScene_LaunchMoreOptionsMenu::UIScene_LaunchMoreOptionsMenu(int iPad, void *ini m_worldOptionsList.AddNewCheckbox(app.GetString(IDS_SUPERFLAT_WORLD), eLaunchCheckbox_FlatWorld, m_params->bFlatWorld); m_worldOptionsList.AddNewButton(L"Customize Superflat", 22); - //m_worldOptionsList.AddNewCheckbox(app.GetString(IDS_RESET_NETHER), eLaunchCheckbox_ResetNether, m_params->bResetNether); + m_worldOptionsList.AddNewCheckbox(app.GetString(IDS_RESET_NETHER), eLaunchCheckbox_ResetNether, m_params->bResetNether); m_worldOptionsList.AddNewCheckbox(app.GetString(IDS_DISABLE_SAVING), eLaunchCheckbox_DisableSaving, m_params->bDisableSaving); m_worldOptionsList.AddNewCheckbox(app.GetString(IDS_TRUST_PLAYERS), eLaunchCheckbox_TrustSystem, m_params->bTrust); m_worldOptionsList.AddNewCheckbox(app.GetString(IDS_FIRE_SPREADS), eLaunchCheckbox_FireSpreads, m_params->bFireSpreads); m_worldOptionsList.AddNewCheckbox(app.GetString(IDS_TNT_EXPLODES), eLaunchCheckbox_TNT, m_params->bTNT); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_ONLINE_GAME), eLaunchCheckbox_Online, bOnlineGame); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_INVITE_ONLY), eLaunchCheckbox_InviteOnly, bInviteOnly); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_ALLOWFRIENDSOFFRIENDS), eLaunchCheckbox_AllowFoF, bAllowFriendsOfFriends); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_PLAYER_VS_PLAYER), eLaunchCheckbox_PVP, m_params->bPVP); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_HOST_PRIVILEGES), eLaunchCheckbox_HostPrivileges, m_params->bHostPrivileges); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_DAYLIGHT_CYCLE), eLaunchCheckbox_DayLightCycle, m_params->bDoDaylightCycle); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_KEEP_INVENTORY), eLaunchCheckbox_KeepInventory, m_params->bKeepInventory); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_MOB_SPAWNING), eLaunchCheckbox_MobSpawning, m_params->bDoMobSpawning); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_MOB_GRIEFING), eLaunchCheckbox_MobGriefing, m_params->bMobGriefing); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_MOB_LOOT), eLaunchCheckbox_MobLoot, m_params->bDoMobLoot); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_TILE_DROPS), eLaunchCheckbox_TileDrops, m_params->bDoTileDrops); + m_gameOptionsList.AddNewCheckbox(app.GetString(IDS_NATURAL_REGEN), eLaunchCheckbox_NaturalRegeneration, m_params->bNaturalRegeneration); + /* #ifdef _LARGE_WORLDS m_labelWorldSize.init(app.GetString(IDS_WORLD_SIZE)); @@ -251,11 +243,8 @@ void UIScene_LaunchMoreOptionsMenu::handleDestroy() void UIScene_LaunchMoreOptionsMenu::handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled) { if(m_bIgnoreInput) return; -#ifdef _WINDOWS64 if (isDirectEditBlocking()) return; -#endif - //app.DebugPrintf("UIScene_DebugOverlay handling input for pad %d, key %d, down- %s, pressed- %s, released- %s\n", iPad, key, down?"TRUE":"FALSE", pressed?"TRUE":"FALSE", released?"TRUE":"FALSE"); ui.AnimateKeyPress(m_iPad, key, repeat, pressed, released); switch(key) @@ -303,78 +292,76 @@ UIControl* UIScene_LaunchMoreOptionsMenu::GetMainPanel() } #endif -void UIScene_LaunchMoreOptionsMenu::handleCheckboxElementToggled(F64 controlId, F64 idk, bool selected) +void UIScene_LaunchMoreOptionsMenu::handleCheckboxElementToggled(F64 controlId, F64 checkboxid, bool checked) { //CD - Added for audio ui.PlayUISFX(eSFX_Press); - switch(static_cast((int)controlId)) + switch(static_cast(checkboxid)) { case eLaunchCheckbox_Online: - m_params->bOnlineGame = selected; + m_params->bOnlineGame = checked; m_bUpdateOnline = true; break; case eLaunchCheckbox_InviteOnly: - m_params->bInviteOnly = selected; + m_params->bInviteOnly = checked; break; case eLaunchCheckbox_AllowFoF: - m_params->bAllowFriendsOfFriends = selected; + m_params->bAllowFriendsOfFriends = checked; break; case eLaunchCheckbox_PVP: - m_params->bPVP = selected; + m_params->bPVP = checked; break; case eLaunchCheckbox_TrustSystem: - m_params->bTrust = selected; + m_params->bTrust = checked; break; case eLaunchCheckbox_FireSpreads: - m_params->bFireSpreads = selected; + m_params->bFireSpreads = checked; break; case eLaunchCheckbox_TNT: - m_params->bTNT = selected; + m_params->bTNT = checked; break; case eLaunchCheckbox_HostPrivileges: - m_params->bHostPrivileges = selected; + m_params->bHostPrivileges = checked; m_bUpdateCheats = true; break; case eLaunchCheckbox_ResetNether: - m_params->bResetNether = selected; + m_params->bResetNether = checked; break; case eLaunchCheckbox_Structures: - m_params->bStructures = selected; + m_params->bStructures = checked; break; case eLaunchCheckbox_FlatWorld: - m_params->bFlatWorld = selected; + m_params->bFlatWorld = checked; break; case eLaunchCheckbox_BonusChest: - m_params->bBonusChest = selected; + m_params->bBonusChest = checked; break; -#ifdef _LARGE_WORLDS case eLaunchCheckbox_DisableSaving: - m_params->bDisableSaving = selected; + m_params->bDisableSaving = checked; break; case eLaunchCheckbox_WorldResizeType: - m_params->newWorldSizeOverwriteEdges = selected; + m_params->newWorldSizeOverwriteEdges = checked; break; -#endif case eLaunchCheckbox_KeepInventory: - m_params->bKeepInventory = selected; + m_params->bKeepInventory = checked; break; case eLaunchCheckbox_MobSpawning: - m_params->bDoMobSpawning = selected; + m_params->bDoMobSpawning = checked; break; case eLaunchCheckbox_MobLoot: - m_params->bDoMobLoot = selected; + m_params->bDoMobLoot = checked; case eLaunchCheckbox_MobGriefing: - m_params->bMobGriefing = selected; + m_params->bMobGriefing = checked; break; case eLaunchCheckbox_TileDrops: - m_params->bDoTileDrops = selected; + m_params->bDoTileDrops = checked; break; case eLaunchCheckbox_NaturalRegeneration: - m_params->bNaturalRegeneration = selected; + m_params->bNaturalRegeneration = checked; break; case eLaunchCheckbox_DayLightCycle: - m_params->bDoDaylightCycle = selected; + m_params->bDoDaylightCycle = checked; break; }; } @@ -382,7 +369,7 @@ void UIScene_LaunchMoreOptionsMenu::handleCheckboxElementToggled(F64 controlId, void UIScene_LaunchMoreOptionsMenu::handleFocusChange(F64 controlId, F64 childId) { int stringId = 0; - switch(static_cast(controlId)) + switch(static_cast(childId)) { case eLaunchCheckbox_Online: stringId = IDS_GAMEOPTION_ONLINE; @@ -444,7 +431,6 @@ void UIScene_LaunchMoreOptionsMenu::handleFocusChange(F64 controlId, F64 childId case eControl_EditSeed: stringId = IDS_GAMEOPTION_SEED; break; -#ifdef _LARGE_WORLDS case eControl_WorldSize: stringId = IDS_GAMEOPTION_WORLD_SIZE; break; @@ -457,14 +443,13 @@ void UIScene_LaunchMoreOptionsMenu::handleFocusChange(F64 controlId, F64 childId case eLaunchCheckbox_WorldResizeType: stringId = IDS_GAMEOPTION_INCREASE_WORLD_SIZE_OVERWRITE_EDGES; break; -#endif }; UpdateDescriptionText(stringId); } /* -void UIScene_LaunchMoreOptionsMenu::handleGainFocus(F64 controlId, F64 childId) +void UIScene_LaunchMoreOptionsMenu::handleGainFocus(int stringId) { UpdateDescriptionText(stringId); } @@ -535,28 +520,24 @@ void UIScene_LaunchMoreOptionsMenu::handlePress(F64 controlId, F64 childId) } -void UIScene_LaunchMoreOptionsMenu::handleSliderElementMove(F64 sliderId, F64 currentValue, F64 idk) +void UIScene_LaunchMoreOptionsMenu::handleSliderElementMove(F64 controlId, F64 sliderId, F64 currentValue) { int value = static_cast(currentValue); switch(static_cast(sliderId)) { case eControl_WorldSize: -#ifdef _LARGE_WORLDS - m_sliderWorldSize.handleSliderMove(value); + m_worldOptionsList.SetSliderValue(sliderId, value, true); m_params->worldSize = value; - m_sliderWorldSize.setLabel(app.GetString(m_iWorldSizeTitleA[value])); -#endif + //m_sliderWorldSize.setLabel(app.GetString(m_iWorldSizeTitleA[value])); break; case eControl_WorldResize: -#ifdef _LARGE_WORLDS EGameHostOptionWorldSize changedSize = static_cast(value + 1); if(changedSize >= m_params->currentWorldSize) { - m_sliderWorldResize.handleSliderMove(value); + m_worldOptionsList.SetSliderValue(sliderId, value, true); m_params->newWorldSize = static_cast(value + 1); - m_sliderWorldResize.setLabel(app.GetString(m_iWorldSizeTitleA[value])); + //m_sliderWorldResize.setLabel(app.GetString(m_iWorldSizeTitleA[value])); } -#endif break; } } diff --git a/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.h b/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.h index e930987f..ba4a32e6 100644 --- a/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.h +++ b/Minecraft.Client/Common/UI/UIScene_LaunchMoreOptionsMenu.h @@ -73,6 +73,7 @@ private: #ifdef __PSVITA__ UI_MAP_ELEMENT( m_TouchTabGame, "TouchTabGame" ) #endif + UI_MAP_ELEMENT(m_gameOptionsList, "GameOptionsList") UI_MAP_ELEMENT( m_labelDescription_GameOptions, "Description_GameOptions") UI_END_MAP_CHILD_ELEMENTS() @@ -119,11 +120,9 @@ public: virtual void handleTimerComplete(int id); static int KeyboardCompleteSeedCallback(LPVOID lpParam,const bool bRes); virtual void handlePress(F64 controlId, F64 childId); + virtual void handleCheckboxElementToggled(F64 controlId, F64 checkboxid, bool checked); virtual void handleSliderElementMove(F64 sliderId, F64 currentValue, F64 idk); -protected: - void handleCheckboxElementToggled(F64 controlId, F64 idk, bool selected); - private: bool m_bUpdateCheats; // If true, update cheats on next tick void UpdateCheats(); diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp index db4823f8..ce38e49c 100644 --- a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.cpp @@ -77,6 +77,8 @@ UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initD m_tabIndex = TAB_GENERAL_OPTIONS; + m_generalOptionsList.AddNewCheckbox(app.GetString(IDS_CHECKBOX_FULLSCREEN),eControl_Fullscreen,(app.GetGameSettings(m_iPad,eGameSetting_Fullscreen))); + m_generalOptionsList.AddNewCheckbox(app.GetString(IDS_CHECKBOX_VSYNC),eControl_Vsync,(app.GetGameSettings(m_iPad,eGameSetting_Vsync)!=0)); m_generalOptionsList.AddNewCheckbox(app.GetString(IDS_CHECKBOX_CUSTOM_SKIN_ANIM),eControl_CustomSkinAnim,(app.GetGameSettings(m_iPad,eGameSetting_CustomSkinAnim)!=0)); WCHAR TempString[256]; @@ -102,37 +104,10 @@ UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initD swprintf(TempString, 256, L"%ls: %ls", app.GetString( IDS_GRAPHICS ),app.GetString(m_iGraphicsModeTitleSettingA[app.GetGameSettings(m_iPad,eGameSetting_GraphicsMode)])); m_qualityOptionsList.AddNewSlider(TempString, eControl_GraphicsMode, 0, 3, currentGraphics); -/* Minecraft* pMinecraft = Minecraft::GetInstance(); m_bNotInGame=(Minecraft::GetInstance()->level==nullptr); - m_checkboxClouds.init(app.GetString(IDS_CHECKBOX_RENDER_CLOUDS),eControl_Clouds,(app.GetGameSettings(m_iPad,eGameSetting_Clouds)!=0)); - m_checkboxBedrockFog.init(app.GetString(IDS_CHECKBOX_RENDER_BEDROCKFOG),eControl_BedrockFog,(app.GetGameSettings(m_iPad,eGameSetting_BedrockFog)!=0)); - m_checkboxCustomSkinAnim.init(app.GetString(IDS_CHECKBOX_CUSTOM_SKIN_ANIM),eControl_CustomSkinAnim,(app.GetGameSettings(m_iPad,eGameSetting_CustomSkinAnim)!=0)); - - - WCHAR TempString[256]; - - swprintf( TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_GAMMA ),app.GetGameSettings(m_iPad,eGameSetting_Gamma)); - m_sliderGamma.init(TempString,eControl_Gamma,0,100,app.GetGameSettings(m_iPad,eGameSetting_Gamma)); - - const int initialFovSlider = app.GetGameSettings(m_iPad, eGameSetting_FOV); - const int initialFovDeg = sliderValueToFov(initialFovSlider); - swprintf(TempString, 256, L"%ls: %d", app.GetString( IDS_SLIDER_FOV ),initialFovDeg); - m_sliderFOV.init(TempString, eControl_FOV, 0, FOV_SLIDER_MAX, initialFovSlider); - - swprintf( TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_INTERFACEOPACITY ),app.GetGameSettings(m_iPad,eGameSetting_InterfaceOpacity)); - m_sliderInterfaceOpacity.init(TempString,eControl_InterfaceOpacity,0,100,app.GetGameSettings(m_iPad,eGameSetting_InterfaceOpacity)); - - swprintf(TempString, 256, L"%ls: %d", app.GetString( IDS_SLIDER_RENDERDISTANCE ),app.GetGameSettings(m_iPad,eGameSetting_RenderDistance)); - m_sliderRenderDistance.init(TempString,eControl_RenderDistance,0,3,DistanceToLevel(app.GetGameSettings(m_iPad,eGameSetting_RenderDistance))); - - int currentGraphics = app.GetGameSettings(m_iPad, eGameSetting_GraphicsMode); - - swprintf(TempString, 256, L"%ls %ls", app.GetString( IDS_GRAPHICS ),app.GetString(m_iGraphicsModeTitleSettingA[app.GetGameSettings(m_iPad,eGameSetting_GraphicsMode)])); - m_sliderGraphicsMode.init(TempString, eControl_GraphicsMode, 0, 3, currentGraphics); - doHorizontalResizeCheck(); const bool bInGame=(Minecraft::GetInstance()->level!=nullptr); @@ -148,24 +123,16 @@ UIScene_SettingsGraphicsMenu::UIScene_SettingsGraphicsMenu(int iPad, void *initD if(!g_NetworkManager.IsHost()) { // hide the in-game bedrock fog setting - removeControl(&m_checkboxBedrockFog, true); + m_qualityOptionsList.removeItem(eControl_BedrockFog); } } else { // We shouldn't have the bedrock fog option, or the m_CustomSkinAnim option - removeControl(&m_checkboxBedrockFog, true); - removeControl(&m_checkboxCustomSkinAnim, true); + m_qualityOptionsList.removeItem(eControl_BedrockFog); + m_generalOptionsList.removeItem(eControl_CustomSkinAnim); } } - - if(app.GetLocalPlayerCount()>1) - { -#if TO_BE_IMPLEMENTED - app.AdjustSplitscreenScene(m_hObj,&m_OriginalPosition,m_iPad); -#endif - } -*/ } void UIScene_SettingsGraphicsMenu::updateTooltips() @@ -211,24 +178,18 @@ void UIScene_SettingsGraphicsMenu::handleInput(int iPad, int key, bool repeat, b { if (isDirectEditBlocking()) return; -// UIControl_MultiList* test; - ui.AnimateKeyPress(iPad, key, repeat, pressed, released); + switch(key) { case ACTION_MENU_CANCEL: if(pressed) { -/* - // check the checkboxes - app.SetGameSettings(m_iPad,eGameSetting_Clouds,test->GetCheckboxValue(5)); - app.SetGameSettings(m_iPad,eGameSetting_BedrockFog,test->GetCheckboxValue(6)); - app.SetGameSettings(m_iPad,eGameSetting_CustomSkinAnim,test->GetCheckboxValue(0)); -*/ navigateBack(); handled = true; } break; + case ACTION_MENU_OK: case ACTION_MENU_UP: case ACTION_MENU_DOWN: case ACTION_MENU_LEFT: @@ -238,7 +199,7 @@ void UIScene_SettingsGraphicsMenu::handleInput(int iPad, int key, bool repeat, b case ACTION_MENU_OTHER_STICK_UP: case ACTION_MENU_OTHER_STICK_DOWN: sendInputToMovie(key, repeat, pressed, released); - handled = true; //test + handled = true; break; case ACTION_MENU_LEFT_SCROLL: case ACTION_MENU_RIGHT_SCROLL: @@ -262,67 +223,81 @@ UIControl* UIScene_SettingsGraphicsMenu::GetMainPanel() return &m_qualityOptions; } -void UIScene_SettingsGraphicsMenu::handleSliderMove(F64 sliderId, F64 currentValue) +void UIScene_SettingsGraphicsMenu::handleCheckboxElementToggled(F64 controlId, F64 checkboxid, bool checked) +{ + switch(static_cast(checkboxid)) + { + case eControl_Fullscreen: + app.SetGameSettings(m_iPad,eGameSetting_Fullscreen,static_cast(checked)); + break; + case eControl_Vsync: + app.SetGameSettings(m_iPad,eGameSetting_Vsync,static_cast(checked)); + break; + case eControl_CustomSkinAnim: + app.SetGameSettings(m_iPad,eGameSetting_CustomSkinAnim,static_cast(checked)); + break; + case eControl_Clouds: + app.SetGameSettings(m_iPad,eGameSetting_Clouds,static_cast(checked)); + break; + case eControl_BedrockFog: + app.SetGameSettings(m_iPad,eGameSetting_BedrockFog,static_cast(checked)); + break; + }; +} + +void UIScene_SettingsGraphicsMenu::handleSliderElementMove(F64 controlId, F64 sliderId, F64 currentValue) { WCHAR TempString[256]; const int value = static_cast(currentValue); switch(static_cast(sliderId)) { case eControl_Gamma: - //m_sliderGamma.handleSliderMove(value); - + m_generalOptionsList.SetSliderValue(sliderId, value, true); + app.SetGameSettings(m_iPad,eGameSetting_Gamma,value); swprintf( TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_GAMMA ),value); - //m_sliderGamma.setLabel(TempString); - + m_generalOptionsList.SetItemLabel(sliderId, TempString, true); break; - case eControl_FOV: { - //m_sliderFOV.handleSliderMove(value); + m_generalOptionsList.SetSliderValue(sliderId, value, true); + const Minecraft* pMinecraft = Minecraft::GetInstance(); const int fovValue = sliderValueToFov(value); pMinecraft->gameRenderer->SetFovVal(static_cast(fovValue)); app.SetGameSettings(m_iPad, eGameSetting_FOV, value); swprintf(TempString, 256, L"%ls: %d", app.GetString( IDS_SLIDER_FOV ),fovValue); - //m_sliderFOV.setLabel(TempString); + m_generalOptionsList.SetItemLabel(sliderId, TempString, true); } break; - case eControl_InterfaceOpacity: - //m_sliderInterfaceOpacity.handleSliderMove(value); + m_generalOptionsList.SetSliderValue(sliderId, value, true); app.SetGameSettings(m_iPad,eGameSetting_InterfaceOpacity,value); swprintf( TempString, 256, L"%ls: %d%%", app.GetString( IDS_SLIDER_INTERFACEOPACITY ),value); - //m_sliderInterfaceOpacity.setLabel(TempString); - + m_generalOptionsList.SetItemLabel(sliderId, TempString, true); break; - case eControl_RenderDistance: { - //m_sliderRenderDistance.handleSliderMove(value); + m_generalOptionsList.SetSliderValue(sliderId, value, true); const int dist = LevelToDistance(value); - app.SetGameSettings(m_iPad,eGameSetting_RenderDistance,dist); const Minecraft* mc = Minecraft::GetInstance(); mc->options->viewDistance = 3 - value; swprintf(TempString,256,L"%ls: %d", app.GetString( IDS_SLIDER_RENDERDISTANCE ),dist); - //m_sliderRenderDistance.setLabel(TempString); + m_generalOptionsList.SetItemLabel(sliderId, TempString, true); } break; - case eControl_GraphicsMode: - { - //m_sliderGraphicsMode.handleSliderMove(value); + { + m_qualityOptionsList.SetSliderValue(sliderId, value, true); - app.SetGameSettings(m_iPad, eGameSetting_GraphicsMode, value); - - swprintf(TempString, 256, L"%ls: %ls", app.GetString( IDS_GRAPHICS ),app.GetString(m_iGraphicsModeTitleSettingA[value])); - - //m_sliderGraphicsMode.setLabel(TempString); - } - break; + app.SetGameSettings(m_iPad, eGameSetting_GraphicsMode, value); + swprintf(TempString, 256, L"%ls: %ls", app.GetString( IDS_GRAPHICS ),app.GetString(m_iGraphicsModeTitleSettingA[value])); + m_generalOptionsList.SetItemLabel(sliderId, TempString, true); + } + break; } } \ No newline at end of file diff --git a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h index 3b5ffa8e..894089fe 100644 --- a/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h +++ b/Minecraft.Client/Common/UI/UIScene_SettingsGraphicsMenu.h @@ -13,9 +13,11 @@ private: enum EControls { + eControl_Fullscreen, + eControl_Vsync, + eControl_CustomSkinAnim, eControl_Clouds, eControl_BedrockFog, - eControl_CustomSkinAnim, eControl_Gamma, eControl_FOV, eControl_InterfaceOpacity, @@ -64,7 +66,8 @@ protected: public: // INPUT virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled); - virtual void handleSliderMove(F64 sliderId, F64 currentValue); + virtual void handleCheckboxElementToggled(F64 controlId, F64 checkboxid, bool checked); + virtual void handleSliderElementMove(F64 controlId, F64 sliderId, F64 currentValue); static int LevelToDistance(int dist);