Level.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package pathgame.gameplay;
  2. import pathgame.algorithm.TravellingSalesAlg;
  3. import pathgame.logging.Logger;
  4. import pathgame.tilemap.TileMap;
  5. import pathgame.tilemap.TileMapGenerator;
  6. public final class Level
  7. {
  8. private final Player player = new Player();
  9. private int level = 1;
  10. private TileMap map = null;
  11. private boolean showScoreMenu = false;
  12. private boolean showAfterScore = false;
  13. public Level()
  14. {
  15. reset();
  16. }
  17. public void tick(Gamestate gamestate)
  18. {
  19. map.tick();
  20. if(gamestate.is(Gamestates.GAMEPLAY) && !showScoreMenu)
  21. {
  22. player.tick(map);
  23. }
  24. if(gamestate.is(Gamestates.GAMEPLAY) && !showScoreMenu && (player.hasLost() || player.hasWon()))
  25. {
  26. showScoreMenu = true;
  27. }
  28. else if(showScoreMenu && Keys.CONFIRM_KEY.getTime() == 1)
  29. {
  30. showScoreMenu = false;
  31. showAfterScore = true;
  32. }
  33. }
  34. public void nextLevel()
  35. {
  36. level++;
  37. reset();
  38. }
  39. public void reset()
  40. {
  41. int levelW = Math.round(16.0f + (level * 16.0f / 9.0f));
  42. int levelH = Math.round(9.0f + (level * 16.0f / 16.0f));
  43. int towns = Math.round(2.0f + level * 0.5f);
  44. map = TileMapGenerator.getMap(levelW, levelH, level, towns);
  45. player.reset(map.getHomeX(), map.getHomeY());
  46. player.setObjectivesAmount(map.getNumberOfTowns());
  47. int algoEnergy = TravellingSalesAlg.calcSalesPathLen(map, player);
  48. player.setEnergySupply(algoEnergy);
  49. Logger.onLevelReset(level, player, map);
  50. }
  51. public TileMap getMap()
  52. {
  53. return map;
  54. }
  55. public Player getPlayer()
  56. {
  57. return player;
  58. }
  59. public int getLevel()
  60. {
  61. return level;
  62. }
  63. public boolean isShowingAfterScore()
  64. {
  65. return showAfterScore;
  66. }
  67. public void setShowAfterScore(boolean show)
  68. {
  69. showAfterScore = show;
  70. }
  71. public boolean isShowingScoreMenu()
  72. {
  73. return showScoreMenu;
  74. }
  75. }