mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-25 11:33:37 +00:00
DWORD→uint32_t, BYTE→uint8_t, HRESULT→int32_t, HANDLE→void*, UINT→uint32_t, INT→int32_t, WORD→uint16_t, LONG→int32_t, SHORT→int16_t, LONGLONG→int64_t, ULONG_PTR→uintptr_t, PBYTE→uint8_t*, LPWSTR/PWSTR→wchar_t*, FLOAT→float, CHAR→char, boolean→bool, CONST→const, TRUE→true, FALSE→false across 176 files (excluding vendor libs and Linux stubs).
185 lines
8.3 KiB
C++
185 lines
8.3 KiB
C++
#include "../../Minecraft.World/Platform/stdafx.h"
|
|
#include "UI.h"
|
|
#include "UIScene_InGameHostOptionsMenu.h"
|
|
#include "../../Minecraft.Client/Minecraft.h"
|
|
#include "../../Minecraft.Client/Player/MultiPlayerLocalPlayer.h"
|
|
#include "../../Minecraft.Client/Network/ClientConnection.h"
|
|
#include "../../Minecraft.World/Headers/net.minecraft.network.h"
|
|
#include "../../Minecraft.World/Headers/net.minecraft.network.packet.h"
|
|
|
|
UIScene_InGameHostOptionsMenu::UIScene_InGameHostOptionsMenu(
|
|
int iPad, void* initData, UILayer* parentLayer)
|
|
: UIScene(iPad, parentLayer) {
|
|
// Setup all the Iggy references we need for this scene
|
|
initialiseMovie();
|
|
|
|
m_checkboxFireSpreads.init(
|
|
app.GetString(IDS_FIRE_SPREADS), eControl_FireSpreads,
|
|
app.GetGameHostOption(eGameHostOption_FireSpreads) != 0);
|
|
m_checkboxTNT.init(app.GetString(IDS_TNT_EXPLODES), eControl_TNT,
|
|
app.GetGameHostOption(eGameHostOption_TNT) != 0);
|
|
|
|
m_checkboxDoMobLoot.init(app.GetString(IDS_MOB_LOOT), eControl_DoMobLoot,
|
|
app.GetGameHostOption(eGameHostOption_DoMobLoot));
|
|
m_checkboxDoTileDrops.init(
|
|
app.GetString(IDS_TILE_DROPS), eControl_DoTileDrops,
|
|
app.GetGameHostOption(eGameHostOption_DoTileDrops));
|
|
m_checkboxNaturalRegeneration.init(
|
|
app.GetString(IDS_NATURAL_REGEN), eControl_NaturalRegeneration,
|
|
app.GetGameHostOption(eGameHostOption_NaturalRegeneration));
|
|
|
|
// 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);
|
|
}
|
|
|
|
m_checkboxMobGriefing.init(
|
|
app.GetString(IDS_MOB_GRIEFING), eControl_MobGriefing,
|
|
app.GetGameHostOption(eGameHostOption_MobGriefing));
|
|
m_checkboxKeepInventory.init(
|
|
app.GetString(IDS_KEEP_INVENTORY), eControl_KeepInventory,
|
|
app.GetGameHostOption(eGameHostOption_KeepInventory));
|
|
m_checkboxDoMobSpawning.init(
|
|
app.GetString(IDS_MOB_SPAWNING), eControl_DoMobSpawning,
|
|
app.GetGameHostOption(eGameHostOption_DoMobSpawning));
|
|
m_checkboxDoDaylightCycle.init(
|
|
app.GetString(IDS_DAYLIGHT_CYCLE), eControl_DoDaylightCycle,
|
|
app.GetGameHostOption(eGameHostOption_DoDaylightCycle));
|
|
|
|
INetworkPlayer* localPlayer =
|
|
g_NetworkManager.GetLocalPlayerByUserIndex(m_iPad);
|
|
unsigned int privs = app.GetPlayerPrivileges(localPlayer->GetSmallId());
|
|
if (app.GetGameHostOption(eGameHostOption_CheatsEnabled) &&
|
|
Player::getPlayerGamePrivilege(
|
|
privs, Player::ePlayerGamePrivilege_CanTeleport) &&
|
|
g_NetworkManager.GetPlayerCount() > 1) {
|
|
m_buttonTeleportToPlayer.init(app.GetString(IDS_TELEPORT_TO_PLAYER),
|
|
eControl_TeleportToPlayer);
|
|
m_buttonTeleportToMe.init(app.GetString(IDS_TELEPORT_TO_ME),
|
|
eControl_TeleportToMe);
|
|
} else {
|
|
removeControl(&m_buttonTeleportToPlayer, true);
|
|
removeControl(&m_buttonTeleportToMe, true);
|
|
}
|
|
}
|
|
|
|
std::wstring UIScene_InGameHostOptionsMenu::getMoviePath() {
|
|
if (app.GetLocalPlayerCount() > 1) {
|
|
return L"InGameHostOptionsSplit";
|
|
} else {
|
|
return L"InGameHostOptions";
|
|
}
|
|
}
|
|
|
|
void UIScene_InGameHostOptionsMenu::updateTooltips() {
|
|
ui.SetTooltips(m_iPad, IDS_TOOLTIPS_SELECT, IDS_TOOLTIPS_BACK);
|
|
}
|
|
|
|
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);
|
|
unsigned int privs = app.GetPlayerPrivileges(localPlayer->GetSmallId());
|
|
if (app.GetGameHostOption(eGameHostOption_CheatsEnabled) &&
|
|
Player::getPlayerGamePrivilege(
|
|
privs, Player::ePlayerGamePrivilege_CanTeleport) &&
|
|
g_NetworkManager.GetPlayerCount() > 1) {
|
|
} else {
|
|
removeControl(&m_buttonTeleportToPlayer, true);
|
|
removeControl(&m_buttonTeleportToMe, true);
|
|
}
|
|
}
|
|
|
|
void UIScene_InGameHostOptionsMenu::handleInput(int iPad, int key, bool repeat,
|
|
bool pressed, bool released,
|
|
bool& handled) {
|
|
// 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(iPad, key, repeat, pressed, released);
|
|
switch (key) {
|
|
case ACTION_MENU_CANCEL:
|
|
if (pressed) {
|
|
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());
|
|
|
|
// 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());
|
|
}
|
|
|
|
// Send update settings packet to server
|
|
if (hostOptions != app.GetGameHostOption(eGameHostOption_All)) {
|
|
Minecraft* pMinecraft = Minecraft::GetInstance();
|
|
std::shared_ptr<MultiplayerLocalPlayer> player =
|
|
pMinecraft->localplayers[m_iPad];
|
|
if (player->connection) {
|
|
player->connection->send(
|
|
std::shared_ptr<ServerSettingsChangedPacket>(
|
|
new ServerSettingsChangedPacket(
|
|
ServerSettingsChangedPacket::
|
|
HOST_IN_GAME_SETTINGS,
|
|
hostOptions)));
|
|
}
|
|
}
|
|
|
|
navigateBack();
|
|
|
|
handled = true;
|
|
}
|
|
break;
|
|
case ACTION_MENU_OK:
|
|
sendInputToMovie(key, repeat, pressed, released);
|
|
break;
|
|
case ACTION_MENU_UP:
|
|
case ACTION_MENU_DOWN:
|
|
sendInputToMovie(key, repeat, pressed, released);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void UIScene_InGameHostOptionsMenu::handlePress(F64 controlId, F64 childId) {
|
|
TeleportMenuInitData* initData = new TeleportMenuInitData();
|
|
initData->iPad = m_iPad;
|
|
initData->teleportToPlayer = false;
|
|
if ((int)controlId == eControl_TeleportToPlayer) {
|
|
initData->teleportToPlayer = true;
|
|
}
|
|
ui.NavigateToScene(m_iPad, eUIScene_TeleportMenu, (void*)initData);
|
|
}
|