LCEMP/Minecraft.Client/Common/UI/UIScene_AbstractContainerMenu.h
coah 7da64d57a8 add keyboard/mouse controls for menus and gameplay
wired up keyboard and mouse input for menu navigation, inventory cursor, crafting, and general UI interaction. added WASD movement, mouse look, left ctrl sprint, left shift sneak, and all the keybinds for gameplay. also fixed the sound engine crashing when it cant find a sound asset, and set up the x64 build with proper post-build steps for dlls and redist
2026-03-01 20:02:02 -06:00

66 lines
2.3 KiB
C++

#pragma once
#include "UIScene.h"
#include "IUIScene_AbstractContainerMenu.h"
class AbstractContainerMenu;
class UIScene_AbstractContainerMenu : public UIScene, public virtual IUIScene_AbstractContainerMenu
{
private:
ESceneSection m_focusSection;
bool m_bIgnoreInput;
protected:
UIControl m_controlMainPanel;
UIControl_SlotList m_slotListHotbar, m_slotListInventory;
UIControl_Cursor m_cursorPath;
UIControl_Label m_labelInventory, m_labelBrewingStand;
UIControl m_controlBackgroundPanel;
UI_BEGIN_MAP_ELEMENTS_AND_NAMES(UIScene)
UI_MAP_ELEMENT( m_controlMainPanel, "MainPanel" )
UI_BEGIN_MAP_CHILD_ELEMENTS( m_controlMainPanel )
UI_MAP_ELEMENT( m_controlBackgroundPanel, "BackgroundPanel" )
UI_MAP_ELEMENT( m_slotListHotbar, "hotbarList")
UI_MAP_ELEMENT( m_slotListInventory, "inventoryList")
UI_MAP_ELEMENT( m_cursorPath, "cursor")
UI_MAP_ELEMENT( m_labelInventory, "inventoryLabel")
UI_END_MAP_CHILD_ELEMENTS()
UI_END_MAP_ELEMENTS_AND_NAMES()
public:
UIScene_AbstractContainerMenu(int iPad, UILayer *parentLayer);
~UIScene_AbstractContainerMenu();
virtual void handleDestroy();
int getPad() { return m_iPad; }
int getMovieWidth() { return m_movieWidth; }
int getMovieHeight() { return m_movieHeight; }
bool getIgnoreInput() { return m_bIgnoreInput; }
void setIgnoreInput(bool bVal) { m_bIgnoreInput=bVal; }
protected:
virtual void PlatformInitialize(int iPad, int startIndex);
virtual void InitDataAssociations(int iPad, AbstractContainerMenu *menu, int startIndex = 0);
virtual bool doesSectionTreeHaveFocus(ESceneSection eSection) { return false; }
virtual void setSectionFocus(ESceneSection eSection, int iPad);
void setFocusToPointer(int iPad);
void SetPointerText(const wstring &description, vector<wstring> &unformattedStrings, bool newSlot);
virtual shared_ptr<ItemInstance> getSlotItem(ESceneSection eSection, int iSlot);
virtual bool isSlotEmpty(ESceneSection eSection, int iSlot);
virtual void adjustPointerForSafeZone();
virtual UIControl *getSection(ESceneSection eSection) { return NULL; }
public:
virtual void tick();
virtual void render(S32 width, S32 height, C4JRender::eViewportType viewpBort);
virtual void customDraw(IggyCustomDrawCallbackRegion *region);
// INPUT
virtual void handleInput(int iPad, int key, bool repeat, bool pressed, bool released, bool &handled);
};