Show entities next to attack buttons in BattleGUI

This commit is contained in:
Stephen Seo 2024-10-24 20:15:30 +09:00
parent d874acb2ce
commit 16346da98c

View file

@ -10,7 +10,9 @@ import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractButton; import net.minecraft.client.gui.components.AbstractButton;
import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.inventory.InventoryScreen;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.LivingEntity;
import net.neoforged.neoforge.network.PacketDistributor; import net.neoforged.neoforge.network.PacketDistributor;
import java.util.ConcurrentModificationException; import java.util.ConcurrentModificationException;
@ -29,6 +31,7 @@ public class BattleGui extends Screen {
private boolean stateChanged; private boolean stateChanged;
private String info; private String info;
private Long waitMissingBattleTicks; private Long waitMissingBattleTicks;
private boolean showingEntities;
private enum MenuState { private enum MenuState {
MAIN_MENU(0), ATTACK_TARGET(1), ITEM_ACTION(2), WAITING(3), SWITCH_ITEM(4), USE_ITEM(5); MAIN_MENU(0), ATTACK_TARGET(1), ITEM_ACTION(2), WAITING(3), SWITCH_ITEM(4), USE_ITEM(5);
@ -93,6 +96,7 @@ public class BattleGui extends Screen {
state = MenuState.MAIN_MENU; state = MenuState.MAIN_MENU;
stateChanged = true; stateChanged = true;
waitMissingBattleTicks = null; waitMissingBattleTicks = null;
showingEntities = false;
} }
private void setState(MenuState state) { private void setState(MenuState state) {
@ -127,6 +131,7 @@ public class BattleGui extends Screen {
} }
stateChanged = false; stateChanged = false;
showingEntities = false;
clearWidgets(); clearWidgets();
switch (state) { switch (state) {
case MAIN_MENU: case MAIN_MENU:
@ -147,6 +152,7 @@ public class BattleGui extends Screen {
case ATTACK_TARGET: case ATTACK_TARGET:
info = "Who will you attack?"; info = "Who will you attack?";
int y = 30; int y = 30;
showingEntities = true;
try { try {
for (Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle() for (Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle()
.getSideAEntrySet()) { .getSideAEntrySet()) {
@ -263,6 +269,26 @@ public class BattleGui extends Screen {
} }
updateState(); updateState();
if (showingEntities) {
int y = 30;
try {
for (Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideAEntrySet()) {
if (e.getValue().entity instanceof LivingEntity lEntity) {
InventoryScreen.renderEntityInInventoryFollowsMouse(guiGraphics, width / 4 - 60 - 20, y, width / 4 - 60, y + 20, 7, 0.0F, mouseX, mouseY, lEntity);
}
y += 20;
}
} catch(ConcurrentModificationException e) {}
y = 30;
try {
for (Map.Entry<Integer, Combatant> e : TurnBasedMinecraftMod.proxy.getLocalBattle().getSideBEntrySet()) {
if (e.getValue().entity instanceof LivingEntity lEntity) {
InventoryScreen.renderEntityInInventoryFollowsMouse(guiGraphics, width * 3 / 4 - 60 + 120, y, width * 3 / 4 - 60 + 140, y + 20, 7, 0.0F, mouseX, mouseY, lEntity);
}
y += 20;
}
} catch(ConcurrentModificationException e) {}
}
super.render(guiGraphics, mouseX, mouseY, partialTicks); super.render(guiGraphics, mouseX, mouseY, partialTicks);