1
0
mirror of https://github.com/Klagarge/PokeHES.git synced 2024-11-26 19:13:27 +00:00

Merge pull request #37 from Klagarge/battlescreen-display

Battlescreen-display
This commit is contained in:
Rémi Heredero 2022-06-16 15:49:53 +02:00 committed by GitHub
commit da6d94945b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 74 additions and 15 deletions

BIN
Data/img/Mudry.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
Data/img/Player.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
Data/img/enemy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

View File

@ -29,6 +29,7 @@ public abstract class Character extends Entity{
int nFrames = 4; int nFrames = 4;
final float FRAME_TIME = 0.1f; // Duration of each frime final float FRAME_TIME = 0.1f; // Duration of each frime
private String img; private String img;
private String imgBattle;
protected int pv; 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){ public Character(String name, int x, int y, String img, String map){
super(name, x, y, map); super(name, x, y, map);
this.img = img; this.img = img;
imgBattle = "./Data/img/" + name + ".png";
} }
@Override @Override
@ -163,4 +166,8 @@ public abstract class Character extends Entity{
} }
abstract protected void removedPv(int pv); abstract protected void removedPv(int pv);
public String getImgBattle(){
return imgBattle;
}
} }

View File

@ -9,8 +9,7 @@ public class Enemy extends Character{
private String branch; private String branch;
public int recoveredTime = Settings.RECOVERED; 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) { 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.branch = branch;
this.pv = pv; this.pv = pv;
pvInit = pv;
} }
public void setPosition(int x, int y, String map){ 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) //the pv can go under 0, but his real pv is 0 (for the player)
return (pv<0) ? 0 : pv; return (pv<0) ? 0 : pv;
} }
public int getPvInit(){
return pvInit;
}
} }

View File

@ -16,6 +16,7 @@ public class Player extends Character{
private int xp = 0; private int xp = 0;
public Enemy lastEnemy = null; public Enemy lastEnemy = null;
public boolean onEnemy = false; public boolean onEnemy = false;
private static final int XP_MAX = 6000;
public Player(int x, int y, String map) { public Player(int x, int y, String map) {
super("Player", x, y, "Character_flipped", map); super("Player", x, y, "Character_flipped", map);
@ -122,4 +123,8 @@ public class Player extends Character{
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
public int getXpMax(){
return XP_MAX;
}
} }

View File

@ -1,11 +1,14 @@
package Game; package Game;
import Entity.Enemy; import Entity.Enemy;
import Entity.Player;
import Text.TextEnemy; import Text.TextEnemy;
public class Battle { public class Battle {
private Enemy e; public Enemy e;
public Player player;
public TextEnemy textEnemy; public TextEnemy textEnemy;
private int lineSpeech; private int lineSpeech;
@ -141,4 +144,7 @@ public class Battle {
public void setEnemy(Enemy e){ public void setEnemy(Enemy e){
this.e = e; this.e = e;
} }
public void setPlayer(Player p){
this.player = p;
}
} }

View File

@ -77,6 +77,8 @@ public class PokeMudry extends PortableApplication {
if(onMapScreen) sp.p.manageEntity(sp.sm, controller); if(onMapScreen) sp.p.manageEntity(sp.sm, controller);
// Switch screen // Switch screen
if (sp.p.onEnemy && onMapScreen){ if (sp.p.onEnemy && onMapScreen){
sp.e = sp.p.lastEnemy; sp.e = sp.p.lastEnemy;
@ -84,9 +86,12 @@ public class PokeMudry extends PortableApplication {
int pv = sp.e.getPv(); int pv = sp.e.getPv();
boolean recovered = sp.e.recoveredTime>=Settings.RECOVERED; boolean recovered = sp.e.recoveredTime>=Settings.RECOVERED;
if (pv>0 && recovered) { if (pv>0 && recovered) {
sp.sb = sp.screenManager.getScreenBattle(); sp.sb = sp.screenManager.getScreenBattle();
sp.b = new Battle(sp.e); sp.b = new Battle(sp.e);
sp.sb = sp.screenManager.getScreenBattle();
//set pv and xp to display //set pv and xp to display
sp.b.setXpPlayer(sp.p.getXp()); sp.b.setXpPlayer(sp.p.getXp());

View File

@ -14,6 +14,7 @@ import Entity.Player;
import Game.Battle; import Game.Battle;
import Main.PokeMudry; import Main.PokeMudry;
import Main.Settings; import Main.Settings;
import ch.hevs.gdx2d.components.bitmaps.BitmapImage;
import ch.hevs.gdx2d.components.screen_management.RenderingScreen; import ch.hevs.gdx2d.components.screen_management.RenderingScreen;
import ch.hevs.gdx2d.lib.GdxGraphics; 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 HEIGHT_DIALOG = Settings.SIDE / 3;
private static int WIDTH_DIALOG = Settings.SIDE - 2*EDGE; 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 Battle b = null;
private Enemy enemy;
@Override @Override
public void onInit() { public void onInit() {
//display the question //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) { public void onGraphicRender(GdxGraphics g) {
g.clear(Color.BLACK); g.clear(Color.BLACK);
displayDialog(g); displayDialog(g);
displayEnemy(g);
displayPlayer(g);
} }
@Override @Override
public void dispose() { 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; 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 //Generate font with the file .ttf
BitmapFont font;
FileHandle fileHandle = Gdx.files.internal(file); FileHandle fileHandle = Gdx.files.internal(file);
FreeTypeFontParameter parameter = new FreeTypeFontParameter(); FreeTypeFontParameter parameter = new FreeTypeFontParameter();
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fileHandle); FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fileHandle);
parameter.size = generator.scaleForPixelHeight(height); parameter.size = generator.scaleForPixelHeight(height);
parameter.color = c; parameter.color = c;
optimus40 = generator.generateFont(parameter); font = generator.generateFont(parameter);
generator.dispose(); generator.dispose();
return font;
} }
@ -70,16 +86,26 @@ public class ScreenBattle extends RenderingScreen{
//dialog //dialog
if(b == null) return; if(b == null) return;
if(b.getLine() == 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){ public void displayPlayer(GdxGraphics g){
//TODO afficher le joueur //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);
} }

View File

@ -20,7 +20,8 @@ public class ScreenPlayer {
//p = new Player(8, 15, "desert"); //p = new Player(8, 15, "desert");
p = new Player(4, 2, "21RI"); 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 // Create both type of screen and record for reuse
screenManager.registerScreen(ScreenMap.class); screenManager.registerScreen(ScreenMap.class);
@ -38,6 +39,8 @@ public class ScreenPlayer {
if(sb != null){ if(sb != null){
sb.setBattle(b); sb.setBattle(b);
b.setEnemy(e); b.setEnemy(e);
b.setPlayer(p);
sb.setImg();
} }
screenManager.render(g); screenManager.render(g);