1
0
mirror of https://github.com/Klagarge/PokeHES.git synced 2025-03-14 23:04:33 +00:00
PokeHES/src/Main/PokeMudry.java
2022-06-16 19:14:46 +02:00

153 lines
4.7 KiB
Java

package Main;
import java.util.Vector;
import Control.Controller;
import Entity.Character.Direction;
import Entity.Enemy;
import Entity.Entity;
import Game.Battle;
import Screen.ScreenBattle;
import Screen.ScreenEnd;
import Screen.ScreenMap;
import Screen.ScreenPlayer;
import ch.hevs.gdx2d.desktop.PortableApplication;
import ch.hevs.gdx2d.lib.GdxGraphics;
public class PokeMudry extends PortableApplication {
private ScreenPlayer sp;
private Controller controller;
private static Vector<Enemy> enemies = new Vector<>();
private static Vector<Entity> entities = new Vector<>();
private long beginTime;
private long lastMesure;
public static boolean front_montant = false;
public static void main(String[] args) {
new PokeMudry();
}
PokeMudry(){
super(Settings.SIDE, Settings.SIDE);
controller = new Controller();
sp = new ScreenPlayer();
}
public static Vector<Enemy> getEnemies() {
return enemies;
}
@Override
public void onInit() {
sp.init();
controller.init();
// add player, create and add all enemies in entities
entities.add((Entity) sp.p);
enemies.add(new Enemy("Mudry", 5, 11, "lumberjack_sheet32", "21N304", 25, "informatique", Direction.DOWN));
enemies.add(new Enemy("Paciotti", 5, 11, "lumberjack_sheet32", "21N205", 0, "mecanique", Direction.DOWN));
enemies.add(new Enemy("Gloeckner", 1, 7, "lumberjack_sheet32", "21N307", 0, "allemand", Direction.RIGHT));
enemies.add(new Enemy("Bianchi", 1, 3, "lumberjack_sheet32", "23N308", 0, "electricite", Direction.RIGHT));
enemies.add(new Enemy("Nicollier", 4, 2, "lumberjack_sheet32", "21N308", 0, "mathematique", Direction.LEFT));
enemies.add(new Enemy("Ellert", 1, 4, "lumberjack_sheet32", "23N215", 0, "physique", Direction.RIGHT));
for (Enemy enemy : enemies) { entities.add(enemy); }
//Init all entities
for (Entity entity : entities) { entity.init(); }
beginTime = System.currentTimeMillis();
lastMesure = beginTime;
}
@Override
public void onGraphicRender(GdxGraphics g) {
g.clear();
boolean onMapScreen = sp.screenManager.getActiveScreen().getClass().equals(ScreenMap.class);
boolean onBattleScreen = sp.screenManager.getActiveScreen().getClass().equals(ScreenBattle.class);
boolean onEndScreen = sp.screenManager.getActiveScreen().getClass().equals(ScreenEnd.class);
long timeNow = System.currentTimeMillis();
if((timeNow-lastMesure) >= 1000 && !onEndScreen){ // one second
lastMesure = timeNow;
sp.p.removedPv(1);
for (Enemy enemy : enemies) { enemy.recoveredTime++; }
}
//end of the game
if(sp.p.getPv() <= 0 && !onEndScreen) {
g.zoom(1);
g.resetCamera();
sp.se = sp.screenManager.getScreenEnd();
System.out.println("Game finished");
}
if(onMapScreen) sp.p.manageEntity(sp.sm, controller);
// Switch screen
if (sp.p.onEnemy && onMapScreen){
sp.e = sp.p.lastEnemy;
int pv = sp.e.getPv();
boolean recovered = sp.e.recoveredTime>=Settings.RECOVERED;
if (pv>0 && recovered) {
sp.b = new Battle(sp.e);
sp.sb = sp.screenManager.getScreenBattle();
//set pv and xp to display
sp.b.setXpPlayer(sp.p.getXp());
g.zoom(1);
g.resetCamera();
} else {
sp.p.onEnemy = false;
}
}
if(onBattleScreen) sp.sb.manage(controller, sp.b);
if(!sp.b.getScreenBattleOn() && onBattleScreen){
//addXp for the player
sp.p.addXp(sp.b.getNewXp());
//remove pv of the enemy
sp.e.removedPv(sp.b.getNewXp());
sp.p.onEnemy = false;
sp.sm = sp.screenManager.getScreenMap();
}
// Graphics render
sp.render(g);
for (Entity entity : entities) {
// Render only entities on the good map
if (entity.getMap().equals(sp.sm.map) && onMapScreen)
entity.graphicRender(g);
}
}
//key gestion
@Override
public void onKeyDown(int keycode) {
super.onKeyDown(keycode);
front_montant = true;
controller.keyStatus.put(keycode, true);
sp.screenManager.getActiveScreen().onKeyUp(keycode);
}
@Override
public void onKeyUp(int keycode) {
super.onKeyUp(keycode);
front_montant = false;
controller.keyStatus.put(keycode, false);
sp.screenManager.getActiveScreen().onKeyDown(keycode);
}
}