From 5e20c6f90d35c89dc7d8f8ddfba68b06a3b02255 Mon Sep 17 00:00:00 2001 From: Sen Date: Sun, 30 Mar 2025 13:35:02 +0200 Subject: [PATCH] split char gui --- java/src/game/Game.java | 6 +- java/src/game/entity/npc/EntityNPC.java | 2 +- java/src/game/gui/GuiMenu.java | 3 + .../src/game/gui/{ => character}/GuiChar.java | 28 +++---- .../gui/{ => character}/GuiCharacters.java | 4 +- java/src/game/gui/character/GuiSpecies.java | 77 +++++++++++++++++++ .../game/gui/{ => ingame}/GuiGameOver.java | 3 +- java/src/game/gui/{ => ingame}/GuiSign.java | 3 +- .../src/game/gui/{ => server}/GuiConnect.java | 4 +- java/src/game/network/ClientPlayer.java | 4 +- 10 files changed, 105 insertions(+), 29 deletions(-) rename java/src/game/gui/{ => character}/GuiChar.java (95%) rename java/src/game/gui/{ => character}/GuiCharacters.java (98%) create mode 100644 java/src/game/gui/character/GuiSpecies.java rename java/src/game/gui/{ => ingame}/GuiGameOver.java (95%) rename java/src/game/gui/{ => ingame}/GuiSign.java (96%) rename java/src/game/gui/{ => server}/GuiConnect.java (98%) diff --git a/java/src/game/Game.java b/java/src/game/Game.java index 61f80a4..5831916 100755 --- a/java/src/game/Game.java +++ b/java/src/game/Game.java @@ -66,17 +66,17 @@ import game.entity.npc.EntityNPC; import game.entity.types.EntityLiving; import game.gui.Font; import game.gui.Gui; -import game.gui.GuiConnect; import game.gui.GuiConsole; -import game.gui.GuiGameOver; import game.gui.GuiInfo; import game.gui.GuiLoading; import game.gui.GuiMenu; -import game.gui.GuiChar; import game.gui.Style; +import game.gui.character.GuiChar; import game.gui.container.GuiContainer; import game.gui.container.GuiInventory; import game.gui.element.Textbox; +import game.gui.ingame.GuiGameOver; +import game.gui.server.GuiConnect; import game.init.BlockRegistry; import game.init.Config; import game.init.EntityRegistry; diff --git a/java/src/game/entity/npc/EntityNPC.java b/java/src/game/entity/npc/EntityNPC.java index 6457f08..e04faf1 100755 --- a/java/src/game/entity/npc/EntityNPC.java +++ b/java/src/game/entity/npc/EntityNPC.java @@ -45,7 +45,6 @@ import game.entity.projectile.EntityPotion; import game.entity.projectile.EntitySnowball; import game.entity.types.EntityLiving; import game.entity.types.IEntityMultiPart; -import game.gui.GuiSign; import game.gui.container.GuiBrewing; import game.gui.container.GuiChest; import game.gui.container.GuiCrafting; @@ -56,6 +55,7 @@ import game.gui.container.GuiHopper; import game.gui.container.GuiHorse; import game.gui.container.GuiMerchant; import game.gui.container.GuiRepair; +import game.gui.ingame.GuiSign; import game.init.Config; import game.init.ItemRegistry; import game.init.Items; diff --git a/java/src/game/gui/GuiMenu.java b/java/src/game/gui/GuiMenu.java index 2f08964..ebacc1b 100644 --- a/java/src/game/gui/GuiMenu.java +++ b/java/src/game/gui/GuiMenu.java @@ -1,6 +1,8 @@ package game.gui; import game.color.TextColor; +import game.gui.character.GuiChar; +import game.gui.character.GuiCharacters; import game.gui.element.ActButton; import game.gui.element.ActButton.Mode; import game.gui.element.Label; @@ -8,6 +10,7 @@ import game.gui.element.NavButton; import game.gui.element.Textbox; import game.gui.element.Textbox.Action; import game.gui.options.GuiOptions; +import game.gui.server.GuiConnect; import game.gui.world.GuiWorlds; import game.init.Config; import game.renderer.Drawing; diff --git a/java/src/game/gui/GuiChar.java b/java/src/game/gui/character/GuiChar.java similarity index 95% rename from java/src/game/gui/GuiChar.java rename to java/src/game/gui/character/GuiChar.java index a3b3a30..3fad22e 100755 --- a/java/src/game/gui/GuiChar.java +++ b/java/src/game/gui/character/GuiChar.java @@ -1,4 +1,4 @@ -package game.gui; +package game.gui.character; import java.awt.image.BufferedImage; import java.io.File; @@ -29,6 +29,7 @@ import game.gui.element.Element; import game.gui.element.GuiList; import game.gui.element.Label; import game.gui.element.ListEntry; +import game.gui.element.NavButton; import game.gui.element.Slider; import game.gui.element.Textbox; import game.gui.element.TransparentBox; @@ -374,24 +375,13 @@ public class GuiChar extends GuiList }, "Vorlage kopieren")); this.adjust = this.add(new DragAdjust(width / 2 - 230, height - 64 - 640, 460, 640)); -// final ActButton[] speciesBtns = new ActButton[SpeciesRegistry.SPECIMEN.size()]; - for(int z = 0; z < SpeciesRegistry.SPECIMEN.size(); z++) { - final SpeciesInfo species = SpeciesRegistry.SPECIMEN.get(z); -// speciesBtns[z] = - this.add(new ActButton(width - 396 + (z % 2) * 198, 36 + 28 * (z / 2), 194, 24, new ActButton.Callback() { - public void use(ActButton elem, Mode action) { - if(GuiChar.this.gm.thePlayer != null) { -// GuiChar.this.gm.displayGuiScreen(null); - GuiChar.this.gm.thePlayer.sendQueue.addToSendQueue(new CPacketAction(CPacketAction.Action.SET_SPECIES, EntityRegistry.getEntityID(species.clazz))); -// for(ActButton btn : speciesBtns) { -// btn.enabled = btn != elem; -// } - } - } - }, EntityRegistry.getEntityName(EntityRegistry.getEntityString(species.clazz)))) // ; -// speciesBtns[z] - .enabled = this.gm.thePlayer == null || this.gm.thePlayer.getClass() != species.clazz; - } + this.add(new NavButton(width - 396, 36, 392, 24, GuiSpecies.INSTANCE, "Spezies ändern")); +// for(int z = 0; z < SpeciesRegistry.SPECIMEN.size(); z++) { +// final SpeciesInfo species = SpeciesRegistry.SPECIMEN.get(z); +// this.add(new ActButton(width - 396 + (z % 2) * 198, 36 + 28 * (z / 2), 194, 24, new ActButton.Callback() { +// }, EntityRegistry.getEntityName(EntityRegistry.getEntityString(species.clazz)))) // ; +// .enabled = this.gm.thePlayer == null || this.gm.thePlayer.getClass() != species.clazz; +// } final ActButton[] alignBtns = new ActButton[Alignment.values().length]; for (int z = 0; z < Alignment.values().length; z++) diff --git a/java/src/game/gui/GuiCharacters.java b/java/src/game/gui/character/GuiCharacters.java similarity index 98% rename from java/src/game/gui/GuiCharacters.java rename to java/src/game/gui/character/GuiCharacters.java index 251f9c4..04f800d 100644 --- a/java/src/game/gui/GuiCharacters.java +++ b/java/src/game/gui/character/GuiCharacters.java @@ -1,7 +1,9 @@ -package game.gui; +package game.gui.character; import game.color.TextColor; import game.entity.npc.PlayerCharacter; +import game.gui.GuiConfirm; +import game.gui.GuiMenu; import game.gui.element.ActButton; import game.gui.element.ActButton.Mode; import game.gui.element.GuiList; diff --git a/java/src/game/gui/character/GuiSpecies.java b/java/src/game/gui/character/GuiSpecies.java new file mode 100644 index 0000000..ae1c0b1 --- /dev/null +++ b/java/src/game/gui/character/GuiSpecies.java @@ -0,0 +1,77 @@ +package game.gui.character; + +import game.entity.npc.SpeciesInfo; +import game.gui.element.ActButton; +import game.gui.element.ActButton.Mode; +import game.gui.element.GuiList; +import game.gui.element.ListEntry; +import game.gui.element.NavButton; +import game.init.EntityRegistry; +import game.init.SpeciesRegistry; +import game.packet.CPacketAction; +import game.renderer.Drawing; + +public class GuiSpecies extends GuiList implements ActButton.Callback +{ + protected class SkinEntry implements ListEntry + { + private final SpeciesInfo species; + + protected SkinEntry(SpeciesInfo species) + { + this.species = species; + } + + public void draw(int x, int y, int mouseX, int mouseY, boolean hovered) + { + if(GuiSpecies.this.gm.thePlayer != null && this.species == GuiSpecies.this.gm.thePlayer.getSpecies()) + Drawing.drawRect(x, y, 1, 44, 0xffaf0000); + Drawing.drawText(this.species.name, x + 3, y, 0xff000000 | this.species.color1 | this.species.color2); + } + + public void select(boolean dclick, int mx, int my) + { + if((GuiSpecies.this.selectButton.enabled = GuiSpecies.this.gm.thePlayer == null || this.species != GuiSpecies.this.gm.thePlayer.getSpecies()) && dclick) + GuiSpecies.this.use(GuiSpecies.this.selectButton, Mode.PRIMARY); + } + } + + public static final GuiSpecies INSTANCE = new GuiSpecies(); + + private ActButton selectButton; + + private GuiSpecies() { + } + + public void init(int width, int height) + { + super.init(width, height); + this.setDimensions(400, height, 32, height - 32); + this.elements.clear(); + for(SpeciesInfo species : SpeciesRegistry.SPECIMEN) { + this.elements.add(new SkinEntry(species)); + } + this.add(new NavButton(width - 198 * 2, height - 28, 194, 24, GuiChar.INSTANCE, "Zurück")); + this.selectButton = this.add(new ActButton(width - 198, height - 28, 194, 24, this, "Spezies ändern")); + } + + public String getTitle() { + return "Spezies wählen"; + } + + public int getListWidth() + { + return 400 - 20; + } + + public int getSlotHeight() + { + return 44 + 4; + } + + public void use(ActButton elem, Mode action) { + SkinEntry entry = this.getSelected(); + if(entry != null && GuiSpecies.this.gm.thePlayer != null) + GuiSpecies.this.gm.thePlayer.sendQueue.addToSendQueue(new CPacketAction(CPacketAction.Action.SET_SPECIES, EntityRegistry.getEntityID(entry.species.clazz))); + } +} diff --git a/java/src/game/gui/GuiGameOver.java b/java/src/game/gui/ingame/GuiGameOver.java similarity index 95% rename from java/src/game/gui/GuiGameOver.java rename to java/src/game/gui/ingame/GuiGameOver.java index 9c69573..780bd41 100755 --- a/java/src/game/gui/GuiGameOver.java +++ b/java/src/game/gui/ingame/GuiGameOver.java @@ -1,6 +1,7 @@ -package game.gui; +package game.gui.ingame; import game.color.TextColor; +import game.gui.Gui; import game.gui.element.ActButton; import game.gui.element.ActButton.Mode; import game.gui.element.Label; diff --git a/java/src/game/gui/GuiSign.java b/java/src/game/gui/ingame/GuiSign.java similarity index 96% rename from java/src/game/gui/GuiSign.java rename to java/src/game/gui/ingame/GuiSign.java index 53891c0..a04af2f 100644 --- a/java/src/game/gui/GuiSign.java +++ b/java/src/game/gui/ingame/GuiSign.java @@ -1,5 +1,6 @@ -package game.gui; +package game.gui.ingame; +import game.gui.Gui; import game.gui.element.NavButton; import game.gui.element.Textbox; import game.gui.element.Textbox.Action; diff --git a/java/src/game/gui/GuiConnect.java b/java/src/game/gui/server/GuiConnect.java similarity index 98% rename from java/src/game/gui/GuiConnect.java rename to java/src/game/gui/server/GuiConnect.java index c04a01c..b8731d3 100644 --- a/java/src/game/gui/GuiConnect.java +++ b/java/src/game/gui/server/GuiConnect.java @@ -1,6 +1,8 @@ -package game.gui; +package game.gui.server; import game.color.TextColor; +import game.gui.Gui; +import game.gui.GuiMenu; import game.gui.element.ActButton; import game.gui.element.Label; import game.gui.element.Textbox; diff --git a/java/src/game/network/ClientPlayer.java b/java/src/game/network/ClientPlayer.java index 3cf789f..441f705 100755 --- a/java/src/game/network/ClientPlayer.java +++ b/java/src/game/network/ClientPlayer.java @@ -27,8 +27,8 @@ import game.entity.projectile.EntityProjectile; import game.entity.types.EntityLiving; import game.gui.Gui; import game.gui.GuiConsole; -import game.gui.GuiChar; -import game.gui.GuiCharacters; +import game.gui.character.GuiChar; +import game.gui.character.GuiCharacters; import game.gui.container.GuiMachine; import game.gui.container.GuiMerchant; import game.init.EntityRegistry;