inventory screen

This commit is contained in:
Toru the Red Fox 2026-03-03 23:07:07 +00:00
parent 46fcfa6d4f
commit 05069de8c7
7 changed files with 838 additions and 820 deletions

View file

@ -33,7 +33,7 @@ void AbstractContainerScreen::init()
void AbstractContainerScreen::render(int xm, int ym, float a) void AbstractContainerScreen::render(int xm, int ym, float a)
{ {
// 4J Stu - Not used // 4J Stu - Not used
#if 0 //#if 0
renderBackground(); renderBackground();
int xo = (width - imageWidth) / 2; int xo = (width - imageWidth) / 2;
int yo = (height - imageHeight) / 2; int yo = (height - imageHeight) / 2;
@ -53,8 +53,8 @@ void AbstractContainerScreen::render(int xm, int ym, float a)
Slot *hoveredSlot = NULL; Slot *hoveredSlot = NULL;
AUTO_VAR(itEnd, menu->slots->end()); AUTO_VAR(itEnd, menu->slots.end());
for (AUTO_VAR(it, menu->slots->begin()); it != itEnd; it++) for (AUTO_VAR(it, menu->slots.begin()); it != itEnd; it++)
{ {
Slot *slot = *it; //menu->slots->at(i); Slot *slot = *it; //menu->slots->at(i);
@ -96,17 +96,17 @@ void AbstractContainerScreen::render(int xm, int ym, float a)
if (inventory->getCarried() == NULL && hoveredSlot != NULL && hoveredSlot->hasItem()) if (inventory->getCarried() == NULL && hoveredSlot != NULL && hoveredSlot->hasItem())
{ {
wstring elementName = trimString(Language::getInstance()->getElementName(hoveredSlot->getItem()->getDescriptionId())); //wstring elementName = trimString(Language::getInstance()->getElementName(hoveredSlot->getItem()->getDescriptionId()));
//
if (elementName.length() > 0) //if (elementName.length() > 0)
{ //{
int x = xm - xo + 12; // int x = xm - xo + 12;
int y = ym - yo - 12; // int y = ym - yo - 12;
int width = font->width(elementName); // int width = font->width(elementName);
fillGradient(x - 3, y - 3, x + width + 3, y + 8 + 3, 0xc0000000, 0xc0000000); // fillGradient(x - 3, y - 3, x + width + 3, y + 8 + 3, 0xc0000000, 0xc0000000);
//
font->drawShadow(elementName, x, y, 0xffffffff); // font->drawShadow(elementName, x, y, 0xffffffff);
} //}
} }
@ -115,7 +115,7 @@ void AbstractContainerScreen::render(int xm, int ym, float a)
Screen::render(xm, ym, a); Screen::render(xm, ym, a);
glEnable(GL_LIGHTING); glEnable(GL_LIGHTING);
glEnable(GL_DEPTH_TEST); glEnable(GL_DEPTH_TEST);
#endif //#endif
} }
void AbstractContainerScreen::renderLabels() void AbstractContainerScreen::renderLabels()
@ -125,33 +125,33 @@ void AbstractContainerScreen::renderLabels()
void AbstractContainerScreen::renderSlot(Slot *slot) void AbstractContainerScreen::renderSlot(Slot *slot)
{ {
// 4J Unused // 4J Unused
#if 0 //#if 0
int x = slot->x; int x = slot->x;
int y = slot->y; int y = slot->y;
shared_ptr<ItemInstance> item = slot->getItem(); shared_ptr<ItemInstance> item = slot->getItem();
if (item == NULL) if (item == NULL)
{ {
int icon = slot->getNoItemIcon(); //int icon = slot->getNoItemIcon();
if (icon >= 0) //if (icon >= 0)
{ //{
glDisable(GL_LIGHTING); // glDisable(GL_LIGHTING);
minecraft->textures->bind(minecraft->textures->loadTexture(TN_GUI_ITEMS));//L"/gui/items.png")); // minecraft->textures->bind(minecraft->textures->loadTexture(TN_GUI_ITEMS));//L"/gui/items.png"));
blit(x, y, icon % 16 * 16, icon / 16 * 16, 16, 16); // blit(x, y, icon % 16 * 16, icon / 16 * 16, 16, 16);
glEnable(GL_LIGHTING); // glEnable(GL_LIGHTING);
return; // return;
} //}
} }
itemRenderer->renderGuiItem(font, minecraft->textures, item, x, y); itemRenderer->renderGuiItem(font, minecraft->textures, item, x, y);
itemRenderer->renderGuiItemDecorations(font, minecraft->textures, item, x, y); itemRenderer->renderGuiItemDecorations(font, minecraft->textures, item, x, y);
#endif //#endif
} }
Slot *AbstractContainerScreen::findSlot(int x, int y) Slot *AbstractContainerScreen::findSlot(int x, int y)
{ {
AUTO_VAR(itEnd, menu->slots->end()); AUTO_VAR(itEnd, menu->slots.end());
for (AUTO_VAR(it, menu->slots->begin()); it != itEnd; it++) for (AUTO_VAR(it, menu->slots.begin()); it != itEnd; it++)
{ {
Slot *slot = *it; //menu->slots->at(i); Slot *slot = *it; //menu->slots->at(i);
if (isHovering(slot, x, y)) return slot; if (isHovering(slot, x, y)) return slot;
@ -186,12 +186,12 @@ void AbstractContainerScreen::mouseClicked(int x, int y, int buttonNum)
if (clickedOutside) if (clickedOutside)
{ {
slotId = AbstractContainerMenu::CLICKED_OUTSIDE; slotId = AbstractContainerMenu::SLOT_CLICKED_OUTSIDE;
} }
if (slotId != -1) if (slotId != -1)
{ {
bool quickKey = slotId != AbstractContainerMenu::CLICKED_OUTSIDE && (Keyboard::isKeyDown(Keyboard::KEY_LSHIFT) || Keyboard::isKeyDown(Keyboard::KEY_RSHIFT)); bool quickKey = slotId != AbstractContainerMenu::SLOT_CLICKED_OUTSIDE && (Keyboard::isKeyDown(Keyboard::KEY_LSHIFT) || Keyboard::isKeyDown(Keyboard::KEY_RSHIFT));
minecraft->gameMode->handleInventoryMouseClick(menu->containerId, slotId, buttonNum, quickKey, minecraft->player); minecraft->gameMode->handleInventoryMouseClick(menu->containerId, slotId, buttonNum, quickKey, minecraft->player);
} }
} }

View file

@ -38,8 +38,8 @@ void InventoryScreen::render(int xm, int ym, float a)
void InventoryScreen::renderBg(float a) void InventoryScreen::renderBg(float a)
{ {
// 4J Unused // 4J Unused
#if 0 //#if 0
int tex = minecraft->textures->loadTexture(L"/gui/inventory.png"); int tex = minecraft->textures->loadTexture(TN_GUI_INVENTORY);
glColor4f(1, 1, 1, 1); glColor4f(1, 1, 1, 1);
minecraft->textures->bind(tex); minecraft->textures->bind(tex);
int xo = (width - imageWidth) / 2; int xo = (width - imageWidth) / 2;
@ -80,7 +80,7 @@ void InventoryScreen::renderBg(float a)
glPopMatrix(); glPopMatrix();
Lighting::turnOff(); Lighting::turnOff();
glDisable(GL_RESCALE_NORMAL); glDisable(GL_RESCALE_NORMAL);
#endif //#endif
} }
void InventoryScreen::buttonClicked(Button *button) void InventoryScreen::buttonClicked(Button *button)

View file

@ -351,6 +351,9 @@ void ItemRenderer::renderGuiItem(Font *font, Textures *textures, shared_ptr<Item
// 4J - this used to take x and y as ints, and no scale and alpha - but this interface is now implemented as a wrapper round this more fully featured one // 4J - this used to take x and y as ints, and no scale and alpha - but this interface is now implemented as a wrapper round this more fully featured one
void ItemRenderer::renderGuiItem(Font *font, Textures *textures, shared_ptr<ItemInstance> item, float x, float y, float fScaleX,float fScaleY, float fAlpha, bool useCompiled) void ItemRenderer::renderGuiItem(Font *font, Textures *textures, shared_ptr<ItemInstance> item, float x, float y, float fScaleX,float fScaleY, float fAlpha, bool useCompiled)
{ {
if (!item)
return;
int itemId = item->id; int itemId = item->id;
int itemAuxValue = item->getAuxValue(); int itemAuxValue = item->getAuxValue();
Icon *itemIcon = item->getIcon(); Icon *itemIcon = item->getIcon();

File diff suppressed because it is too large Load diff

View file

@ -501,6 +501,7 @@ void Minecraft::setScreen(Screen *screen)
if (this->screen != NULL) if (this->screen != NULL)
{ {
this->screen->removed(); this->screen->removed();
delete this->screen;
} }
//4J Gordon: Do not force a stats save here //4J Gordon: Do not force a stats save here
@ -2293,7 +2294,7 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
} }
} }
if (screen == NULL && (player && !ui.GetMenuDisplayed(iPad)) ) if ((screen == NULL || screen->passEvents) && (player && !ui.GetMenuDisplayed(iPad)) )
{ {
// 4J-PB - add some tooltips if required // 4J-PB - add some tooltips if required
int iA=-1, iB=-1, iX, iY=IDS_CONTROLS_INVENTORY, iLT=-1, iRT=-1, iLB=-1, iRB=-1, iLS=-1, iRS=-1; int iA=-1, iB=-1, iX, iY=IDS_CONTROLS_INVENTORY, iLT=-1, iRT=-1, iLB=-1, iRB=-1, iLS=-1, iRS=-1;
@ -3688,7 +3689,18 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
} }
else else
{ {
app.LoadInventoryMenu(iPad,player); static bool inventoryOpen = false;
//app.LoadInventoryMenu(iPad,player);
if (!inventoryOpen)
{
setScreen(new InventoryScreen(player));
inventoryOpen = true;
}
else
{
setScreen(NULL);
inventoryOpen = false;
}
} }
} }
@ -3776,8 +3788,9 @@ void Minecraft::tick(bool bFirst, bool bUpdateTextures)
} }
else else
{ {
InputManager.SetMenuDisplayed(iPad, false);
// 4J-PB // 4J-PB
if (gameMode && InputManager.GetValue(iPad, ACTION_MENU_CANCEL) > 0 && gameMode->isInputAllowed(ACTION_MENU_CANCEL)) if (InputManager.GetValue(iPad, ACTION_MENU_CANCEL) > 0)// && gameMode->isInputAllowed(ACTION_MENU_CANCEL))
{ {
setScreen(NULL); setScreen(NULL);
} }

View file

@ -37,6 +37,7 @@ wchar_t *Textures::preLoaded[TN_COUNT] =
L"gui/gui", L"gui/gui",
L"gui/background", L"gui/background",
L"gui/icons", L"gui/icons",
L"gui/inventory",
L"title/mclogo", L"title/mclogo",
L"item/arrows", L"item/arrows",
L"item/boat", L"item/boat",

View file

@ -28,6 +28,7 @@ typedef enum _TEXTURE_NAME
TN_GUI_GUI, TN_GUI_GUI,
TN_GUI_BACKGROUND, TN_GUI_BACKGROUND,
TN_GUI_ICONS, TN_GUI_ICONS,
TN_GUI_INVENTORY,
TN_TITLE_MCLOGO, TN_TITLE_MCLOGO,
TN_ITEM_ARROWS, TN_ITEM_ARROWS,
TN_ITEM_BOAT, TN_ITEM_BOAT,