fix: Rerender part after item added to inventory
This commit is contained in:
@@ -1,9 +1,12 @@
|
|||||||
package cz.jzitnik.events.handlers;
|
package cz.jzitnik.events.handlers;
|
||||||
|
|
||||||
|
import com.googlecode.lanterna.TerminalPosition;
|
||||||
import com.googlecode.lanterna.TerminalSize;
|
import com.googlecode.lanterna.TerminalSize;
|
||||||
import com.googlecode.lanterna.TextColor;
|
import com.googlecode.lanterna.TextColor;
|
||||||
import cz.jzitnik.annotations.EventHandler;
|
import cz.jzitnik.annotations.EventHandler;
|
||||||
|
import cz.jzitnik.annotations.injectors.InjectDependency;
|
||||||
import cz.jzitnik.events.InventoryRerender;
|
import cz.jzitnik.events.InventoryRerender;
|
||||||
|
import cz.jzitnik.events.RerenderScreen;
|
||||||
import cz.jzitnik.game.GameRoom;
|
import cz.jzitnik.game.GameRoom;
|
||||||
import cz.jzitnik.game.GameState;
|
import cz.jzitnik.game.GameState;
|
||||||
import cz.jzitnik.game.ResourceManager;
|
import cz.jzitnik.game.ResourceManager;
|
||||||
@@ -17,11 +20,14 @@ import cz.jzitnik.utils.DependencyManager;
|
|||||||
import cz.jzitnik.utils.RerenderUtils;
|
import cz.jzitnik.utils.RerenderUtils;
|
||||||
import cz.jzitnik.utils.StateManager;
|
import cz.jzitnik.utils.StateManager;
|
||||||
import cz.jzitnik.utils.events.AbstractEventHandler;
|
import cz.jzitnik.utils.events.AbstractEventHandler;
|
||||||
|
import cz.jzitnik.utils.events.EventManager;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
|
|
||||||
@EventHandler(InventoryRerender.class)
|
@EventHandler(InventoryRerender.class)
|
||||||
public class InventoryRerenderHandler extends AbstractEventHandler<InventoryRerender> {
|
public class InventoryRerenderHandler extends AbstractEventHandler<InventoryRerender> {
|
||||||
|
@InjectDependency
|
||||||
|
private EventManager eventManager;
|
||||||
|
|
||||||
private static final int ITEMS_X = 3;
|
private static final int ITEMS_X = 3;
|
||||||
private static final int ITEMS_Y = 5;
|
private static final int ITEMS_Y = 5;
|
||||||
@@ -49,7 +55,9 @@ public class InventoryRerenderHandler extends AbstractEventHandler<InventoryRere
|
|||||||
super(dm);
|
super(dm);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void renderInventoryRerender(DependencyManager dm) {
|
public record RenderResponse(int offsetX, int offsetY) {}
|
||||||
|
|
||||||
|
public static RenderResponse renderInventoryRerender(DependencyManager dm) {
|
||||||
StateManager stateManager = dm.getDependencyOrThrow(StateManager.class);
|
StateManager stateManager = dm.getDependencyOrThrow(StateManager.class);
|
||||||
ResourceManager resourceManager = dm.getDependencyOrThrow(ResourceManager.class);
|
ResourceManager resourceManager = dm.getDependencyOrThrow(ResourceManager.class);
|
||||||
|
|
||||||
@@ -91,10 +99,16 @@ public class InventoryRerenderHandler extends AbstractEventHandler<InventoryRere
|
|||||||
for (int y = 0; y < grid.getHeight(); y++) {
|
for (int y = 0; y < grid.getHeight(); y++) {
|
||||||
System.arraycopy(internalBuffer[y], 0, buffer[y + OFFSET_Y], OFFSET_X, grid.getWidth());
|
System.arraycopy(internalBuffer[y], 0, buffer[y + OFFSET_Y], OFFSET_X, grid.getWidth());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return new RenderResponse(OFFSET_X, OFFSET_Y);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(InventoryRerender event) {
|
public void handle(InventoryRerender event) {
|
||||||
renderInventoryRerender(dm);
|
RenderResponse renderResponse = renderInventoryRerender(dm);
|
||||||
|
eventManager.emitEvent(new RerenderScreen(new RerenderScreen.ScreenPart(
|
||||||
|
new TerminalPosition(renderResponse.offsetX, renderResponse.offsetY),
|
||||||
|
new TerminalPosition(renderResponse.offsetX + INVENTORY_WIDTH, renderResponse.offsetY + INVENTORY_HEIGHT)
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package cz.jzitnik.game;
|
|||||||
|
|
||||||
import cz.jzitnik.game.items.GameItem;
|
import cz.jzitnik.game.items.GameItem;
|
||||||
import cz.jzitnik.game.utils.RoomCords;
|
import cz.jzitnik.game.utils.RoomCords;
|
||||||
|
import cz.jzitnik.utils.DependencyManager;
|
||||||
|
import cz.jzitnik.utils.events.EventManager;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import cz.jzitnik.annotations.injectors.InjectConfig;
|
|||||||
import cz.jzitnik.annotations.injectors.InjectDependency;
|
import cz.jzitnik.annotations.injectors.InjectDependency;
|
||||||
import cz.jzitnik.annotations.injectors.InjectState;
|
import cz.jzitnik.annotations.injectors.InjectState;
|
||||||
import cz.jzitnik.config.Debugging;
|
import cz.jzitnik.config.Debugging;
|
||||||
|
import cz.jzitnik.events.InventoryRerender;
|
||||||
import cz.jzitnik.events.MouseAction;
|
import cz.jzitnik.events.MouseAction;
|
||||||
import cz.jzitnik.events.RerenderScreen;
|
import cz.jzitnik.events.RerenderScreen;
|
||||||
import cz.jzitnik.game.GameRoom;
|
import cz.jzitnik.game.GameRoom;
|
||||||
@@ -268,6 +269,8 @@ public final class Chest extends GameObject implements UIClickHandler {
|
|||||||
|
|
||||||
GameItem item = items.get(itemIndex);
|
GameItem item = items.get(itemIndex);
|
||||||
gameState.getPlayer().getInventory().add(item);
|
gameState.getPlayer().getInventory().add(item);
|
||||||
|
eventManager.emitEvent(new InventoryRerender());
|
||||||
|
|
||||||
items.remove(item);
|
items.remove(item);
|
||||||
|
|
||||||
if (items.isEmpty()) {
|
if (items.isEmpty()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user