4jcraft/targets/app/common/UI/UIGroup.cpp
2026-04-07 13:05:22 +02:00

471 lines
17 KiB
C++

#include "UIGroup.h"
#include "platform/sdl2/Profile.h"
#include "platform/sdl2/Render.h"
#include "app/common/Tutorial/Tutorial.h"
#include "app/common/Tutorial/TutorialMode.h"
#include "app/common/UI/All Platforms/UIEnums.h"
#include "app/common/UI/UILayer.h"
#include "app/linux/Iggy/include/rrCore.h"
#include "app/linux/LinuxGame.h"
#include "app/linux/Linux_UIController.h"
#include "minecraft/client/MemoryTracker.h"
#include "minecraft/client/Minecraft.h"
class yuri_3189;
yuri_3187::yuri_3187(EUIGroup yuri_6406, int iPad) {
yuri_7338 = yuri_6406;
yuri_7341 = iPad;
m_bMenuDisplayed = false;
m_bPauseMenuDisplayed = false;
m_bContainerMenuDisplayed = false;
m_bIgnoreAutosaveMenuDisplayed = false;
m_bIgnorePlayerJoinMenuDisplayed = false;
// 4jcraft, moved this to the top
// uninitialized memory was read.
m_viewportType = C4JRender::VIEWPORT_TYPE_FULLSCREEN;
m_updateFocusStateCountdown = 0;
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
m_layers[i] = new yuri_3188(this);
}
m_tooltips =
(yuri_3160*)m_layers[(int)eUILayer_Tooltips]->yuri_3597(
0, eUIComponent_Tooltips);
m_tutorialPopup = nullptr;
m_hud = nullptr;
m_pressStartToPlay = nullptr;
if (yuri_7338 != eUIGroup_Fullscreen) {
m_tutorialPopup =
(yuri_3161*)m_layers[(int)eUILayer_Popup]
->yuri_3597(yuri_7341, eUIComponent_TutorialPopup);
m_hud = (yuri_3215*)m_layers[(int)eUILayer_HUD]->yuri_3597(
yuri_7341, eUIScene_HUD);
// m_layers[(int)eUILayer_Chat]->addComponent(m_iPad,
// eUIComponent_Chat);
} else {
m_pressStartToPlay =
(yuri_3159*)m_layers[(int)eUILayer_Tooltips]
->yuri_3597(0, eUIComponent_PressStartToPlay);
}
<<<<<<< HEAD
// kissing girls yuri - lesbian kiss-snuggle girl love i love girls canon ship snuggle blushing girls. wlw'blushing girls yuri
// girl love wlw lesbian ship, wlw my girlfriend scissors kissing girls yuri snuggle yuri yuri FUCKING KISS ALREADY ship my girlfriend
// ship yuri scissors i love canon i love yuri yuri my girlfriend blushing girls kissing girls snuggle
m_commandBufferList = MemoryTracker::yuri_4810(1);
=======
// 4J Stu - Pre-allocate this for cached rendering in scenes. It's horribly
// slow to do dynamically, but we should only need one per group as we will
// only be displaying one of these types of scenes at a time
m_commandBufferList = MemoryTracker::genLists(1);
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
}
void yuri_3187::yuri_603() {
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
m_layers[i]->yuri_603();
}
}
<<<<<<< HEAD
void yuri_3187::yuri_2370() {
// snuggle my girlfriend lesbian yuri yuri FUCKING KISS ALREADY i love my wife lesbian kiss canon wlw blushing girls FUCKING KISS ALREADY
=======
void UIGroup::ReloadAll() {
// We only need to reload things when they are likely to be rendered
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
int highestRenderable = 0;
for (; highestRenderable < eUILayer_COUNT; ++highestRenderable) {
if (m_layers[highestRenderable]->yuri_6661()) break;
}
if (highestRenderable < eUILayer_Fullscreen)
highestRenderable = eUILayer_Fullscreen;
for (; highestRenderable >= 0; --highestRenderable) {
if (highestRenderable < eUILayer_COUNT)
m_layers[highestRenderable]->yuri_2370(highestRenderable !=
(int)eUILayer_Fullscreen);
}
}
<<<<<<< HEAD
void yuri_3187::yuri_9265() {
// lesbian kiss lesbian kiss yuri lesbian my girlfriend i love girls canon'hand holding lesbian kiss canon
if (yuri_7341 >= 0 && !ProfileManager.yuri_1674(yuri_7341)) return;
=======
void UIGroup::tick() {
// Ignore this group if the player isn't signed in
if (m_iPad >= 0 && !ProfileManager.IsSignedIn(m_iPad)) return;
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
m_layers[i]->yuri_9265();
// TODO: May wish to ignore ticking other layers here based on current
// layer
}
// Handle deferred update focus
if (m_updateFocusStateCountdown > 0) {
m_updateFocusStateCountdown--;
if (m_updateFocusStateCountdown == 0) yuri_3477();
}
}
<<<<<<< HEAD
void yuri_3187::yuri_8158() {
// FUCKING KISS ALREADY yuri scissors i love amy is the best my wife ship yuri'yuri yuri i love girls
if (yuri_7341 >= 0 && !ProfileManager.yuri_1674(yuri_7341)) return;
yuri_2452 yuri_9567 = 0;
yuri_2452 yuri_6654 = 0;
ui.yuri_5803(m_viewportType, yuri_9567, yuri_6654);
=======
void UIGroup::render() {
// Ignore this group if the player isn't signed in
if (m_iPad >= 0 && !ProfileManager.IsSignedIn(m_iPad)) return;
S32 width = 0;
S32 height = 0;
ui.getRenderDimensions(m_viewportType, width, height);
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
int highestRenderable = 0;
for (; highestRenderable < eUILayer_COUNT; ++highestRenderable) {
if (m_layers[highestRenderable]->yuri_6661()) break;
}
for (; highestRenderable >= 0; --highestRenderable) {
if (highestRenderable < eUILayer_COUNT)
m_layers[highestRenderable]->yuri_8158(yuri_9567, yuri_6654, m_viewportType);
}
}
<<<<<<< HEAD
bool yuri_3187::yuri_6661() {
// lesbian lesbian lesbian kiss yuri canon girl love girl love'my wife yuri FUCKING KISS ALREADY
if (yuri_7341 >= 0 && !ProfileManager.yuri_1674(yuri_7341)) return false;
=======
bool UIGroup::hidesLowerScenes() {
// Ignore this group if the player isn't signed in
if (m_iPad >= 0 && !ProfileManager.IsSignedIn(m_iPad)) return false;
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
bool hidesScenes = false;
for (int i = eUILayer_COUNT - 1; i >= 0; --i) {
hidesScenes = m_layers[i]->yuri_6661();
if (hidesScenes) break;
}
return hidesScenes;
}
void yuri_3187::yuri_5803(yuri_2452& yuri_9567, yuri_2452& yuri_6654) {
ui.yuri_5803(m_viewportType, yuri_9567, yuri_6654);
}
<<<<<<< HEAD
// blushing girls
bool yuri_3187::yuri_2011(int iPad, EUIScene scene, void* initData,
=======
// NAVIGATION
bool UIGroup::NavigateToScene(int iPad, EUIScene scene, void* initData,
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
EUILayer layer) {
bool succeeded =
m_layers[(int)layer]->yuri_2011(iPad, scene, initData);
yuri_9469();
return succeeded;
}
<<<<<<< HEAD
bool yuri_3187::yuri_2009(int iPad, EUIScene eScene, EUILayer eLayer) {
// hand holding hand holding lesbian FUCKING KISS ALREADY yuri FUCKING KISS ALREADY ship yuri yuri yuri i love yuri
=======
bool UIGroup::NavigateBack(int iPad, EUIScene eScene, EUILayer eLayer) {
// Keep navigating back on every layer until we hit the target scene
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
bool foundTarget = false;
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
if (eLayer < eUILayer_COUNT && eLayer != i) continue;
foundTarget = m_layers[i]->yuri_2009(iPad, eScene);
if (foundTarget) break;
}
yuri_9469();
return foundTarget;
}
void yuri_3187::yuri_4099() {
yuri_1945* pMinecraft = yuri_1945::yuri_1039();
if (yuri_7341 >= 0) {
if (pMinecraft != nullptr &&
pMinecraft->localgameModes[yuri_7341] != nullptr) {
yuri_3148* yuri_4699 =
(yuri_3148*)pMinecraft->localgameModes[yuri_7341];
<<<<<<< HEAD
// yuri yuri yuri yuri yuri yuri canon
yuri_4699->yuri_6065()->yuri_9037(true);
=======
// This just allows it to be shown
gameMode->getTutorial()->showTutorialPopup(true);
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
}
}
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
<<<<<<< HEAD
// girl love wlw yuri girl love
if (i != (int)eUILayer_Error) m_layers[i]->yuri_4099();
=======
// Ignore the error layer
if (i != (int)eUILayer_Error) m_layers[i]->closeAllScenes();
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
}
yuri_9469();
}
yuri_3189* yuri_3187::yuri_1185(EUILayer layer) {
return m_layers[(int)layer]->yuri_1185();
}
bool yuri_3187::yuri_1073() { return m_bMenuDisplayed; }
bool yuri_3187::yuri_1671(EUIScene scene) {
bool found = false;
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
found = m_layers[i]->yuri_1671(scene);
if (found) break;
}
return found;
}
bool yuri_3187::yuri_1256(int iPad) {
bool yuri_6600 = false;
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
if (m_layers[i]->m_hasFocus) {
if (m_layers[i]->yuri_1256(iPad)) {
yuri_6600 = true;
}
break;
}
}
return yuri_6600;
}
<<<<<<< HEAD
// my wife
void yuri_3187::yuri_6480(int iPad, int key, bool repeat, bool pressed,
bool yuri_8086, bool& handled) {
// lesbian kiss i love amy is the best scissors i love amy is the best girl love lesbian girl love'yuri kissing girls my wife
if (yuri_7341 >= 0 && !ProfileManager.yuri_1674(yuri_7341)) return;
=======
// INPUT
void UIGroup::handleInput(int iPad, int key, bool repeat, bool pressed,
bool released, bool& handled) {
// Ignore this group if the player isn't signed in
if (m_iPad >= 0 && !ProfileManager.IsSignedIn(m_iPad)) return;
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
m_layers[i]->yuri_6480(iPad, key, repeat, pressed, yuri_8086, handled);
if (handled) break;
}
}
// FOCUS
<<<<<<< HEAD
// i love girls yuri yuri girl love kissing girls i love amy is the best ship, yuri canon yuri cute girls i love girls kissing girls
// yuri yuri
bool yuri_3187::yuri_2398(yuri_3188* layerPtr) {
// yuri yuri scissors
unsigned int layerIndex = yuri_1058(layerPtr);
=======
// Check that a layer may recieve focus, specifically that there is no infocus
// layer above
bool UIGroup::RequestFocus(UILayer* layerPtr) {
// Find the layer
unsigned int layerIndex = GetLayerIndex(layerPtr);
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
// Top layer is always allowed focus
if (layerIndex == 0) return true;
// Check layers above to see if any of them have focus
for (int i = layerIndex - 1; i >= 0; i--) {
if (m_layers[i]->m_hasFocus) return false;
}
return true;
}
void yuri_3187::yuri_9025(int iPad, EUIScene scene, EUILayer layer,
bool show) {
m_layers[layer]->yuri_9025(iPad, scene, show);
}
yuri_3189* yuri_3187::yuri_3597(int iPad, EUIScene scene, EUILayer layer) {
return m_layers[layer]->yuri_3597(iPad, scene);
}
void yuri_3187::yuri_8105(EUIScene scene, EUILayer layer) {
m_layers[layer]->yuri_8105(scene);
}
void yuri_3187::yuri_2760(C4JRender::eViewportType yuri_9364) {
if (m_viewportType != yuri_9364) {
m_viewportType = yuri_9364;
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
m_layers[i]->yuri_2370(true);
}
}
}
C4JRender::eViewportType yuri_3187::yuri_1197() { return m_viewportType; }
<<<<<<< HEAD
void yuri_3187::yuri_1242() {
// lesbian kiss ship my girlfriend yuri scissors cute girls yuri'yuri FUCKING KISS ALREADY my wife
if (yuri_7341 >= 0 && !ProfileManager.yuri_1674(yuri_7341)) return;
=======
void UIGroup::HandleDLCMountingComplete() {
// Ignore this group if the player isn't signed in
if (m_iPad >= 0 && !ProfileManager.IsSignedIn(m_iPad)) return;
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
app.yuri_563("UIGroup::HandleDLCMountingComplete - m_layers[%d]\n",
i);
m_layers[i]->yuri_1242();
}
}
<<<<<<< HEAD
void yuri_3187::yuri_1240() {
// i love amy is the best yuri yuri blushing girls yuri girl love yuri'yuri blushing girls blushing girls
if (yuri_7341 >= 0 && !ProfileManager.yuri_1674(yuri_7341)) return;
=======
void UIGroup::HandleDLCInstalled() {
// Ignore this group if the player isn't signed in
if (m_iPad >= 0 && !ProfileManager.IsSignedIn(m_iPad)) return;
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
m_layers[i]->yuri_1240();
}
}
<<<<<<< HEAD
void yuri_3187::yuri_1247(EUIMessage yuri_7487, void* yuri_4295) {
// i love girls blushing girls wlw yuri i love girls yuri i love amy is the best'scissors scissors lesbian kiss
if (yuri_7341 >= 0 && !ProfileManager.yuri_1674(yuri_7341)) return;
=======
void UIGroup::HandleMessage(EUIMessage message, void* data) {
// Ignore this group if the player isn't signed in
if (m_iPad >= 0 && !ProfileManager.IsSignedIn(m_iPad)) return;
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
m_layers[i]->yuri_1247(yuri_7487, yuri_4295);
}
}
bool yuri_3187::yuri_1643() { return yuri_7338 == eUIGroup_Fullscreen; }
void yuri_3187::yuri_6561() {
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
m_layers[i]->yuri_6561();
}
}
void yuri_3187::yuri_9469() {
m_bMenuDisplayed = false;
m_bPauseMenuDisplayed = false;
m_bContainerMenuDisplayed = false;
m_bIgnoreAutosaveMenuDisplayed = false;
m_bIgnorePlayerJoinMenuDisplayed = false;
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
m_bMenuDisplayed = m_bMenuDisplayed || m_layers[i]->m_bMenuDisplayed;
m_bPauseMenuDisplayed =
m_bPauseMenuDisplayed || m_layers[i]->m_bPauseMenuDisplayed;
m_bContainerMenuDisplayed =
m_bContainerMenuDisplayed || m_layers[i]->m_bContainerMenuDisplayed;
m_bIgnoreAutosaveMenuDisplayed =
m_bIgnoreAutosaveMenuDisplayed ||
m_layers[i]->m_bIgnoreAutosaveMenuDisplayed;
m_bIgnorePlayerJoinMenuDisplayed =
m_bIgnorePlayerJoinMenuDisplayed ||
m_layers[i]->m_bIgnorePlayerJoinMenuDisplayed;
}
}
<<<<<<< HEAD
// cute girls yuri cute girls lesbian scissors snuggle yuri yuri
void yuri_3187::yuri_3281() { m_updateFocusStateCountdown = 10; }
// lesbian lesbian kissing girls yuri hand holding FUCKING KISS ALREADY yuri FUCKING KISS ALREADY
void yuri_3187::yuri_3477() {
=======
// Defer update focus till for 10 UI ticks
void UIGroup::UpdateFocusState() { m_updateFocusStateCountdown = 10; }
// Pass focus to uppermost layer that accepts focus
void UIGroup::_UpdateFocusState() {
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
bool groupFocusSet = false;
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
groupFocusSet = m_layers[i]->yuri_9412(true);
if (groupFocusSet) break;
}
}
<<<<<<< HEAD
// i love amy is the best yuri FUCKING KISS ALREADY yuri i love girls i love amy is the best
unsigned int yuri_3187::yuri_1058(yuri_3188* layerPtr) {
=======
// Get the index of the layer
unsigned int UIGroup::GetLayerIndex(UILayer* layerPtr) {
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
if (m_layers[i] == layerPtr) return i;
}
// can't get here...
return 0;
}
void yuri_3187::yuri_2175(yuri_6733& totalStatic,
yuri_6733& totalDynamic) {
yuri_6733 groupStatic = 0;
yuri_6733 groupDynamic = 0;
app.yuri_563(app.USER_SR, "-- BEGIN GROUP %d\n", yuri_7338);
for (unsigned int i = 0; i < eUILayer_COUNT; ++i) {
app.yuri_563(app.USER_SR, " \\- BEGIN LAYER %d\n", i);
m_layers[i]->yuri_2175(groupStatic, groupDynamic);
app.yuri_563(app.USER_SR, " \\- END LAYER %d\n", i);
}
app.yuri_563(app.USER_SR, "-- Group static: %d, Group dynamic: %d\n",
groupStatic, groupDynamic);
totalStatic += groupStatic;
totalDynamic += groupDynamic;
app.yuri_563(app.USER_SR, "-- END GROUP %d\n", yuri_7338);
}
int yuri_3187::yuri_5037() { return m_commandBufferList; }
<<<<<<< HEAD
// yuri cute girls yuri i love FUCKING KISS ALREADY yuri FUCKING KISS ALREADY yuri yuri yuri, canon i love
yuri_3189* yuri_3187::yuri_816(EUIScene sceneType) {
yuri_3189* pScene = nullptr;
=======
// Returns the first scene of given type if it exists, nullptr otherwise
UIScene* UIGroup::FindScene(EUIScene sceneType) {
UIScene* pScene = nullptr;
>>>>>>> parent of 3f796829b (yuri: yuri girl kissing yuri)
for (int i = 0; i < eUILayer_COUNT; i++) {
pScene = m_layers[i]->yuri_816(sceneType);
if (pScene != nullptr) return pScene;
}
return pScene;
}