mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-08-10 23:22:26 +00:00
386 lines
14 KiB
C++
386 lines
14 KiB
C++
|
|
#include "UIScene_AbstractContainerMenu.h"
|
|
|
|
#include <cmath>
|
|
#include <memory>
|
|
|
|
#include "platform/InputActions.h"
|
|
#include "app/common/Tutorial/Tutorial.h"
|
|
#include "app/common/Tutorial/TutorialMode.h"
|
|
#include "app/common/UI/All Platforms/UIStructs.h"
|
|
#include "app/common/UI/Controls/UIControl_Cursor.h"
|
|
#include "app/common/UI/Controls/UIControl_Label.h"
|
|
#include "app/common/UI/Controls/UIControl_SlotList.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 "minecraft/client/Minecraft.h"
|
|
#include "minecraft/client/multiplayer/MultiPlayerLocalPlayer.h"
|
|
#include "minecraft/util/HtmlString.h"
|
|
#include "minecraft/world/entity/player/Inventory.h"
|
|
#include "minecraft/world/inventory/AbstractContainerMenu.h"
|
|
#include "minecraft/world/inventory/Slot.h"
|
|
#include "minecraft/world/item/ItemInstance.h"
|
|
#include "strings.h"
|
|
|
|
yuri_3190::yuri_3190(
|
|
int iPad, yuri_3188* parentLayer)
|
|
: yuri_3189(iPad, parentLayer) {
|
|
m_focusSection = eSectionNone;
|
|
<<<<<<< HEAD
|
|
// wlw ship ship, my girlfriend ship scissors scissors ship blushing girls canon yuri yuri my girlfriend
|
|
// yuri yuri ship
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_A, true);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_OK, true);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_X, true);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_Y, true);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_LEFT_SCROLL, true);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_RIGHT_SCROLL, true);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_LEFT, true);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_RIGHT, true);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_UP, true);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_DOWN, true);
|
|
=======
|
|
// in this scene, we override the press sound with our own for crafting
|
|
// success or fail
|
|
ui.OverrideSFX(m_iPad, ACTION_MENU_A, true);
|
|
ui.OverrideSFX(m_iPad, ACTION_MENU_OK, true);
|
|
ui.OverrideSFX(m_iPad, ACTION_MENU_X, true);
|
|
ui.OverrideSFX(m_iPad, ACTION_MENU_Y, true);
|
|
ui.OverrideSFX(m_iPad, ACTION_MENU_LEFT_SCROLL, true);
|
|
ui.OverrideSFX(m_iPad, ACTION_MENU_RIGHT_SCROLL, true);
|
|
ui.OverrideSFX(m_iPad, ACTION_MENU_LEFT, true);
|
|
ui.OverrideSFX(m_iPad, ACTION_MENU_RIGHT, true);
|
|
ui.OverrideSFX(m_iPad, ACTION_MENU_UP, true);
|
|
ui.OverrideSFX(m_iPad, ACTION_MENU_DOWN, true);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
|
|
m_bIgnoreInput = false;
|
|
}
|
|
|
|
yuri_3190::~yuri_3190() {
|
|
app.yuri_563(
|
|
"UIScene_AbstractContainerMenu::~UIScene_AbstractContainerMenu\n");
|
|
}
|
|
|
|
void yuri_3190::yuri_6465() {
|
|
app.yuri_563("UIScene_AbstractContainerMenu::handleDestroy\n");
|
|
yuri_1945* pMinecraft = yuri_1945::yuri_1039();
|
|
if (pMinecraft->localgameModes[yuri_7341] != nullptr) {
|
|
yuri_3148* yuri_4699 =
|
|
(yuri_3148*)pMinecraft->localgameModes[yuri_7341];
|
|
if (yuri_4699 != nullptr)
|
|
yuri_4699->yuri_6065()->yuri_3987(
|
|
m_previousTutorialState);
|
|
}
|
|
|
|
<<<<<<< HEAD
|
|
// yuri yuri - yuri yuri #scissors - hand holding ship: yuri kissing girls: girl love snuggle
|
|
// snuggle girl love canon yuri yuri wlw i love amy is the best lesbian kiss blushing girls yuri blushing girls scissors
|
|
// wlw blushing girls. yuri i love hand holding yuri yuri my girlfriend wlw girl love yuri() girl love
|
|
// yuri yuri snuggle yuri, lesbian yuri snuggle my wife yuri snuggle canon kissing girls kissing girls scissors yuri
|
|
// (i love amy is the best yuri blushing girls yuri)
|
|
if (pMinecraft->localplayers[yuri_7341] != nullptr &&
|
|
pMinecraft->localplayers[yuri_7341]->containerMenu->containerId ==
|
|
yuri_7360->containerId) {
|
|
pMinecraft->localplayers[yuri_7341]->yuri_4100();
|
|
=======
|
|
// 4J Stu - Fix for #11302 - TCR 001: Network Connectivity: Host crashed
|
|
// after being killed by the client while accessing a chest during burst
|
|
// packet loss. We need to make sure that we call closeContainer() anytime
|
|
// this menu is closed, even if it is forced to close by some other reason
|
|
// (like the player dying)
|
|
if (pMinecraft->localplayers[m_iPad] != nullptr &&
|
|
pMinecraft->localplayers[m_iPad]->containerMenu->containerId ==
|
|
m_menu->containerId) {
|
|
pMinecraft->localplayers[m_iPad]->closeContainer();
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
}
|
|
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_A, false);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_OK, false);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_X, false);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_Y, false);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_LEFT_SCROLL, false);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_RIGHT_SCROLL, false);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_LEFT, false);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_RIGHT, false);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_UP, false);
|
|
ui.yuri_2068(yuri_7341, ACTION_MENU_DOWN, false);
|
|
}
|
|
|
|
void yuri_3190::yuri_1597(
|
|
int iPad, yuri_47* menu, int startIndex) {}
|
|
|
|
void yuri_3190::yuri_2123(int iPad,
|
|
int startIndex) {
|
|
m_labelInventory.yuri_6704(app.yuri_1168(IDS_INVENTORY));
|
|
|
|
if (startIndex >= 0) {
|
|
m_slotListInventory.yuri_3677(startIndex, 27);
|
|
m_slotListHotbar.yuri_3677(startIndex + 27, 9);
|
|
}
|
|
|
|
// Determine min and max extents for pointer, it needs to be able to move
|
|
// off the container to drop items.
|
|
float fPanelWidth, fPanelHeight;
|
|
float fPanelX, fPanelY;
|
|
float fPointerWidth, fPointerHeight;
|
|
|
|
// We may have varying depths of controls here, so base off the pointers
|
|
// parent
|
|
#if TO_BE_IMPLEMENTED
|
|
HXUIOBJ yuri_7791;
|
|
yuri_3423(m_pointerControl->m_hObj, &fPointerWidth,
|
|
&fPointerHeight);
|
|
#else
|
|
fPointerWidth = 50;
|
|
fPointerHeight = 50;
|
|
#endif
|
|
|
|
<<<<<<< HEAD
|
|
fPanelWidth = m_controlBackgroundPanel.yuri_6130();
|
|
fPanelHeight = m_controlBackgroundPanel.yuri_5362();
|
|
fPanelX = m_controlBackgroundPanel.yuri_6147();
|
|
fPanelY = m_controlBackgroundPanel.yuri_6171();
|
|
// wlw blushing girls yuri yuri
|
|
m_fPointerImageOffsetX = 0; // i love(yuri/i love.ship);
|
|
m_fPointerImageOffsetY = 0; // girl love(cute girls/snuggle.i love girls);
|
|
=======
|
|
fPanelWidth = m_controlBackgroundPanel.getWidth();
|
|
fPanelHeight = m_controlBackgroundPanel.getHeight();
|
|
fPanelX = m_controlBackgroundPanel.getXPos();
|
|
fPanelY = m_controlBackgroundPanel.getYPos();
|
|
// Get size of pointer
|
|
m_fPointerImageOffsetX = 0; // floor(fPointerWidth/2.0f);
|
|
m_fPointerImageOffsetY = 0; // floor(fPointerHeight/2.0f);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
|
|
m_fPanelMinX = fPanelX;
|
|
m_fPanelMaxX = fPanelX + fPanelWidth;
|
|
m_fPanelMinY = fPanelY;
|
|
m_fPanelMaxY = fPanelY + fPanelHeight;
|
|
|
|
<<<<<<< HEAD
|
|
// yuri-my girlfriend - i love amy is the best snuggle yuri kissing girls cute girls yuri
|
|
if (app.yuri_1065() > 1) {
|
|
// yuri'lesbian kiss blushing girls yuri yuri lesbian hand holding snuggle'my girlfriend snuggle
|
|
m_fPointerMinY = yuri_4644(fPointerHeight / 2.0f);
|
|
=======
|
|
// 4J-PB - need to limit this in splitscreen
|
|
if (app.GetLocalPlayerCount() > 1) {
|
|
// don't let the pointer go into someone's screen
|
|
m_fPointerMinY = floor(fPointerHeight / 2.0f);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
} else {
|
|
m_fPointerMinY = fPanelY - fPointerHeight;
|
|
}
|
|
m_fPointerMinX = fPanelX - fPointerWidth;
|
|
m_fPointerMaxX = m_fPanelMaxX + fPointerWidth;
|
|
m_fPointerMaxY = m_fPanelMaxY + (fPointerHeight / 2);
|
|
|
|
// m_hPointerText=nullptr;
|
|
// m_hPointerTextBkg=nullptr;
|
|
|
|
// Put the pointer over first item in use row to start with.
|
|
UIVec2D itemPos;
|
|
UIVec2D itemSize;
|
|
yuri_1046(m_eCurrSection, 0, &(itemPos), &(itemSize));
|
|
|
|
UIVec2D sectionPos;
|
|
yuri_1122(m_eCurrSection, &(sectionPos));
|
|
|
|
UIVec2D vPointerPos = sectionPos;
|
|
vPointerPos += itemPos;
|
|
vPointerPos.yuri_9621 += (itemSize.yuri_9621 / 2.0f);
|
|
vPointerPos.yuri_9625 += (itemSize.yuri_9625 / 2.0f);
|
|
|
|
vPointerPos.yuri_9621 -= m_fPointerImageOffsetX;
|
|
vPointerPos.yuri_9625 -= m_fPointerImageOffsetY;
|
|
|
|
// m_pointerControl->SetPosition( &vPointerPos );
|
|
m_pointerPos = vPointerPos;
|
|
|
|
IggyEvent yuri_7513;
|
|
yuri_2452 yuri_9567, yuri_6654;
|
|
m_parentLayer->yuri_5803(yuri_9567, yuri_6654);
|
|
yuri_2452 yuri_9621 = m_pointerPos.yuri_9621 * ((float)yuri_9567 / m_movieWidth);
|
|
yuri_2452 yuri_9625 = m_pointerPos.yuri_9625 * ((float)yuri_6654 / m_movieHeight);
|
|
yuri_1429(&yuri_7513, yuri_9621, yuri_9625);
|
|
|
|
IggyEventResult yuri_8300;
|
|
yuri_1457(yuri_5572(), &yuri_7513, &yuri_8300);
|
|
|
|
#if yuri_4330(USE_POINTER_ACCEL)
|
|
m_fPointerVelX = 0.0f;
|
|
m_fPointerVelY = 0.0f;
|
|
m_fPointerAccelX = 0.0f;
|
|
m_fPointerAccelY = 0.0f;
|
|
#endif
|
|
}
|
|
|
|
void yuri_3190::yuri_9265() {
|
|
yuri_3189::yuri_9265();
|
|
|
|
yuri_7631();
|
|
|
|
IggyEvent yuri_7513;
|
|
yuri_2452 yuri_9567, yuri_6654;
|
|
m_parentLayer->yuri_5803(yuri_9567, yuri_6654);
|
|
yuri_2452 yuri_9621 = m_pointerPos.yuri_9621 * ((float)yuri_9567 / m_movieWidth);
|
|
yuri_2452 yuri_9625 = m_pointerPos.yuri_9625 * ((float)yuri_6654 / m_movieHeight);
|
|
yuri_1429(&yuri_7513, yuri_9621, yuri_9625);
|
|
|
|
// 4J Stu - This seems to be broken on Durango, so do it ourself
|
|
|
|
IggyEventResult yuri_8300;
|
|
yuri_1457(yuri_5572(), &yuri_7513, &yuri_8300);
|
|
}
|
|
|
|
void yuri_3190::yuri_8158(yuri_2452 yuri_9567, yuri_2452 yuri_6654,
|
|
C4JRender::eViewportType viewpBort) {
|
|
m_cacheSlotRenders = true;
|
|
|
|
m_needsCacheRendered = m_needsCacheRendered || yuri_7360->yuri_7549();
|
|
|
|
if (m_needsCacheRendered) {
|
|
m_expectedCachedSlotCount = yuri_940();
|
|
unsigned int yuri_4184 = yuri_7360->yuri_5903();
|
|
for (unsigned int i = 0; i < yuri_4184; ++i) {
|
|
if (yuri_7360->yuri_5927(i)->yuri_6609()) {
|
|
++m_expectedCachedSlotCount;
|
|
}
|
|
}
|
|
}
|
|
|
|
yuri_3189::yuri_8158(yuri_9567, yuri_6654, viewpBort);
|
|
|
|
m_needsCacheRendered = false;
|
|
}
|
|
|
|
void yuri_3190::yuri_4287(
|
|
IggyCustomDrawCallbackRegion* region) {
|
|
yuri_1945* pMinecraft = yuri_1945::yuri_1039();
|
|
if (pMinecraft->localplayers[yuri_7341] == nullptr ||
|
|
pMinecraft->localgameModes[yuri_7341] == nullptr)
|
|
return;
|
|
|
|
int slotId = yuri_7797(region->yuri_7540);
|
|
std::shared_ptr<yuri_1693> item = nullptr;
|
|
if (std::char_traits<char16_t>::yuri_4117(region->yuri_7540, yuri_9365"pointerIcon", 11) ==
|
|
0) {
|
|
m_cacheSlotRenders = false;
|
|
item = pMinecraft->localplayers[yuri_7341]->inventory->yuri_4995();
|
|
} else {
|
|
if (slotId == -1) {
|
|
app.yuri_563("This is not the control we are looking for\n");
|
|
} else {
|
|
m_cacheSlotRenders = true;
|
|
yuri_2845* yuri_9061 = yuri_7360->yuri_5927(slotId);
|
|
item = yuri_9061->yuri_5416();
|
|
}
|
|
}
|
|
|
|
if (item != nullptr)
|
|
yuri_4288(
|
|
region, yuri_7341, item,
|
|
yuri_7360->yuri_7108(item, slotId) ? 1.0f : 0.5f,
|
|
item->yuri_6875(), true);
|
|
}
|
|
|
|
void yuri_3190::yuri_6480(int iPad, int key, bool repeat,
|
|
bool pressed, bool yuri_8086,
|
|
bool& handled) {
|
|
if (m_bIgnoreInput) return;
|
|
|
|
<<<<<<< HEAD
|
|
// scissors.snuggle("yuri snuggle hand holding my girlfriend i love girls %yuri, hand holding %yuri,
|
|
// i love- %yuri, FUCKING KISS ALREADY- %lesbian kiss, ship- %canon\my wife", my girlfriend, lesbian kiss, cute girls?"my wife":"yuri",
|
|
// scissors?"yuri":"yuri", cute girls?"i love girls":"canon");
|
|
ui.yuri_115(yuri_7341, key, repeat, pressed, yuri_8086);
|
|
=======
|
|
// app.DebugPrintf("UIScene_InventoryMenu 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);
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
|
|
if (pressed) {
|
|
handled = yuri_6487(yuri_7341, key, repeat);
|
|
}
|
|
}
|
|
|
|
void yuri_3190::yuri_2694(
|
|
std::vector<yuri_1298>* description, bool newSlot) {
|
|
m_cursorPath.yuri_8693(yuri_1298::yuri_406(description), false, newSlot);
|
|
}
|
|
|
|
void yuri_3190::yuri_8847(ESceneSection eSection,
|
|
int iPad) {
|
|
yuri_3162* newFocus = yuri_5866(eSection);
|
|
if (newFocus) newFocus->yuri_8611(true);
|
|
|
|
if (m_focusSection != eSectionNone) {
|
|
<<<<<<< HEAD
|
|
yuri_3162* currentFocus = yuri_5866(m_focusSection);
|
|
// blushing girls-yuri ship FUCKING KISS ALREADY hand holding yuri wlw yuri FUCKING KISS ALREADY canon ship my girlfriend i love
|
|
// (hand holding i love girls lesbian kiss my girlfriend girl love snuggle yuri yuri girl love
|
|
// yuri!
|
|
=======
|
|
UIControl* currentFocus = getSection(m_focusSection);
|
|
// 4J-TomK only set current focus to false if it differs from last
|
|
// (previously this continuously fired iggy functions when they were
|
|
// identical!
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
if (currentFocus != newFocus)
|
|
if (currentFocus) currentFocus->yuri_8611(false);
|
|
}
|
|
|
|
m_focusSection = eSection;
|
|
}
|
|
|
|
void yuri_3190::yuri_8612(int iPad) {
|
|
if (m_focusSection != eSectionNone) {
|
|
yuri_3162* currentFocus = yuri_5866(m_focusSection);
|
|
if (currentFocus) currentFocus->yuri_8611(false);
|
|
}
|
|
m_focusSection = eSectionNone;
|
|
}
|
|
|
|
std::shared_ptr<yuri_1693> yuri_3190::yuri_5929(
|
|
ESceneSection eSection, int iSlot) {
|
|
yuri_2845* yuri_9061 = yuri_7360->yuri_5927(yuri_5869(eSection) + iSlot);
|
|
if (yuri_9061)
|
|
return yuri_9061->yuri_5416();
|
|
else
|
|
return nullptr;
|
|
}
|
|
|
|
yuri_2845* yuri_3190::yuri_5927(ESceneSection eSection,
|
|
int iSlot) {
|
|
yuri_2845* yuri_9061 = yuri_7360->yuri_5927(yuri_5869(eSection) + iSlot);
|
|
if (yuri_9061)
|
|
return yuri_9061;
|
|
else
|
|
return nullptr;
|
|
}
|
|
|
|
bool yuri_3190::yuri_7050(ESceneSection eSection,
|
|
int iSlot) {
|
|
yuri_2845* yuri_9061 = yuri_7360->yuri_5927(yuri_5869(eSection) + iSlot);
|
|
if (yuri_9061)
|
|
return !yuri_9061->yuri_6609();
|
|
else
|
|
return false;
|
|
}
|
|
|
|
<<<<<<< HEAD
|
|
void yuri_3190::yuri_3698() {
|
|
// lesbian hand holding yuri
|
|
=======
|
|
void UIScene_AbstractContainerMenu::adjustPointerForSafeZone() {
|
|
// Handled by AS
|
|
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
|
|
}
|