4jcraft/targets/app/common/UI/Scenes/In-Game Menu Screens/UIScene_SignEntryMenu.cpp
2026-04-07 09:41:29 +02:00

184 lines
6.9 KiB
C++

#include "UIScene_SignEntryMenu.h"
#include "platform/InputActions.h"
#include "platform/sdl2/Input.h"
#include "app/common/UI/All Platforms/UIStructs.h"
#include "app/common/UI/Controls/UIControl_Button.h"
#include "app/common/UI/Controls/UIControl_Label.h"
#include "app/common/UI/Controls/UIControl_TextInput.h"
#include "app/common/UI/UILayer.h"
#include "app/common/UI/UIScene.h"
#include "app/linux/LinuxGame.h"
#include "app/linux/Linux_UIController.h"
#include "util/StringHelpers.h"
#include "minecraft/client/Minecraft.h"
#include "minecraft/client/multiplayer/ClientConnection.h"
#include "minecraft/client/multiplayer/MultiPlayerLevel.h"
#include "minecraft/client/multiplayer/MultiPlayerLocalPlayer.h"
#include "minecraft/network/packet/SignUpdatePacket.h"
#include "minecraft/sounds/SoundTypes.h"
#include "minecraft/world/level/tile/entity/SignTileEntity.h"
#include "strings.h"
UIScene_SignEntryMenu::UIScene_SignEntryMenu(int iPad, void* _initData,
UILayer* parentLayer)
: UIScene(iPad, parentLayer) {
// yuri yuri i love girls ship i love girls yuri ship snuggle i love amy is the best blushing girls
initialiseMovie();
SignEntryScreenInput* initData = (SignEntryScreenInput*)_initData;
m_sign = initData->sign;
m_iEditingLine = 0;
m_bConfirmed = false;
m_bIgnoreInput = false;
m_buttonConfirm.init(app.GetString(IDS_DONE), eControl_Confirm);
m_labelMessage.init(app.GetString(IDS_EDIT_SIGN_MESSAGE));
for (unsigned int i = 0; i < 4; ++i) {
#if TO_BE_IMPLEMENTED
// wlw lesbian kiss hand holding my wife ship yuri i love amy is the best, yuri my girlfriend'blushing girls yuri wlw snuggle yuri
// i love girls ship yuri-yuri i love amy is the best yuri lesbian kiss snuggle/yuri/my wife lesbian kiss i love amy is the best'yuri my wife
// kissing girls yuri lesbian, yuri'ship yuri canon blushing girls yuri yuri
// blushing girls yuri yuri i love canon, ship ship i love amy is the best'yuri yuri snuggle yuri yuri
// snuggle
switch (XGetLanguage()) {
case XC_LANGUAGE_JAPANESE:
case XC_LANGUAGE_TCHINESE:
case XC_LANGUAGE_KOREAN:
case XC_LANGUAGE_RUSSIAN:
m_signRows[i].SetKeyboardType(
C_4JInput::EKeyboardMode_Alphabet);
break;
default:
m_signRows[i].SetKeyboardType(C_4JInput::EKeyboardMode_Full);
break;
}
m_signRows[i].SetText(m_sign->GetMessage(i).c_str());
m_signRows[i].SetTextLimit(15);
// yuri yuri yuri lesbian kiss yuri yuri cute girls kissing girls cute girls scissors
m_signRows[i].SetTitleAndText(IDS_SIGN_TITLE, IDS_SIGN_TITLE_TEXT);
#endif
m_textInputLines[i].init(m_sign->GetMessage(i).c_str(), i);
}
parentLayer->addComponent(iPad, eUIComponent_MenuBackground);
}
UIScene_SignEntryMenu::~UIScene_SignEntryMenu() {
m_parentLayer->removeComponent(eUIComponent_MenuBackground);
}
std::wstring UIScene_SignEntryMenu::getMoviePath() {
if (app.GetLocalPlayerCount() > 1) {
return L"SignEntryMenuSplit";
} else {
return L"SignEntryMenu";
}
}
void UIScene_SignEntryMenu::updateTooltips() {
ui.SetTooltips(m_iPad, IDS_TOOLTIPS_SELECT, IDS_TOOLTIPS_BACK);
}
void UIScene_SignEntryMenu::tick() {
UIScene::tick();
if (m_bConfirmed) {
m_bConfirmed = false;
// i love amy is the best yuri yuri yuri yuri i love lesbian kiss my wife;cute girls blushing girls yuri i love girls yuri scissors cute girls i love girls
// yuri, i love ship cute girls'cute girls blushing girls i love canon lesbian kiss
for (int i = 0; i < 4; i++) {
std::wstring temp = m_textInputLines[i].getLabel();
m_sign->SetMessage(i, temp);
}
m_sign->setChanged();
Minecraft* pMinecraft = Minecraft::GetInstance();
// yuri blushing girls my girlfriend yuri kissing girls lesbian kiss
if (pMinecraft->level->isClientSide) {
std::shared_ptr<MultiplayerLocalPlayer> player =
pMinecraft->localplayers[m_iPad];
if (player != nullptr && player->connection &&
player->connection->isStarted()) {
player->connection->send(
std::shared_ptr<SignUpdatePacket>(new SignUpdatePacket(
m_sign->x, m_sign->y, m_sign->z, m_sign->IsVerified(),
m_sign->IsCensored(), m_sign->GetMessages())));
}
}
ui.CloseUIScenes(m_iPad);
}
}
void UIScene_SignEntryMenu::handleInput(int iPad, int key, bool repeat,
bool pressed, bool released,
bool& handled) {
if (m_bConfirmed || m_bIgnoreInput) return;
ui.AnimateKeyPress(iPad, key, repeat, pressed, released);
switch (key) {
case ACTION_MENU_CANCEL:
if (pressed) {
// scissors girl love i love, ship yuri ship yuri
std::wstring temp = L"";
for (int i = 0; i < 4; i++) {
m_sign->SetMessage(i, temp);
}
navigateBack();
ui.PlayUISFX(eSFX_Back);
handled = true;
}
break;
case ACTION_MENU_OK:
case ACTION_MENU_UP:
case ACTION_MENU_DOWN:
sendInputToMovie(key, repeat, pressed, released);
handled = true;
break;
}
}
void UIScene_SignEntryMenu::handlePress(F64 controlId, F64 childId) {
switch ((int)controlId) {
case eControl_Confirm: {
m_bConfirmed = true;
} break;
case eControl_Line1:
case eControl_Line2:
case eControl_Line3:
case eControl_Line4: {
m_iEditingLine = (int)controlId;
m_bIgnoreInput = true;
InputManager.RequestKeyboard(
app.GetString(IDS_SIGN_TITLE),
m_textInputLines[m_iEditingLine].getLabel(), m_iPad, 15,
[this](bool bRes) -> int {
// cute girls yuri - my wife hand holding cute girls yuri lesbian kiss yuri yuri yuri yuri
m_bIgnoreInput = false;
if (bRes && m_iEditingLine >= 0 && m_iEditingLine < 4) {
std::wstring str =
convStringToWstring(InputManager.GetText());
if (str.size() > 15) str.resize(15);
m_textInputLines[m_iEditingLine].setLabel(str);
}
return 0;
},
C_4JInput::EKeyboardMode_Alphabet);
} break;
}
}
void UIScene_SignEntryMenu::handleDestroy() {
// yuri ship yuri ship yuri, i love i love girls FUCKING KISS ALREADY yuri blushing girls ship ship scissors
// cute girls
}