made it possible to move multiple characters

This commit is contained in:
Sem van der Hoeven
2020-05-27 22:59:21 +02:00
parent dedb0e1af4
commit cc4297d86d
5 changed files with 33 additions and 25 deletions

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -71,4 +71,12 @@ public abstract class Character implements Comparable<Character> {
public int compareTo(Character o) {
return this.name.compareTo(o.name);
}
@Override
public String toString() {
return "Character{" +
"name='" + name + '\'' +
", faction=" + faction +
'}';
}
}