From cc4297d86dd20b9d75b2e8d21ea4126757633d78 Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Wed, 27 May 2020 22:59:21 +0200 Subject: [PATCH] made it possible to move multiple characters --- .../src/netwerkprog/game/client/MainGame.java | 15 +++++----- .../game/client/game/characters/Hacker.java | 4 +-- .../client/game/map/GameInputProcessor.java | 29 ++++++++++--------- .../game/client/game/map/GameTile.java | 2 +- .../netwerkprog/game/util/game/Character.java | 8 +++++ 5 files changed, 33 insertions(+), 25 deletions(-) diff --git a/core/src/netwerkprog/game/client/MainGame.java b/core/src/netwerkprog/game/client/MainGame.java index e34fcd7..37ee91e 100644 --- a/core/src/netwerkprog/game/client/MainGame.java +++ b/core/src/netwerkprog/game/client/MainGame.java @@ -10,12 +10,8 @@ import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; -import netwerkprog.game.client.game.characters.Agent; import netwerkprog.game.client.game.characters.Hacker; -import netwerkprog.game.client.game.characters.SelectedCharacter; import netwerkprog.game.client.game.characters.abilities.BodySwap; -import netwerkprog.game.client.game.characters.abilities.Implant; -import netwerkprog.game.client.game.map.GameTile; import netwerkprog.game.client.game.map.Map; import netwerkprog.game.client.game.map.MapRenderer; import netwerkprog.game.client.game.map.GameInputProcessor; @@ -98,11 +94,14 @@ public class MainGame extends ApplicationAdapter { private void initCharacters() { Texture texture = new Texture(Gdx.files.internal("core/assets/characters.png")); TextureRegion[][] characters = TextureRegion.split(texture, 32, 32); - this.testCharacter = new Hacker(characters[1][0], new BodySwap("test")); - this.tree.insert(testCharacter); - this.tree.insert(new Agent(characters[2][0], new Implant("test"))); + this.testCharacter = new Hacker("harry",characters[1][0], new BodySwap("test")); + Character character2 = new Hacker("test2",characters[2][0], new BodySwap("test")); +// this.tree.insert(testCharacter); +// this.tree.insert(character2); +// this.tree.insert(new Agent(characters[2][0], new Implant("test"))); this.setSelectedCharacter(testCharacter); - mapRenderer.getGameTiles()[1][1].setCharacter(testCharacter); + mapRenderer.getGameTiles()[0][1].visit(testCharacter); + mapRenderer.getGameTiles()[0][2].visit(character2); } diff --git a/core/src/netwerkprog/game/client/game/characters/Hacker.java b/core/src/netwerkprog/game/client/game/characters/Hacker.java index 66adbad..239553a 100644 --- a/core/src/netwerkprog/game/client/game/characters/Hacker.java +++ b/core/src/netwerkprog/game/client/game/characters/Hacker.java @@ -6,7 +6,7 @@ import netwerkprog.game.util.game.Character; import netwerkprog.game.util.game.Faction; public class Hacker extends Character { - public Hacker(TextureRegion textureRegion, Ability... abilities) { - super("Hacker", Faction.HACKER, textureRegion, abilities); + public Hacker(String name, TextureRegion textureRegion, Ability... abilities) { + super(name, Faction.HACKER, textureRegion, abilities); } } diff --git a/core/src/netwerkprog/game/client/game/map/GameInputProcessor.java b/core/src/netwerkprog/game/client/game/map/GameInputProcessor.java index cd2d5f1..7156868 100644 --- a/core/src/netwerkprog/game/client/game/map/GameInputProcessor.java +++ b/core/src/netwerkprog/game/client/game/map/GameInputProcessor.java @@ -127,18 +127,21 @@ public class GameInputProcessor implements InputProcessor { for (int col = 0; col < mainGame.mapRenderer.getGameTiles()[0].length; col++) { GameTile gameTile = mainGame.mapRenderer.getGameTiles()[row][col]; if (gameTile.contains(touchPoint.x, touchPoint.y)) { - System.out.println(gameTile + " row: " + row + ", col: " + col); - if (mainGame.hasCharacterSelected() && !gameTile.containsCharacter()) { - System.out.println(mainGame.getSelectedCharacter()); - removeCharacterFromTile(mainGame.getSelectedCharacter()); - gameTile.setCharacter(mainGame.getSelectedCharacter()); + if (button == Input.Buttons.LEFT) { +// System.out.println(gameTile + " row: " + row + ", col: " + col); + if (mainGame.hasCharacterSelected() && !gameTile.containsCharacter()) { +// System.out.println(mainGame.getSelectedCharacter()); + removeCharacterFromTile(mainGame.getSelectedCharacter()); + gameTile.visit(mainGame.getSelectedCharacter()); + } + if (!mainGame.hasCharacterSelected() && gameTile.containsCharacter()) { + mainGame.setSelectedCharacter(gameTile.getCharacter()); + } + if (gameTile.containsCharacter() && !mainGame.getSelectedCharacter().equals(gameTile.getCharacter())) { + mainGame.setSelectedCharacter(gameTile.getCharacter()); + } + return true; } - if (!mainGame.hasCharacterSelected() && gameTile.containsCharacter()) { - mainGame.setSelectedCharacter(gameTile.getCharacter()); - } - - - return true; } } } @@ -151,9 +154,7 @@ public class GameInputProcessor implements InputProcessor { for (int col = 0; col < mainGame.mapRenderer.getGameTiles()[0].length; col++) { GameTile gameTile = mainGame.mapRenderer.getGameTiles()[row][col]; if (gameTile.containsCharacter() && gameTile.getCharacter().equals(character)) { - gameTile.setCharacter(null); - System.out.println("set character of gametile " + gameTile + " to null"); - System.out.println("tile " + mainGame.mapRenderer.getGameTiles()[1][1] + " now has character " + mainGame.mapRenderer.getGameTiles()[1][1].getCharacter()); + gameTile.removeCharacter(); break rowLoop; } } diff --git a/core/src/netwerkprog/game/client/game/map/GameTile.java b/core/src/netwerkprog/game/client/game/map/GameTile.java index a41b166..4bf47a9 100644 --- a/core/src/netwerkprog/game/client/game/map/GameTile.java +++ b/core/src/netwerkprog/game/client/game/map/GameTile.java @@ -33,7 +33,7 @@ public class GameTile extends Rectangle { * @param character the character to visit this tile * @return false if this tile already had a character on it. */ - public boolean setCharacter(Character character) { + public boolean visit(Character character) { if (this.character != null) return false; this.character = character; return true; diff --git a/core/src/netwerkprog/game/util/game/Character.java b/core/src/netwerkprog/game/util/game/Character.java index b9e5601..5cee32a 100644 --- a/core/src/netwerkprog/game/util/game/Character.java +++ b/core/src/netwerkprog/game/util/game/Character.java @@ -71,4 +71,12 @@ public abstract class Character implements Comparable { public int compareTo(Character o) { return this.name.compareTo(o.name); } + + @Override + public String toString() { + return "Character{" + + "name='" + name + '\'' + + ", faction=" + faction + + '}'; + } }