package Main; import java.util.Vector; import com.badlogic.gdx.Input; import Control.Controller; import Entity.Enemy; import Entity.Entity; import Entity.Character.Direction; import Game.Battle; import Screen.ScreenBattle; 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 enemies = new Vector<>(); private static Vector entities = new Vector<>(); 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 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(); } } @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); 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(); if (pv>0) { sp.sb = sp.screenManager.getScreenBattle(); sp.b = new Battle(sp.e); //set pv and xp to display sp.b.setXpPlayer(sp.p.getXp()); 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; switch (keycode) { case Input.Keys.Z: if (sp.sm.zoom == 1.0) { sp.sm.zoom = 0.5f; } else { sp.sm.zoom = 1; } return; default: break; } 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); } }