From bb1f9a6fc453e8d1917bb22cee06beea97df4b52 Mon Sep 17 00:00:00 2001 From: Paula Date: Sat, 7 Mar 2026 22:14:37 -0300 Subject: [PATCH] Center inventory (ugly) --- client/systems/inventory_system.ts | 11 +++++++++-- client/systems/rendering/player.ts | 24 ++++++++++++++++-------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/client/systems/inventory_system.ts b/client/systems/inventory_system.ts index 2e094ce..1660199 100644 --- a/client/systems/inventory_system.ts +++ b/client/systems/inventory_system.ts @@ -6,6 +6,7 @@ import { InputManager } from "$/client/input_manager.ts"; import { ClientWorld } from "$/client/client_world.ts"; import { Position } from "../../common/components/position.ts"; import { AnimatedSprite, Sprite } from "../components/sprite.ts"; +import { canvas } from "../renderer.ts"; export class InventorySystem extends System { update(world: ClientWorld, _delta: number): void { @@ -20,13 +21,19 @@ export class InventorySystem extends System { } handle_interaction(player_inventory: PlayerInventory) { + const inventory_width = 10 * 2 + SLOT_SIZE * 9; + const inventory_height = 10 * 2 + SLOT_SIZE * 4; + + const offset_x = canvas.width / 2 - (inventory_width / 2); + const offset_y = canvas.height / 2 - (inventory_height / 2); + player_inventory.hovering_slot = -1; const container = player_inventory.container; if (player_inventory.is_open) { for (const [index, slot] of player_inventory.layout.slots.entries()) { const mouse = InputManager.get_mouse_position(); - const slot_x = slot.x + player_inventory.layout.offset_x; - const slot_y = slot.y + player_inventory.layout.offset_y; + const slot_x = slot.x + player_inventory.layout.offset_x + offset_x; + const slot_y = slot.y + player_inventory.layout.offset_y + offset_y; const hovering = point_inside_rec(mouse.x, mouse.y, slot_x, slot_y, SLOT_SIZE, SLOT_SIZE); if (hovering) { player_inventory.hovering_slot = index; diff --git a/client/systems/rendering/player.ts b/client/systems/rendering/player.ts index 9b33625..8fee6ad 100644 --- a/client/systems/rendering/player.ts +++ b/client/systems/rendering/player.ts @@ -3,15 +3,23 @@ import { AssetManager } from "$/client/assets.ts"; import { PlayerInventory } from "$/client/components/inventory.ts"; import { InputManager } from "$/client/input_manager.ts"; import { draw_item, draw_nine_slice } from "./render_utils.ts"; -import { canvas, draw_text, measure_text, Texture } from "$/client/renderer.ts"; +import { canvas, draw_rect, draw_text, measure_text, Texture } from "$/client/renderer.ts"; import { EverythingRegistry, ItemRegistry } from "$/common/everything_registry.ts"; const PADDING = 10; export function render_player_inventory(player_inventory: PlayerInventory) { + draw_rect(0, 0, canvas.width, canvas.height, [0, 0, 0, 0.8]); + const ui = AssetManager.instance.get("bworld:ui"); const layout = player_inventory.layout.slots; + const inventory_width = PADDING * 2 + SLOT_SIZE * 9; + const inventory_height = PADDING * 2 + SLOT_SIZE * 4; + + const offset_x = canvas.width / 2 - (inventory_width / 2); + const offset_y = canvas.height / 2 - (inventory_height / 2); + draw_nine_slice( ui, 160, @@ -22,10 +30,10 @@ export function render_player_inventory(player_inventory: PlayerInventory) { 4, 4, 4, - 0, - 0, - PADDING * 2 + SLOT_SIZE * 9, - PADDING * 2 + SLOT_SIZE * 4, + offset_x, + offset_y, + inventory_width, + inventory_height, ); for (const [index, slot] of layout.entries()) { @@ -41,8 +49,8 @@ export function render_player_inventory(player_inventory: PlayerInventory) { 4, 4, 4, - x, - y, + offset_x + x, + offset_y + y, SLOT_SIZE, SLOT_SIZE, ); @@ -52,7 +60,7 @@ export function render_player_inventory(player_inventory: PlayerInventory) { const y = slot.y + PADDING; const item = player_inventory.container.get_item(index); if (item) { - draw_item(item, x, y); + draw_item(item, offset_x + x, offset_y + y); } }