diff --git a/Data/img/Mudry.png b/Data/img/Mudry.png new file mode 100644 index 0000000..164d5f7 Binary files /dev/null and b/Data/img/Mudry.png differ diff --git a/Data/img/Player.png b/Data/img/Player.png new file mode 100644 index 0000000..049d962 Binary files /dev/null and b/Data/img/Player.png differ diff --git a/Data/img/enemy.png b/Data/img/enemy.png new file mode 100644 index 0000000..164d5f7 Binary files /dev/null and b/Data/img/enemy.png differ diff --git a/src/Entity/Character.java b/src/Entity/Character.java index 9740196..e439828 100644 --- a/src/Entity/Character.java +++ b/src/Entity/Character.java @@ -29,6 +29,7 @@ public abstract class Character extends Entity{ int nFrames = 4; final float FRAME_TIME = 0.1f; // Duration of each frime private String img; + private String imgBattle; protected int pv; @@ -43,6 +44,8 @@ public abstract class Character extends Entity{ public Character(String name, int x, int y, String img, String map){ super(name, x, y, map); this.img = img; + + imgBattle = "./Data/img/" + name + ".png"; } @Override @@ -163,4 +166,8 @@ public abstract class Character extends Entity{ } abstract protected void removedPv(int pv); + + public String getImgBattle(){ + return imgBattle; + } } diff --git a/src/Entity/Enemy.java b/src/Entity/Enemy.java index 89f6078..d9b08f0 100644 --- a/src/Entity/Enemy.java +++ b/src/Entity/Enemy.java @@ -9,8 +9,7 @@ public class Enemy extends Character{ private String branch; public int recoveredTime = Settings.RECOVERED; - - + private int pvInit; public Enemy(String name, int x, int y, String img, String map, int pv, String branch, Character.Direction dir) { @@ -24,6 +23,9 @@ public class Enemy extends Character{ this.branch = branch; this.pv = pv; + + pvInit = pv; + } public void setPosition(int x, int y, String map){ @@ -50,5 +52,10 @@ public class Enemy extends Character{ //the pv can go under 0, but his real pv is 0 (for the player) return (pv<0) ? 0 : pv; } + + public int getPvInit(){ + return pvInit; + } + } diff --git a/src/Entity/Player.java b/src/Entity/Player.java index 1385a04..f15b0c7 100644 --- a/src/Entity/Player.java +++ b/src/Entity/Player.java @@ -16,6 +16,7 @@ public class Player extends Character{ private int xp = 0; public Enemy lastEnemy = null; public boolean onEnemy = false; + private static final int XP_MAX = 6000; public Player(int x, int y, String map) { super("Player", x, y, "Character_flipped", map); @@ -122,4 +123,8 @@ public class Player extends Character{ // TODO Auto-generated method stub } + + public int getXpMax(){ + return XP_MAX; + } } diff --git a/src/Game/Battle.java b/src/Game/Battle.java index f724359..c49545c 100644 --- a/src/Game/Battle.java +++ b/src/Game/Battle.java @@ -1,11 +1,14 @@ package Game; import Entity.Enemy; +import Entity.Player; import Text.TextEnemy; public class Battle { - private Enemy e; + public Enemy e; + public Player player; + public TextEnemy textEnemy; private int lineSpeech; @@ -141,4 +144,7 @@ public class Battle { public void setEnemy(Enemy e){ this.e = e; } + public void setPlayer(Player p){ + this.player = p; + } } diff --git a/src/Main/PokeMudry.java b/src/Main/PokeMudry.java index 39eae5b..c356cd6 100644 --- a/src/Main/PokeMudry.java +++ b/src/Main/PokeMudry.java @@ -77,6 +77,8 @@ public class PokeMudry extends PortableApplication { if(onMapScreen) sp.p.manageEntity(sp.sm, controller); + + // Switch screen if (sp.p.onEnemy && onMapScreen){ sp.e = sp.p.lastEnemy; @@ -84,9 +86,12 @@ public class PokeMudry extends PortableApplication { int pv = sp.e.getPv(); boolean recovered = sp.e.recoveredTime>=Settings.RECOVERED; + if (pv>0 && recovered) { sp.sb = sp.screenManager.getScreenBattle(); + sp.b = new Battle(sp.e); + sp.sb = sp.screenManager.getScreenBattle(); //set pv and xp to display sp.b.setXpPlayer(sp.p.getXp()); diff --git a/src/Screen/ScreenBattle.java b/src/Screen/ScreenBattle.java index 436b59d..959e653 100644 --- a/src/Screen/ScreenBattle.java +++ b/src/Screen/ScreenBattle.java @@ -14,6 +14,7 @@ import Entity.Player; import Game.Battle; import Main.PokeMudry; import Main.Settings; +import ch.hevs.gdx2d.components.bitmaps.BitmapImage; import ch.hevs.gdx2d.components.screen_management.RenderingScreen; import ch.hevs.gdx2d.lib.GdxGraphics; @@ -23,14 +24,20 @@ public class ScreenBattle extends RenderingScreen{ private static int HEIGHT_DIALOG = Settings.SIDE / 3; private static int WIDTH_DIALOG = Settings.SIDE - 2*EDGE; - private BitmapFont optimus40; + private BitmapFont unbuntuRegularBlack; + private BitmapFont unbuntuRegularWhite; + private BitmapImage enemyImg; + private BitmapImage playerImg; private Battle b = null; + private Enemy enemy; + @Override public void onInit() { //display the question - generateFont("./Data/font/Ubuntu-Regular.ttf", 30, Color.BLACK); + unbuntuRegularBlack = generateFont("./Data/font/Ubuntu-Regular.ttf", 30, Color.BLACK); + unbuntuRegularWhite = generateFont("./Data/font/Ubuntu-Regular.ttf", 45, Color.WHITE); } @@ -38,11 +45,19 @@ public class ScreenBattle extends RenderingScreen{ public void onGraphicRender(GdxGraphics g) { g.clear(Color.BLACK); displayDialog(g); + displayEnemy(g); + displayPlayer(g); } @Override public void dispose() { - optimus40.dispose(); + unbuntuRegularBlack.dispose(); + unbuntuRegularWhite.dispose(); + } + + public void setImg(){ + enemyImg = new BitmapImage(b.e.getImgBattle()); //width : 192, height : 240 + playerImg = new BitmapImage(b.player.getImgBattle()); } @@ -50,16 +65,17 @@ public class ScreenBattle extends RenderingScreen{ this.b = battle; } - public void generateFont(String file, int height, Color c ){ - + public BitmapFont generateFont(String file, int height, Color c ){ //Generate font with the file .ttf + BitmapFont font; FileHandle fileHandle = Gdx.files.internal(file); FreeTypeFontParameter parameter = new FreeTypeFontParameter(); FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fileHandle); parameter.size = generator.scaleForPixelHeight(height); parameter.color = c; - optimus40 = generator.generateFont(parameter); + font = generator.generateFont(parameter); generator.dispose(); + return font; } @@ -70,16 +86,26 @@ public class ScreenBattle extends RenderingScreen{ //dialog if(b == null) return; if(b.getLine() == null) return; - g.drawString(15, 260 ,b.getLine() , optimus40); + g.drawString(15, 260 ,b.getLine() , unbuntuRegularBlack); } - public void displayEnemy(Enemy e){ - // TODO affficher l'enemi + + public void displayEnemy(GdxGraphics g){ + //draw image + g.drawPicture(Settings.SIDE - (192/2), Settings.SIDE-240/2, enemyImg); + //draw pv + g.drawString(350, Settings.SIDE - 15 , "PV : " + b.pvEnemy + " / " + b.e.getPvInit(), unbuntuRegularWhite); + + } - public void displayPlayer(Player p){ - //TODO afficher le joueur + public void displayPlayer(GdxGraphics g){ + //draw image + + g.drawPicture((192/2), HEIGHT_DIALOG + 10 + 240/2, playerImg); + //draw pv + g.drawString(255, HEIGHT_DIALOG + 100 , "XP : " + b.xpPlayer + " / " + b.player.getXpMax() + "\nPV : " + b.player.getPv() + " / " + Settings.TIME*60, unbuntuRegularWhite); } diff --git a/src/Screen/ScreenPlayer.java b/src/Screen/ScreenPlayer.java index 131d432..6835a64 100644 --- a/src/Screen/ScreenPlayer.java +++ b/src/Screen/ScreenPlayer.java @@ -20,7 +20,8 @@ public class ScreenPlayer { //p = new Player(8, 15, "desert"); p = new Player(4, 2, "21RI"); - b = new Battle(new Enemy("enemy", 0, 0, "lumberjack_sheet32", "desert", 50, "enemy",Direction.NULL)); + e = new Enemy("enemy", 0, 0, "lumberjack_sheet32", "desert", 50, "enemy",Direction.NULL); + b = new Battle(e); // Create both type of screen and record for reuse screenManager.registerScreen(ScreenMap.class); @@ -38,6 +39,8 @@ public class ScreenPlayer { if(sb != null){ sb.setBattle(b); b.setEnemy(e); + b.setPlayer(p); + sb.setImg(); } screenManager.render(g);