Characters moving #9
BIN
core/assets/square.png
Normal file
BIN
core/assets/square.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 913 B |
BIN
core/assets/square2.png
Normal file
BIN
core/assets/square2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 907 B |
@@ -3,21 +3,30 @@ package netwerkprog.game.client;
|
|||||||
import com.badlogic.gdx.ApplicationAdapter;
|
import com.badlogic.gdx.ApplicationAdapter;
|
||||||
import com.badlogic.gdx.Files;
|
import com.badlogic.gdx.Files;
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
|
import com.badlogic.gdx.assets.AssetManager;
|
||||||
import com.badlogic.gdx.audio.Music;
|
import com.badlogic.gdx.audio.Music;
|
||||||
import com.badlogic.gdx.graphics.GL20;
|
import com.badlogic.gdx.graphics.GL20;
|
||||||
import com.badlogic.gdx.graphics.OrthographicCamera;
|
import com.badlogic.gdx.graphics.OrthographicCamera;
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.GlyphLayout;
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
|
import netwerkprog.game.client.game.GAMESTATE;
|
||||||
|
import netwerkprog.game.client.game.characters.Agent;
|
||||||
import netwerkprog.game.client.game.characters.Hacker;
|
import netwerkprog.game.client.game.characters.Hacker;
|
||||||
import netwerkprog.game.client.game.characters.Team;
|
import netwerkprog.game.client.game.characters.Team;
|
||||||
import netwerkprog.game.client.game.characters.abilities.BodySwap;
|
import netwerkprog.game.client.game.characters.abilities.BodySwap;
|
||||||
|
import netwerkprog.game.client.game.map.GameInputProcessor;
|
||||||
|
import netwerkprog.game.client.game.map.GameTile;
|
||||||
import netwerkprog.game.client.game.map.Map;
|
import netwerkprog.game.client.game.map.Map;
|
||||||
import netwerkprog.game.client.game.map.MapRenderer;
|
import netwerkprog.game.client.game.map.MapRenderer;
|
||||||
import netwerkprog.game.client.game.map.GameInputProcessor;
|
import netwerkprog.game.util.game.Faction;
|
||||||
import netwerkprog.game.util.game.GameCharacter;
|
import netwerkprog.game.util.game.GameCharacter;
|
||||||
import netwerkprog.game.util.graphics.FrameRate;
|
import netwerkprog.game.util.graphics.FrameRate;
|
||||||
|
import netwerkprog.game.util.graphics.TextRenderer;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
public class MainGame extends ApplicationAdapter {
|
public class MainGame extends ApplicationAdapter {
|
||||||
SpriteBatch batch;
|
SpriteBatch batch;
|
||||||
@@ -29,11 +38,16 @@ public class MainGame extends ApplicationAdapter {
|
|||||||
private GameInputProcessor gameInputProcessor;
|
private GameInputProcessor gameInputProcessor;
|
||||||
private GameCharacter selectedCharacter;
|
private GameCharacter selectedCharacter;
|
||||||
private Team team;
|
private Team team;
|
||||||
|
private Team enemyTeam;
|
||||||
|
private TextRenderer textRenderer;
|
||||||
|
private BitmapFont font;
|
||||||
|
private GlyphLayout layout;
|
||||||
|
private GAMESTATE gamestate;
|
||||||
|
private Faction chosenFaction;
|
||||||
|
|
||||||
private Map map;
|
private Map map;
|
||||||
public MapRenderer mapRenderer;
|
public MapRenderer mapRenderer;
|
||||||
|
public AssetManager assets;
|
||||||
public GameCharacter testCharacter;
|
|
||||||
|
|
||||||
private static MainGame INSTANCE;
|
private static MainGame INSTANCE;
|
||||||
|
|
||||||
@@ -55,17 +69,20 @@ public class MainGame extends ApplicationAdapter {
|
|||||||
screenHeight = Gdx.graphics.getHeight();
|
screenHeight = Gdx.graphics.getHeight();
|
||||||
frameRate = new FrameRate();
|
frameRate = new FrameRate();
|
||||||
camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
||||||
|
textRenderer = new TextRenderer();
|
||||||
|
font = new BitmapFont();
|
||||||
|
layout = new GlyphLayout();
|
||||||
|
assets = new AssetManager();
|
||||||
|
|
||||||
String[] strings = new String[]{
|
String[] strings = new String[]{
|
||||||
"#########################",
|
"#########################",
|
||||||
"#xxxx #",
|
"#xxxx #",
|
||||||
"# x #",
|
"# x #",
|
||||||
"# xxxx #",
|
"# xxxx xxxxx #",
|
||||||
"# xx #",
|
"# xxxx xxxxx #",
|
||||||
"# x #",
|
"# xxxx xx xx #",
|
||||||
"# x #",
|
"# x xxxxx #",
|
||||||
"# x #",
|
"# x xxxx #",
|
||||||
"# x #",
|
"# x #",
|
||||||
"# xxxxxx #",
|
"# xxxxxx #",
|
||||||
"# x #",
|
"# x #",
|
||||||
@@ -80,7 +97,7 @@ public class MainGame extends ApplicationAdapter {
|
|||||||
camera.viewportWidth = screenWidth / 2;
|
camera.viewportWidth = screenWidth / 2;
|
||||||
camera.viewportHeight = screenHeight / 2;
|
camera.viewportHeight = screenHeight / 2;
|
||||||
camera.update();
|
camera.update();
|
||||||
initCharacters();
|
setGamestate(GAMESTATE.SELECTING_FACTION);
|
||||||
// this.tree.insert(new Hacker(,new BodySwap()));
|
// this.tree.insert(new Hacker(,new BodySwap()));
|
||||||
|
|
||||||
|
|
||||||
@@ -90,16 +107,29 @@ public class MainGame extends ApplicationAdapter {
|
|||||||
// connectToServer();
|
// connectToServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initCharacters() {
|
public void initCharacters() {
|
||||||
Texture texture = new Texture(Gdx.files.internal("core/assets/characters.png"));
|
assets.load("core/assets/characters.png", Texture.class);
|
||||||
|
assets.finishLoading();
|
||||||
|
Texture texture = assets.get("core/assets/characters.png");
|
||||||
TextureRegion[][] characters = TextureRegion.split(texture, 32, 32);
|
TextureRegion[][] characters = TextureRegion.split(texture, 32, 32);
|
||||||
this.testCharacter = new Hacker("harry",characters[1][0], new BodySwap("test"));
|
|
||||||
GameCharacter character2 = new Hacker("test2",characters[2][0], new BodySwap("test"));
|
|
||||||
this.setSelectedCharacter(testCharacter);
|
|
||||||
mapRenderer.getGameTiles()[1][1].visit(testCharacter);
|
|
||||||
mapRenderer.getGameTiles()[1][2].visit(character2);
|
|
||||||
this.team = new Team();
|
this.team = new Team();
|
||||||
this.team.addMember(this.testCharacter, character2);
|
|
||||||
|
for (int i = 1; i <= 5; i++) {
|
||||||
|
GameCharacter temp = new Hacker("hacker" + i, characters[5][0], new BodySwap("test"));
|
||||||
|
mapRenderer.getGameTiles()[1][i].visit(temp);
|
||||||
|
if (chosenFaction == Faction.HACKER) {
|
||||||
|
this.team.addMember(temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 1; i <= 5; i++) {
|
||||||
|
GameCharacter temp = new Agent("Agent" + i, characters[11][0], new BodySwap("Test"));
|
||||||
|
mapRenderer.getGameTiles()[3][i].visit(temp);
|
||||||
|
if (chosenFaction == Faction.MEGACORPORATION) {
|
||||||
|
this.team.addMember(temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.setSelectedCharacter(this.team.get(0));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,12 +159,36 @@ public class MainGame extends ApplicationAdapter {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void render() {
|
public void render() {
|
||||||
update();
|
if (this.gamestate == GAMESTATE.PLAYING) {
|
||||||
// clear screen
|
update();
|
||||||
Gdx.gl.glClearColor(0, 0, 0, 1);
|
// clear screen
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
Gdx.gl.glClearColor(0, 0, 0, 1);
|
||||||
mapRenderer.render();
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
||||||
frameRate.render();
|
mapRenderer.render();
|
||||||
|
frameRate.render();
|
||||||
|
renderText();
|
||||||
|
} else if (this.gamestate == GAMESTATE.SELECTING_FACTION) {
|
||||||
|
renderString("FACTION SELECT\nPress 1 for mega corporation, press 2 for hackers", Gdx.graphics.getWidth() / 2f, Gdx.graphics.getHeight() / 2f);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void renderText() {
|
||||||
|
String text = "FACION: " + chosenFaction;
|
||||||
|
text += "\nSelected character: " + selectedCharacter.getName();
|
||||||
|
text += "\nHealth: " + selectedCharacter.getHealth();
|
||||||
|
layout.setText(font, text);
|
||||||
|
textRenderer.render(text, Gdx.graphics.getWidth() - layout.width - 5, Gdx.graphics.getHeight() - 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void renderString(String text) {
|
||||||
|
layout.setText(font, text);
|
||||||
|
textRenderer.render(text, Gdx.graphics.getWidth() - layout.width - 5, Gdx.graphics.getHeight() - 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void renderString(String text, float x, float y) {
|
||||||
|
layout.setText(font, text);
|
||||||
|
textRenderer.render(text, x - layout.width / 2f, x - layout.height / 2f);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -153,6 +207,7 @@ public class MainGame extends ApplicationAdapter {
|
|||||||
screenWidth = width;
|
screenWidth = width;
|
||||||
frameRate.resize(width, height);
|
frameRate.resize(width, height);
|
||||||
mapRenderer.resize(width, height);
|
mapRenderer.resize(width, height);
|
||||||
|
textRenderer.resize(width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -163,6 +218,8 @@ public class MainGame extends ApplicationAdapter {
|
|||||||
@Override
|
@Override
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
batch.dispose();
|
batch.dispose();
|
||||||
|
textRenderer.dispose();
|
||||||
|
assets.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getScreenWidth() {
|
public float getScreenWidth() {
|
||||||
@@ -183,7 +240,25 @@ public class MainGame extends ApplicationAdapter {
|
|||||||
|
|
||||||
public void setSelectedCharacter(GameCharacter character) {
|
public void setSelectedCharacter(GameCharacter character) {
|
||||||
this.selectedCharacter = character;
|
this.selectedCharacter = character;
|
||||||
System.out.println("selected character set to : " + character);
|
GameTile characterTile = mapRenderer.getTile(character);
|
||||||
|
Point pos = mapRenderer.getPos(characterTile);
|
||||||
|
mapRenderer.setSurroundedTilesOfCurrentCharacter(pos.x, pos.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GAMESTATE getGamestate() {
|
||||||
|
return gamestate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGamestate(GAMESTATE gamestate) {
|
||||||
|
this.gamestate = gamestate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Faction getChosenFaction() {
|
||||||
|
return chosenFaction;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChosenFaction(Faction chosenFaction) {
|
||||||
|
this.chosenFaction = chosenFaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameCharacter getSelectedCharacter() {
|
public GameCharacter getSelectedCharacter() {
|
||||||
@@ -197,4 +272,5 @@ public class MainGame extends ApplicationAdapter {
|
|||||||
public Team getTeam() {
|
public Team getTeam() {
|
||||||
return team;
|
return team;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
6
core/src/netwerkprog/game/client/game/GAMESTATE.java
Normal file
6
core/src/netwerkprog/game/client/game/GAMESTATE.java
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package netwerkprog.game.client.game;
|
||||||
|
|
||||||
|
public enum GAMESTATE {
|
||||||
|
PLAYING,
|
||||||
|
SELECTING_FACTION
|
||||||
|
}
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
package netwerkprog.game.client.game;
|
|
||||||
|
|
||||||
import netwerkprog.game.util.application.Controller;
|
|
||||||
|
|
||||||
public class Game extends Controller {
|
|
||||||
|
|
||||||
|
|
||||||
public Game() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
package netwerkprog.game.client.game;
|
|
||||||
|
|
||||||
import netwerkprog.game.util.application.Controller;
|
|
||||||
|
|
||||||
public class Graphics extends Controller {
|
|
||||||
public Graphics() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,7 +6,7 @@ import netwerkprog.game.util.game.Faction;
|
|||||||
import netwerkprog.game.util.game.GameCharacter;
|
import netwerkprog.game.util.game.GameCharacter;
|
||||||
|
|
||||||
public class Agent extends GameCharacter {
|
public class Agent extends GameCharacter {
|
||||||
public Agent(TextureRegion textureRegion, Ability... abilities) {
|
public Agent(String name, TextureRegion textureRegion, Ability... abilities) {
|
||||||
super("Agent", Faction.MEGACORPORATION, textureRegion, abilities);
|
super(name, Faction.MEGACORPORATION, textureRegion, abilities);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package netwerkprog.game.client.game.characters;
|
package netwerkprog.game.client.game.characters;
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import netwerkprog.game.util.game.GameCharacter;
|
|
||||||
import netwerkprog.game.util.game.Faction;
|
import netwerkprog.game.util.game.Faction;
|
||||||
|
import netwerkprog.game.util.game.GameCharacter;
|
||||||
|
|
||||||
public class DevTest1 extends GameCharacter {
|
public class DevTest1 extends GameCharacter {
|
||||||
public DevTest1() {
|
public DevTest1() {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package netwerkprog.game.client.game.characters;
|
package netwerkprog.game.client.game.characters;
|
||||||
|
|
||||||
import netwerkprog.game.util.game.GameCharacter;
|
|
||||||
import netwerkprog.game.util.game.Faction;
|
import netwerkprog.game.util.game.Faction;
|
||||||
|
import netwerkprog.game.util.game.GameCharacter;
|
||||||
|
|
||||||
public class DevTest2 extends GameCharacter {
|
public class DevTest2 extends GameCharacter {
|
||||||
public DevTest2() {
|
public DevTest2() {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package netwerkprog.game.client.game.characters;
|
package netwerkprog.game.client.game.characters;
|
||||||
|
|
||||||
import netwerkprog.game.util.game.GameCharacter;
|
|
||||||
import netwerkprog.game.util.game.Faction;
|
import netwerkprog.game.util.game.Faction;
|
||||||
|
import netwerkprog.game.util.game.GameCharacter;
|
||||||
|
|
||||||
public class DevTest3 extends GameCharacter {
|
public class DevTest3 extends GameCharacter {
|
||||||
public DevTest3() {
|
public DevTest3() {
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import com.badlogic.gdx.math.MathUtils;
|
|||||||
import com.badlogic.gdx.math.Vector3;
|
import com.badlogic.gdx.math.Vector3;
|
||||||
import com.badlogic.gdx.utils.TimeUtils;
|
import com.badlogic.gdx.utils.TimeUtils;
|
||||||
import netwerkprog.game.client.MainGame;
|
import netwerkprog.game.client.MainGame;
|
||||||
|
import netwerkprog.game.client.game.GAMESTATE;
|
||||||
|
import netwerkprog.game.util.game.Faction;
|
||||||
import netwerkprog.game.util.game.GameCharacter;
|
import netwerkprog.game.util.game.GameCharacter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -89,25 +91,41 @@ public class GameInputProcessor implements InputProcessor {
|
|||||||
@Override
|
@Override
|
||||||
public boolean keyUp(int keycode) {
|
public boolean keyUp(int keycode) {
|
||||||
// System.out.println(camera.position.x + " , " + camera.position.y);
|
// System.out.println(camera.position.x + " , " + camera.position.y);
|
||||||
if (keysList.contains(keycode)) {
|
if (mainGame.getGamestate() == GAMESTATE.PLAYING) {
|
||||||
if (keycode == keysList.get(0)) {
|
|
||||||
this.isWPressed = false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (keycode == keysList.get(1)) {
|
|
||||||
this.isAPressed = false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (keycode == keysList.get(2)) {
|
|
||||||
this.isSPressed = false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (keycode == keysList.get(3)) {
|
|
||||||
this.isDPressed = false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
if (keysList.contains(keycode)) {
|
||||||
|
if (keycode == keysList.get(0)) {
|
||||||
|
this.isWPressed = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (keycode == keysList.get(1)) {
|
||||||
|
this.isAPressed = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (keycode == keysList.get(2)) {
|
||||||
|
this.isSPressed = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (keycode == keysList.get(3)) {
|
||||||
|
this.isDPressed = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (mainGame.getGamestate() == GAMESTATE.SELECTING_FACTION) {
|
||||||
|
if (keycode == Input.Keys.NUM_1) {
|
||||||
|
System.out.println("MEGA CORP");
|
||||||
|
mainGame.setChosenFaction(Faction.MEGACORPORATION);
|
||||||
|
mainGame.initCharacters();
|
||||||
|
mainGame.setGamestate(GAMESTATE.PLAYING);
|
||||||
|
}
|
||||||
|
if (keycode == Input.Keys.NUM_2) {
|
||||||
|
System.out.println("HACKER");
|
||||||
|
mainGame.setChosenFaction(Faction.HACKER);
|
||||||
|
mainGame.initCharacters();
|
||||||
|
mainGame.setGamestate(GAMESTATE.PLAYING);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -122,25 +140,37 @@ public class GameInputProcessor implements InputProcessor {
|
|||||||
|
|
||||||
Vector3 touchPoint = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
|
Vector3 touchPoint = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
|
||||||
camera.unproject(touchPoint);
|
camera.unproject(touchPoint);
|
||||||
|
if (mainGame.getGamestate() == GAMESTATE.PLAYING) {
|
||||||
|
|
||||||
for (int row = 0; row < mainGame.mapRenderer.getGameTiles().length; row++) {
|
|
||||||
for (int col = 0; col < mainGame.mapRenderer.getGameTiles()[0].length; col++) {
|
for (int row = 0; row < mainGame.mapRenderer.getGameTiles().length; row++) {
|
||||||
GameTile gameTile = mainGame.mapRenderer.getGameTiles()[row][col];
|
for (int col = 0; col < mainGame.mapRenderer.getGameTiles()[0].length; col++) {
|
||||||
if (gameTile.contains(touchPoint.x, touchPoint.y)) {
|
GameTile gameTile = mainGame.mapRenderer.getGameTiles()[row][col];
|
||||||
if (button == Input.Buttons.LEFT) {
|
if (gameTile.contains(touchPoint.x, touchPoint.y)) {
|
||||||
|
if (button == Input.Buttons.LEFT) {
|
||||||
// System.out.println(gameTile + " row: " + row + ", col: " + col);
|
// System.out.println(gameTile + " row: " + row + ", col: " + col);
|
||||||
if (mainGame.hasCharacterSelected() && !gameTile.containsCharacter()) {
|
if (mainGame.hasCharacterSelected() && !gameTile.containsCharacter()) {
|
||||||
// System.out.println(mainGame.getSelectedCharacter());
|
// System.out.println(mainGame.getSelectedCharacter());
|
||||||
removeCharacterFromTile(mainGame.getSelectedCharacter());
|
if (gameTile.getSymbol() != '#' && mainGame.mapRenderer.getSurroundedTilesOfCurrentCharacter().contains(gameTile)) {
|
||||||
gameTile.visit(mainGame.getSelectedCharacter());
|
removeCharacterFromTile(mainGame.getSelectedCharacter());
|
||||||
|
gameTile.visit(mainGame.getSelectedCharacter());
|
||||||
|
mainGame.mapRenderer.setSurroundedTilesOfCurrentCharacter(col, row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!mainGame.hasCharacterSelected() && gameTile.containsCharacter()) {
|
||||||
|
if (gameTile.getCharacter().getFaction() == mainGame.getChosenFaction()) {
|
||||||
|
mainGame.setSelectedCharacter(gameTile.getCharacter());
|
||||||
|
mainGame.mapRenderer.setSurroundedTilesOfCurrentCharacter(col, row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (gameTile.containsCharacter()
|
||||||
|
&& !mainGame.getSelectedCharacter().equals(gameTile.getCharacter())
|
||||||
|
&& gameTile.getCharacter().getFaction() == mainGame.getChosenFaction()) {
|
||||||
|
mainGame.setSelectedCharacter(gameTile.getCharacter());
|
||||||
|
mainGame.mapRenderer.setSurroundedTilesOfCurrentCharacter(col, row);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (!mainGame.hasCharacterSelected() && gameTile.containsCharacter()) {
|
|
||||||
mainGame.setSelectedCharacter(gameTile.getCharacter());
|
|
||||||
}
|
|
||||||
if (gameTile.containsCharacter() && !mainGame.getSelectedCharacter().equals(gameTile.getCharacter())) {
|
|
||||||
mainGame.setSelectedCharacter(gameTile.getCharacter());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package netwerkprog.game.client.game.map;
|
package netwerkprog.game.client.game.map;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Map class to hold a 2d array of tiles which will specify the map
|
* Map class to hold a 2d array of tiles which will specify the map
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,9 +4,14 @@ import com.badlogic.gdx.Gdx;
|
|||||||
import com.badlogic.gdx.graphics.OrthographicCamera;
|
import com.badlogic.gdx.graphics.OrthographicCamera;
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
import com.badlogic.gdx.graphics.Texture;
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
import netwerkprog.game.client.MainGame;
|
|
||||||
import netwerkprog.game.util.graphics.Renderable;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
|
import netwerkprog.game.client.MainGame;
|
||||||
|
import netwerkprog.game.util.game.GameCharacter;
|
||||||
|
import netwerkprog.game.util.graphics.Renderable;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class MapRenderer implements Renderable {
|
public class MapRenderer implements Renderable {
|
||||||
private final OrthographicCamera camera;
|
private final OrthographicCamera camera;
|
||||||
@@ -19,6 +24,8 @@ public class MapRenderer implements Renderable {
|
|||||||
private static int y = 0;
|
private static int y = 0;
|
||||||
|
|
||||||
private MainGame mainGame;
|
private MainGame mainGame;
|
||||||
|
private Texture square;
|
||||||
|
private Texture square2;
|
||||||
|
|
||||||
|
|
||||||
public static TextureRegion FLOOR_TILE;
|
public static TextureRegion FLOOR_TILE;
|
||||||
@@ -26,6 +33,7 @@ public class MapRenderer implements Renderable {
|
|||||||
public static TextureRegion PATH_TILE;
|
public static TextureRegion PATH_TILE;
|
||||||
|
|
||||||
private GameTile[][] gameTiles;
|
private GameTile[][] gameTiles;
|
||||||
|
private List<GameTile> surroundedTilesOfCurrentCharacter;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -50,7 +58,14 @@ public class MapRenderer implements Renderable {
|
|||||||
* loads all the images for the tiles and adds all the tiles to the array
|
* loads all the images for the tiles and adds all the tiles to the array
|
||||||
*/
|
*/
|
||||||
private void makeTiles() {
|
private void makeTiles() {
|
||||||
Texture texture = new Texture(Gdx.files.internal(tilePath));
|
mainGame.assets.load("square.png", Texture.class);
|
||||||
|
mainGame.assets.load("square2.png", Texture.class);
|
||||||
|
mainGame.assets.load(tilePath, Texture.class);
|
||||||
|
mainGame.assets.finishLoading();
|
||||||
|
square = mainGame.assets.get("square.png");
|
||||||
|
square2 = mainGame.assets.get("square2.png");
|
||||||
|
|
||||||
|
Texture texture = mainGame.assets.get(tilePath);
|
||||||
TextureRegion[][] tileTextures = TextureRegion.split(texture, 32, 32);
|
TextureRegion[][] tileTextures = TextureRegion.split(texture, 32, 32);
|
||||||
|
|
||||||
FLOOR_TILE = tileTextures[1][6];
|
FLOOR_TILE = tileTextures[1][6];
|
||||||
@@ -100,18 +115,67 @@ public class MapRenderer implements Renderable {
|
|||||||
for (int col = 0; col < gameTiles[0].length; col++) {
|
for (int col = 0; col < gameTiles[0].length; col++) {
|
||||||
GameTile cur = gameTileRow[col];
|
GameTile cur = gameTileRow[col];
|
||||||
batch.draw(cur.getTextureRegion(), cur.x, cur.y);
|
batch.draw(cur.getTextureRegion(), cur.x, cur.y);
|
||||||
|
|
||||||
if (cur.containsCharacter()) {
|
if (cur.containsCharacter()) {
|
||||||
batch.draw(cur.getCharacter().getTextureRegion(), cur.x, cur.y);
|
batch.draw(cur.getCharacter().getTextureRegion(), cur.x, cur.y);
|
||||||
// System.out.println("drawing character at " + cur.x + " " + cur.y);
|
if (cur.getCharacter().equals(mainGame.getSelectedCharacter())) {
|
||||||
|
batch.draw(square, cur.x, cur.y);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (surroundedTilesOfCurrentCharacter != null && !surroundedTilesOfCurrentCharacter.isEmpty()) {
|
||||||
|
for (GameTile gameTile : surroundedTilesOfCurrentCharacter) {
|
||||||
|
batch.draw(square2, gameTile.x, gameTile.y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
batch.end();
|
batch.end();
|
||||||
x = 0;
|
x = 0;
|
||||||
y = 0;
|
y = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int[][] directions = new int[][]{{-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}};
|
||||||
|
|
||||||
|
public List<GameTile> setSurroundedTilesOfCurrentCharacter(int x, int y) {
|
||||||
|
List<GameTile> res = new ArrayList<GameTile>();
|
||||||
|
for (int[] direction : directions) {
|
||||||
|
int cx = x + direction[0];
|
||||||
|
int cy = y + direction[1];
|
||||||
|
if (cy >= 0 && cy < gameTiles.length)
|
||||||
|
if (cx >= 0 && cx < gameTiles[cy].length)
|
||||||
|
if (gameTiles[cy][cx].getSymbol() != '#')
|
||||||
|
res.add(gameTiles[cy][cx]);
|
||||||
|
}
|
||||||
|
surroundedTilesOfCurrentCharacter = res;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GameTile getTile(GameCharacter character) {
|
||||||
|
for (GameTile[] tiles : this.gameTiles) {
|
||||||
|
for (GameTile tile : tiles) {
|
||||||
|
if (tile.containsCharacter())
|
||||||
|
if (tile.getCharacter().equals(character)) {
|
||||||
|
return tile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Point getPos(GameTile tile) {
|
||||||
|
for (int row = 0; row < this.gameTiles.length; row++) {
|
||||||
|
for (int col = 0; col < this.gameTiles[0].length; col++) {
|
||||||
|
if (gameTiles[row][col].equals(tile)) {
|
||||||
|
return new Point(col, row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new Point(-1, -1);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(double deltaTime) {
|
public void update(double deltaTime) {
|
||||||
|
|
||||||
@@ -127,4 +191,9 @@ public class MapRenderer implements Renderable {
|
|||||||
public GameTile[][] getGameTiles() {
|
public GameTile[][] getGameTiles() {
|
||||||
return gameTiles;
|
return gameTiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<GameTile> getSurroundedTilesOfCurrentCharacter() {
|
||||||
|
return surroundedTilesOfCurrentCharacter;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
package netwerkprog.game.util.game;
|
package netwerkprog.game.util.game;
|
||||||
|
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.Texture;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
import com.badlogic.gdx.graphics.g2d.TextureRegion;
|
||||||
import com.badlogic.gdx.scenes.scene2d.Actor;
|
import com.badlogic.gdx.scenes.scene2d.Actor;
|
||||||
|
import netwerkprog.game.client.game.map.GameTile;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public abstract class GameCharacter extends Actor implements Comparable<GameCharacter> {
|
public abstract class GameCharacter extends Actor implements Comparable<GameCharacter> {
|
||||||
@@ -18,6 +18,7 @@ public abstract class GameCharacter extends Actor implements Comparable<GameChar
|
|||||||
protected boolean override;
|
protected boolean override;
|
||||||
protected TextureRegion textureRegion;
|
protected TextureRegion textureRegion;
|
||||||
protected int health;
|
protected int health;
|
||||||
|
protected List<GameTile> allowedToMove;
|
||||||
|
|
||||||
public GameCharacter(String name, Faction faction, TextureRegion textureRegion, Ability... abilities) {
|
public GameCharacter(String name, Faction faction, TextureRegion textureRegion, Ability... abilities) {
|
||||||
super();
|
super();
|
||||||
@@ -27,6 +28,7 @@ public abstract class GameCharacter extends Actor implements Comparable<GameChar
|
|||||||
this.override = false;
|
this.override = false;
|
||||||
this.textureRegion = textureRegion;
|
this.textureRegion = textureRegion;
|
||||||
this.health = 100;
|
this.health = 100;
|
||||||
|
this.allowedToMove = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
@@ -106,4 +108,16 @@ public abstract class GameCharacter extends Actor implements Comparable<GameChar
|
|||||||
", y=" + super.getY() +
|
", y=" + super.getY() +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<GameTile> getAllowedToMove() {
|
||||||
|
return allowedToMove;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAllowedToMove(List<GameTile> allowedToMove) {
|
||||||
|
this.allowedToMove = allowedToMove;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Faction getFaction() {
|
||||||
|
return faction;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
38
core/src/netwerkprog/game/util/graphics/TextRenderer.java
Normal file
38
core/src/netwerkprog/game/util/graphics/TextRenderer.java
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
package netwerkprog.game.util.graphics;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.Gdx;
|
||||||
|
import com.badlogic.gdx.graphics.OrthographicCamera;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.BitmapFont;
|
||||||
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
|
||||||
|
import com.badlogic.gdx.utils.Disposable;
|
||||||
|
|
||||||
|
public class TextRenderer implements Disposable {
|
||||||
|
private BitmapFont font;
|
||||||
|
private SpriteBatch batch;
|
||||||
|
private OrthographicCamera cam;
|
||||||
|
|
||||||
|
public TextRenderer() {
|
||||||
|
font = new BitmapFont();
|
||||||
|
batch = new SpriteBatch();
|
||||||
|
cam = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
||||||
|
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void dispose() {
|
||||||
|
font.dispose();
|
||||||
|
batch.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resize(int screenWidth, int screenHeight) {
|
||||||
|
cam = new OrthographicCamera(screenWidth, screenHeight);
|
||||||
|
cam.translate(screenWidth / 2, screenHeight / 2);
|
||||||
|
cam.update();
|
||||||
|
batch.setProjectionMatrix(cam.combined);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void render(String text, float x, float y) {
|
||||||
|
batch.begin();
|
||||||
|
font.draw(batch, text, x, y);
|
||||||
|
batch.end();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
package netwerkprog.game.util.tree;
|
package netwerkprog.game.util.tree;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
public class BST<E extends Comparable<E>> extends AbstractTree<E> {
|
public class BST<E extends Comparable<E>> extends AbstractTree<E> {
|
||||||
protected TreeNode<E> root;
|
protected TreeNode<E> root;
|
||||||
protected int size = 0;
|
protected int size = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user