diff --git a/resources/map/Maps.tiled-session b/resources/map/Maps.tiled-session index 16e8d38..58fc577 100644 --- a/resources/map/Maps.tiled-session +++ b/resources/map/Maps.tiled-session @@ -10,7 +10,8 @@ "file.lastUsedOpenFilter": "Fichiers de jeu de tuiles Tiled (*.tsx *.xml)", "fileStates": { "": { - "scaleInDock": 1 + "scaleInDock": 1, + "scaleInEditor": 1 }, "C:/Users/remi/AppData/Roaming/Tiled/#Tests": { "dynamicWrapping": true @@ -197,8 +198,8 @@ "scale": 0.75, "selectedLayer": 1, "viewCenter": { - "x": 640.6666666666667, - "y": 640.6666666666666 + "x": 640, + "y": 640 } }, "desert.tmx#Desert": { @@ -212,7 +213,7 @@ "scale": 1.5, "selectedLayer": 1, "viewCenter": { - "x": 160.33333333333331, + "x": 160.66666666666669, "y": 160.33333333333331 } }, @@ -224,11 +225,11 @@ "expandedObjectLayers": [ 9 ], - "scale": 1, + "scale": 3, "selectedLayer": 4, "viewCenter": { - "x": 320.5, - "y": 159.5 + "x": 62.66666666666667, + "y": 172.83333333333331 } }, "test_couloir.tmx#Dungeon_Tileset": { diff --git a/resources/map/test_couloir.tmx b/resources/map/test_couloir.tmx index 0cc80cb..bb2d47c 100644 --- a/resources/map/test_couloir.tmx +++ b/resources/map/test_couloir.tmx @@ -8984,8 +8984,8 @@ 956,956,956,956,956,956,956,956,956,956,956,956,956,956,956,956,956,956,956,956, -956,956,956,956,956,956,956,956,956,956,956,956,956,956,956,956,956,956,956,956, -1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079, +956,956,956,1113,1113,956,956,956,956,956,956,956,956,956,956,1113,1113,956,956,956, +1079,1079,1079,1113,1113,1079,1079,1079,1079,1079,1079,1079,1079,1079,1079,1113,1113,1079,1079,1079, 1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113, 1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113, 1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113,1113, @@ -9024,28 +9024,28 @@ - + - + - + - + diff --git a/src/Entity/Character.java b/src/Entity/Character.java index 8415477..934736d 100644 --- a/src/Entity/Character.java +++ b/src/Entity/Character.java @@ -32,10 +32,9 @@ public abstract class Character extends Entity{ protected int pv; - public Character(String name, int x, int y, String img){ - super(name, x, y); + public Character(String name, int x, int y, String img, String map){ + super(name, x, y, map); this.img = img; - } @Override diff --git a/src/Entity/Enemy.java b/src/Entity/Enemy.java index a89a5c8..9b56d9e 100644 --- a/src/Entity/Enemy.java +++ b/src/Entity/Enemy.java @@ -3,12 +3,11 @@ package Entity; import com.badlogic.gdx.math.Vector2; public class Enemy extends Character{ - private String map; public Enemy(String name, int x, int y, String img, String map) { - super(name, x, y, img); + super(name, x, y, img, map); //generate his text this.map = map; @@ -19,10 +18,6 @@ public class Enemy extends Character{ } - public String getMap() { - return map; - } - public void setPosition(int x, int y, String map){ position.set(x, y); this.map = map; diff --git a/src/Entity/Entity.java b/src/Entity/Entity.java index 42b8728..9d69b21 100644 --- a/src/Entity/Entity.java +++ b/src/Entity/Entity.java @@ -8,6 +8,7 @@ import ch.hevs.gdx2d.lib.interfaces.DrawableObject; public abstract class Entity implements DrawableObject { protected String name; + protected String map; Spritesheet ss; @@ -20,19 +21,17 @@ public abstract class Entity implements DrawableObject { protected boolean move = false; - public Entity(String name){ - this(name, new Vector2(0,0)); + + public Entity(String name, int x, int y, String map){ + this(name, new Vector2(SPRITE_WIDTH * x, SPRITE_HEIGHT * y), map); } - public Entity(String name, int x, int y){ - this(name, new Vector2(SPRITE_WIDTH * x, SPRITE_HEIGHT * y)); - } - - public Entity(String name, Vector2 initialPosition){ + public Entity(String name, Vector2 initialPosition, String map){ this.name = name; lastPosition = new Vector2(initialPosition); newPosition = new Vector2(initialPosition); position = new Vector2(initialPosition); + this.map = map; } public void init(){ @@ -58,4 +57,8 @@ public abstract class Entity implements DrawableObject { public String getName() { return name; } + + public String getMap() { + return map; + } } diff --git a/src/Entity/Player.java b/src/Entity/Player.java index 06c6d45..ed31a4b 100644 --- a/src/Entity/Player.java +++ b/src/Entity/Player.java @@ -1,5 +1,6 @@ package Entity; +import java.util.TreeMap; import java.util.Vector; import com.badlogic.gdx.Input; @@ -7,14 +8,17 @@ import com.badlogic.gdx.maps.tiled.TiledMapTile; import com.badlogic.gdx.math.Vector2; import Control.Controller; +import Main.PokeMudry; import Screen.ScreenMap; public class Player extends Character{ private int xp; + public Enemy lastEnemy = null; + public boolean frontOfEnemy = false; - public Player(int x, int y) { - super("Player", x, y, "Character"); + public Player(int x, int y, String map) { + super("Player", x, y, "Character", map); } public void addXp(int xp){ @@ -29,25 +33,36 @@ public class Player extends Character{ // Compute direction and next cell Vector nextCell = new Vector<>(); Player.Direction goalDirection = Player.Direction.NULL; + Vector2 nextPos = position; if (c.keyStatus.get(Input.Keys.RIGHT)) { goalDirection = Player.Direction.RIGHT; nextCell = sm.getTile(getPosition(), 1, 0); + nextPos.x+=sm.tileWidth; } else if (c.keyStatus.get(Input.Keys.LEFT)) { goalDirection = Player.Direction.LEFT; nextCell = sm.getTile(getPosition(), -1, 0); + nextPos.x-=sm.tileWidth; } else if (c.keyStatus.get(Input.Keys.UP)) { goalDirection = Player.Direction.UP; nextCell = sm.getTile(getPosition(), 0, 1); + nextPos.y+=sm.tileHeight; } else if (c.keyStatus.get(Input.Keys.DOWN)) { goalDirection = Player.Direction.DOWN; nextCell = sm.getTile(getPosition(), 0, -1); + nextPos.y-=sm.tileHeight; } // Is the move valid ? if (sm.isWalkable(nextCell)) { - setSpeed(sm.getSpeed(nextCell)); - go(goalDirection); + + if (enemy(sm, nextPos)) { + //turn(goalDirection); + System.out.println("It's a enemy !!"); + } else { + setSpeed(sm.getSpeed(nextCell)); + go(goalDirection); + } } else { // Face the wall turn(goalDirection); @@ -65,29 +80,31 @@ public class Player extends Character{ } catch (Exception e) { } ScreenMap.Door.reset(); if (nMap == null || x == null || y == null) return; - sm.map = nMap; + map = nMap; setPosition(x*sm.tileWidth, y*sm.tileHeight); System.out.println("Go to: " + sm.map + " in " + x + " x " + y); } } } - private boolean enemy() { - //Vector enemies = PokeMudry.getEnemies; - //for (Enemy enemy : enemies) { - - //} + private boolean enemy(ScreenMap sm, Vector2 nextPos) { + Vector enemies = PokeMudry.getEnemies(); + for (Enemy enemy : enemies) { + boolean bMap = sm.map.equals(enemy.getMap()); + int pX = (int) nextPos.x/sm.tileWidth; + int pY = (int) nextPos.y/sm.tileHeight; + int eX = (int) enemy.position.x/sm.tileWidth; + int eY = (int) enemy.position.y/sm.tileHeight; + //System.out.println("Player: " + pX + " x " + pY + " - Enemy: " + eX + " x " + eY); + if(bMap && pX==eX && pY==eY) { + lastEnemy = enemy; + frontOfEnemy = true; + return true; + } + } return false; } - public void move(int x, int y){ - - } - - public void move(Vector2 vMove){ - move((int)vMove.x, (int)vMove.y); - } - @Override protected void removedPv(int pv) { // TODO Auto-generated method stub diff --git a/src/Entity/Stuff.java b/src/Entity/Stuff.java index 3afa338..6562e43 100644 --- a/src/Entity/Stuff.java +++ b/src/Entity/Stuff.java @@ -4,8 +4,8 @@ import ch.hevs.gdx2d.lib.GdxGraphics; public class Stuff extends Entity{ - public Stuff(String name) { - super(name); + public Stuff(String name, int x, int y, String map) { + super(name, x, y, map); //TODO Auto-generated constructor stub } diff --git a/src/Main/PokeMudry.java b/src/Main/PokeMudry.java index ae3b330..094fdbe 100644 --- a/src/Main/PokeMudry.java +++ b/src/Main/PokeMudry.java @@ -2,28 +2,22 @@ package Main; import java.util.Vector; +import java.util.Map.Entry; import com.badlogic.gdx.Input; import Control.Controller; import Entity.Enemy; import Entity.Entity; +import Screen.ScreenMap; import Screen.ScreenPlayer; import ch.hevs.gdx2d.desktop.PortableApplication; import ch.hevs.gdx2d.lib.GdxGraphics; public class PokeMudry extends PortableApplication { - - public final boolean ANDROID = false; - public final int PLAYERS = 1; - public static final int TIME = 10; // number of minutes for kill all enemy - - public static final int HEIGHT = 800; - public static final int width = 800; private ScreenPlayer sp; private Controller controller; - //private Player p1; private static Vector enemies = new Vector<>(); private static Vector entities = new Vector<>(); @@ -48,15 +42,11 @@ public class PokeMudry extends PortableApplication { controller.init(); entities.add((Entity) sp.p); enemies.add(new Enemy("Mudry", 10, 15, "lumberjack_sheet32", "desert")); - enemies.add(new Enemy("Pignat", 12, 15, "lumberjack_sheet32", "desert")); + enemies.add(new Enemy("Pignat", 5, 1, "lumberjack_sheet32", "test")); - for (Enemy enemy : enemies) { - entities.add(enemy); - } + for (Enemy enemy : enemies) { entities.add(enemy); } - for (Entity entity : entities) { - entity.init(); - } + for (Entity entity : entities) { entity.init(); } } @Override @@ -64,9 +54,20 @@ public class PokeMudry extends PortableApplication { g.clear(); sp.p.manageEntity(sp.sm, controller); sp.render(g); + System.out.println(sp.screenManager.getActiveScreen().getClass()); + //System.out.println(ScreenMap.class); for (Entity entity : entities) { - entity.graphicRender(g); + + if (entity.getMap().equals(sp.sm.map) && sp.screenManager.getActiveScreen().getClass().equals(ScreenMap.class)) + entity.graphicRender(g); } + + if (sp.p.frontOfEnemy && sp.screenManager.getActiveScreen().getClass().equals(ScreenMap.class)){ + sp.e = sp.p.lastEnemy; + System.out.println("switch screen"); + sp.screenManager.activateNextScreen(); + g.resetCamera(); + } } @@ -79,8 +80,6 @@ public class PokeMudry extends PortableApplication { case Input.Keys.Z: if (sp.sm.zoom == 1.0) { sp.sm.zoom = 0.5f; - } else if (sp.sm.zoom == 0.5) { - sp.sm.zoom = 0.25f; } else { sp.sm.zoom = 1; } diff --git a/src/Main/Settings.java b/src/Main/Settings.java index cd99584..fe96e1e 100644 --- a/src/Main/Settings.java +++ b/src/Main/Settings.java @@ -2,8 +2,8 @@ package Main; public class Settings { - public final boolean ANDROID = false; - public final int PLAYERS = 1; + public static final boolean ANDROID = false; + public static final int PLAYERS = 1; public static final int TIME = 10; // number of minutes for kill all enemy public static final int SIDE = 800; diff --git a/src/Screen/ManagerOfScreen.java b/src/Screen/ManagerOfScreen.java index e53db94..0d5e92a 100644 --- a/src/Screen/ManagerOfScreen.java +++ b/src/Screen/ManagerOfScreen.java @@ -4,15 +4,14 @@ import ch.hevs.gdx2d.lib.ScreenManager; public class ManagerOfScreen extends ScreenManager{ ManagerOfScreen(){ - } - ScreenMap getScreenMap(){ + public ScreenMap getScreenMap(){ this.activateScreen(0); return (ScreenMap)this.getActiveScreen(); } - ScreenBattle getScreenBattle(){ + public ScreenBattle getScreenBattle(){ this.activateScreen(1); return (ScreenBattle)this.getActiveScreen(); } diff --git a/src/Screen/ScreenBattle.java b/src/Screen/ScreenBattle.java index d8f373a..4680401 100644 --- a/src/Screen/ScreenBattle.java +++ b/src/Screen/ScreenBattle.java @@ -25,6 +25,11 @@ public class ScreenBattle extends RenderingScreen{ private static int EDGE = 10; private static int HEIGHT_DIALOG = Settings.SIDE / 3; private static int WIDTH_DIALOG = Settings.SIDE - 2*EDGE; + private Enemy e; + + private boolean attackOn; + private int numAttack =0; + private BitmapFont optimus40; @@ -87,6 +92,13 @@ public class ScreenBattle extends RenderingScreen{ g.drawString(15, 245 ,lineDialog , optimus40); } + public void setEnemy(Enemy e) { + this.e = e; + } + + public void displayEnemy(Enemy e){ + // stock his speech + } public void displayPlayer(Player p){ //TODO afficher le joueur diff --git a/src/Screen/ScreenMap.java b/src/Screen/ScreenMap.java index 9a109db..9cd2527 100644 --- a/src/Screen/ScreenMap.java +++ b/src/Screen/ScreenMap.java @@ -27,12 +27,13 @@ public class ScreenMap extends RenderingScreen{ private MapObjects doors; Map tMap = new TreeMap(); Map tMapRenderer = new TreeMap(); - public String map = "desert"; + public String map = "test_couloir"; public float zoom; private int width; public int tileWidth; private int height; public int tileHeight; + private Player player; @@ -47,6 +48,8 @@ public class ScreenMap extends RenderingScreen{ // Set initial zoom zoom = 1; + try { map = player.getMap(); } catch (Exception e) {} + // create map createMap("test"); createMap("test_couloir"); @@ -57,6 +60,9 @@ public class ScreenMap extends RenderingScreen{ public void onGraphicRender(GdxGraphics g) { tiledLayer.clear(); + + try { map = player.getMap(); } catch (Exception e) {} + for (int i = 0; i < 50; i++) { try { tiledLayer.add((TiledMapTileLayer) tMap.get(map).getLayers().get(i)); } catch (Exception e) { } } @@ -73,18 +79,19 @@ public class ScreenMap extends RenderingScreen{ // Render the tileMap + try { + g.zoom(zoom); + g.moveCamera(player.getPosition().x, player.getPosition().y, width * tileWidth, height * tileHeight); + } catch (Exception e) { + //TODO: handle exception + } + tMapRenderer.get(map).setView(g.getCamera()); tMapRenderer.get(map).render(); g.drawFPS(); } - void camera(GdxGraphics g, Player player){ - g.zoom(zoom); - g.moveCamera(player.getPosition().x, player.getPosition().y, width * tileWidth, height * tileHeight); - - } - public Vector getTile(Vector2 position, int offsetX, int offsetY) { Vector tiles = new Vector<>(); @@ -165,4 +172,8 @@ public class ScreenMap extends RenderingScreen{ nextY = null; } } + + public void setPlayer(Player p) { + player = p; + } } diff --git a/src/Screen/ScreenPlayer.java b/src/Screen/ScreenPlayer.java index 042a75e..a445491 100644 --- a/src/Screen/ScreenPlayer.java +++ b/src/Screen/ScreenPlayer.java @@ -1,24 +1,28 @@ package Screen; +import Entity.Enemy; import Entity.Player; import ch.hevs.gdx2d.lib.GdxGraphics; public class ScreenPlayer { public ManagerOfScreen screenManager = new ManagerOfScreen(); public Player p; + public Enemy e; public ScreenMap sm; - + public ScreenBattle sb; public void init(){ + p = new Player(8, 15, "desert"); screenManager.registerScreen(ScreenMap.class); screenManager.registerScreen(ScreenBattle.class); + sb = screenManager.getScreenBattle(); sm = screenManager.getScreenMap(); - p = new Player(8, 15); } public void render(GdxGraphics g){ + sb.setEnemy(e); + sm.setPlayer(p); screenManager.render(g); - sm.camera(g, p); } } \ No newline at end of file