Game.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package eu.tankernn.game;
  2. import static eu.tankernn.game.Settings.DUDV_MAP;
  3. import static eu.tankernn.game.Settings.NIGHT_TEXTURE_FILES;
  4. import static eu.tankernn.game.Settings.NORMAL_MAP;
  5. import static eu.tankernn.game.Settings.TEXTURE_FILES;
  6. import java.io.FileNotFoundException;
  7. import org.lwjgl.util.vector.Vector3f;
  8. import eu.tankernn.gameEngine.GameLauncher;
  9. import eu.tankernn.gameEngine.TankernnGame3D;
  10. import eu.tankernn.gameEngine.entities.Entity3D;
  11. import eu.tankernn.gameEngine.entities.Light;
  12. import eu.tankernn.gameEngine.entities.Player;
  13. import eu.tankernn.gameEngine.entities.PlayerCamera;
  14. import eu.tankernn.gameEngine.loader.textures.TerrainTexturePack;
  15. import eu.tankernn.gameEngine.loader.textures.Texture;
  16. import eu.tankernn.gameEngine.particles.ParticleMaster;
  17. import eu.tankernn.gameEngine.particles.ParticleSystem;
  18. import eu.tankernn.gameEngine.particles.ParticleTexture;
  19. import eu.tankernn.gameEngine.postProcessing.PostProcessor;
  20. import eu.tankernn.gameEngine.renderEngine.MasterRenderer;
  21. import eu.tankernn.gameEngine.renderEngine.water.WaterMaster;
  22. import eu.tankernn.gameEngine.renderEngine.water.WaterTile;
  23. import eu.tankernn.gameEngine.terrains.TerrainPack;
  24. import eu.tankernn.gameEngine.util.InternalFile;
  25. import eu.tankernn.gameEngine.util.MousePicker;
  26. public class Game extends TankernnGame3D {
  27. public Game() {
  28. super(Settings.GAME_NAME, TEXTURE_FILES, NIGHT_TEXTURE_FILES, new Light(new Vector3f(1, 1000, 1000), new Vector3f(1f, 1f, 1f)));
  29. try {
  30. setupTerrain();
  31. } catch (FileNotFoundException e) {
  32. e.printStackTrace();
  33. }
  34. player = new Player(loader.getModel(0), new Vector3f(0, 0, 0), new Vector3f(0, 0, 0), 1, loader.getBoundingBox(0), terrainPack);
  35. entities.add(player);
  36. camera = new PlayerCamera(player, terrainPack);
  37. renderer = new MasterRenderer(loader, camera, sky);
  38. try {
  39. waterMaster = new WaterMaster(loader, loader.loadTexture(DUDV_MAP), loader.loadTexture(NORMAL_MAP), camera);
  40. setupWater();
  41. } catch (FileNotFoundException e) {
  42. e.printStackTrace();
  43. }
  44. particleMaster = new ParticleMaster(loader, camera.getProjectionMatrix());
  45. try {
  46. ParticleSystem system = new ParticleSystem(new ParticleTexture(Texture.newTexture(new InternalFile("particles/particleAtlas.png")).create(), 4, false), 10, 20, 1, 2);
  47. system.setPosition(new Vector3f(10, 10, 10));
  48. particleMaster.addSystem(system);
  49. } catch (FileNotFoundException e) {
  50. e.printStackTrace();
  51. }
  52. entities.add(new Entity3D(loader.getModel(2), new Vector3f(10, 10, 10), new Vector3f(0, 0, 0), 1, loader.getBoundingBox(1)));
  53. entities.add(new Entity3D(loader.getModel(3), new Vector3f(10, 10, 10), new Vector3f(0, 0, 0), 1, loader.getBoundingBox(1)));
  54. postProcessor = new PostProcessor(loader);
  55. picker = new MousePicker(camera, camera.getProjectionMatrix(), entities, guiMaster.getGuis());
  56. }
  57. private void setupTerrain() throws FileNotFoundException {
  58. Texture backgroundTexture = loader.loadTexture("textures/grassy.png");
  59. Texture rTexture = loader.loadTexture("textures/dirt.png");
  60. Texture gTexture = loader.loadTexture("textures/pinkFlowers.png");
  61. Texture bTexture = loader.loadTexture("textures/path.png");
  62. TerrainTexturePack texturePack = new TerrainTexturePack(backgroundTexture, rTexture, gTexture, bTexture);
  63. Texture blendMap = loader.loadTexture("textures/blendMap.png");
  64. terrainPack = new TerrainPack(loader, texturePack, blendMap, 1235);
  65. }
  66. private void setupWater() {
  67. WaterTile water = new WaterTile(50, 50, 0, 50);
  68. waterMaster.addWaterTile(water);
  69. }
  70. public void update() {
  71. super.update();
  72. //TODO Check if there is a water tile above
  73. if (camera.getPosition().y < 0 && postProcessor.blurFactor < 2)
  74. postProcessor = new PostProcessor(loader, true);
  75. else if (camera.getPosition().y > 0 && postProcessor.blurFactor > 0)
  76. postProcessor = new PostProcessor(loader, false);
  77. if (picker.getCurrentTerrainPoint() != null) {
  78. entities.get(1).setPosition(picker.getCurrentTerrainPoint());
  79. }
  80. }
  81. public static void main(String[] args) {
  82. GameLauncher.init(Settings.GAME_NAME, 1600, 900);
  83. GameLauncher.launch(new Game());
  84. }
  85. }