From 5787b6a920244baa93b127ab6c858d809e1c2d78 Mon Sep 17 00:00:00 2001 From: h4570 Date: Mon, 7 Dec 2020 22:11:21 +0100 Subject: [PATCH] refactor #1 --- src/samples/floors/floors.cpp | 31 +++++++++---------- src/samples/floors/floors.hpp | 4 +-- src/samples/floors/managers/floor_manager.cpp | 8 ++++- src/samples/floors/managers/floor_manager.hpp | 4 ++- src/samples/floors/objects/player.cpp | 5 ++- src/samples/floors/objects/player.hpp | 3 +- 6 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/samples/floors/floors.cpp b/src/samples/floors/floors.cpp index 1c1324d..2a55ab1 100644 --- a/src/samples/floors/floors.cpp +++ b/src/samples/floors/floors.cpp @@ -17,8 +17,7 @@ const u16 FLOORS_COUNT = 144; // Temp change it also in floor_manager.hpp Floors::Floors(Engine *t_engine) - : engine(t_engine), floorManager(FLOORS_COUNT), - player(&t_engine->audio), camera(&t_engine->screen) + : engine(t_engine), floorManager(), camera(&t_engine->screen) { audioTicks = 0; skip1Beat = 0; @@ -28,6 +27,8 @@ Floors::~Floors() { delete enemy; delete ui; + delete floorManager; + delete player; } // ---- @@ -41,30 +42,26 @@ void Floors::onInit() engine->audio.addSongListener(this); engine->audio.loadSong("sounds/mafikizolo-loot.wav"); engine->audio.playSong(); + engine->audio.setSongVolume(80); texRepo = engine->renderer->getTextureRepository(); enemy = new Enemy(texRepo); ui = new Ui(texRepo); - engine->audio.setSongVolume(80); - - texRepo->addByMesh("meshes/player/", player.mesh, BMP); - texRepo->addByMesh("meshes/floor/", floorManager.floors[0].mesh, BMP); - for (u32 i = 1; i < floorManager.floorAmount; i++) - texRepo->getByMesh(floorManager.floors[0].mesh.getId(), floorManager.floors[0].mesh.getMaterial(0).getId()) - ->addLink(floorManager.floors[i].mesh.getId(), floorManager.floors[i].mesh.getMaterial(0).getId()); + floorManager = new FloorManager(FLOORS_COUNT, texRepo); + player = new Player(&engine->audio, texRepo); } void Floors::onUpdate() { - ui->update(player); - enemy->update(floorManager); + ui->update(*player); + enemy->update(*floorManager); lightManager.update(); - camera.update(engine->pad, player.mesh); - floorManager.update(player); - player.update(engine->pad, camera, floorManager, *enemy); - engine->renderer->draw(player.mesh); + camera.update(engine->pad, player->mesh); + floorManager->update(*player); + player->update(engine->pad, camera, *floorManager, *enemy); + engine->renderer->draw(player->mesh); engine->renderer->draw(enemy->getMeshes(), enemy->getMeshesCount()); for (u16 i = 0; i < FLOORS_COUNT; i++) - engine->renderer->drawByPath3(floorManager.floors[i].mesh, lightManager.bulbs, lightManager.bulbsCount); + engine->renderer->drawByPath3(floorManager->floors[i].mesh, lightManager.bulbs, lightManager.bulbsCount); ui->render(engine->renderer); // 2D rendering ist LAST step, because layers gonna play there. } @@ -73,7 +70,7 @@ void Floors::onAudioTick() if ((++audioTicks + 20) % 21 == 0) { if (skip1Beat) - floorManager.onAudioTick(); + floorManager->onAudioTick(); lightManager.onAudioTick(); skip1Beat = !skip1Beat; } diff --git a/src/samples/floors/floors.hpp b/src/samples/floors/floors.hpp index bf2905f..dc9f8b8 100644 --- a/src/samples/floors/floors.hpp +++ b/src/samples/floors/floors.hpp @@ -42,8 +42,8 @@ private: u8 skip1Beat; TextureRepository *texRepo; LightManager lightManager; - FloorManager floorManager; - Player player; + FloorManager *floorManager; + Player *player; Camera camera; Ui *ui; Enemy *enemy; diff --git a/src/samples/floors/managers/floor_manager.cpp b/src/samples/floors/managers/floor_manager.cpp index 6c81df1..e1b1d09 100644 --- a/src/samples/floors/managers/floor_manager.cpp +++ b/src/samples/floors/managers/floor_manager.cpp @@ -20,8 +20,9 @@ /** Calculate square spiral offsets and initialize floors * @param floorAmount must be a number from square root table */ -FloorManager::FloorManager(int t_floorAmount) +FloorManager::FloorManager(int t_floorAmount, TextureRepository *t_texRepo) { + texRepo = t_texRepo; floorAmount = t_floorAmount; spirals = new Point[t_floorAmount]; int floorSpiralMaxOffset = (int)Math::sqrt(t_floorAmount); @@ -84,8 +85,13 @@ void FloorManager::initFloors() floors[0].mesh.loadObj("meshes/floor/", "floor", 3.0F, false); floors[0].mesh.shouldBeFrustumCulled = true; floors[0].mesh.shouldBeLighted = true; + texRepo->addByMesh("meshes/floor/", floors[0].mesh, BMP); for (u16 i = 1; i < floorAmount; i++) + { floors[i].init(floors[0].mesh, spirals[i], i); + texRepo->getByMesh(floors[0].mesh.getId(), floors[0].mesh.getMaterial(0).getId()) + ->addLink(floors[i].mesh.getId(), floors[i].mesh.getMaterial(0).getId()); + } PRINT_LOG("Floors initialized!"); } diff --git a/src/samples/floors/managers/floor_manager.hpp b/src/samples/floors/managers/floor_manager.hpp index c7eb14a..61a64b7 100644 --- a/src/samples/floors/managers/floor_manager.hpp +++ b/src/samples/floors/managers/floor_manager.hpp @@ -14,6 +14,7 @@ class Player; // Forward definition #include +#include #include #include @@ -24,7 +25,7 @@ class FloorManager { public: - FloorManager(int t_floorAmount); + FloorManager(int t_floorAmount, TextureRepository *t_texRepo); ~FloorManager(); Floor floors[144]; // Temp change it also in floors.cpp u16 floorAmount; @@ -32,6 +33,7 @@ public: void onAudioTick(); private: + TextureRepository *texRepo; u8 audioOffset, audioMode; u32 audioTick; float trick; diff --git a/src/samples/floors/objects/player.cpp b/src/samples/floors/objects/player.cpp index 1de292f..a79a833 100644 --- a/src/samples/floors/objects/player.cpp +++ b/src/samples/floors/objects/player.cpp @@ -21,9 +21,10 @@ // Constructors/Destructors // ---- -Player::Player(Audio *t_audio) +Player::Player(Audio *t_audio, TextureRepository *t_texRepo) { PRINT_LOG("Creating player object"); + texRepo = t_texRepo; audio = t_audio; gravity = 0.1F; lift = -1.0F; @@ -45,6 +46,8 @@ Player::Player(Audio *t_audio) mesh.setAnimSpeed(0.17F); mesh.playAnimation(0, 0); + texRepo->addByMesh("meshes/player/", mesh, BMP); + walkAdpcm = audio->loadADPCM("sounds/walk.adpcm"); jumpAdpcm = audio->loadADPCM("sounds/jump.adpcm"); boomAdpcm = audio->loadADPCM("sounds/boom.adpcm"); diff --git a/src/samples/floors/objects/player.hpp b/src/samples/floors/objects/player.hpp index 75b1ccb..b233a12 100644 --- a/src/samples/floors/objects/player.hpp +++ b/src/samples/floors/objects/player.hpp @@ -33,7 +33,7 @@ public: float gravity, velocity, lift; Mesh mesh; s16 indexOfCurrentFloor; - Player(Audio *t_audio); + Player(Audio *t_audio, TextureRepository *t_texRepo); ~Player(); void update(const Pad &t_pad, const Camera &t_camera, const FloorManager &t_floorManager, Enemy &enemy); @@ -43,6 +43,7 @@ public: inline const Vector3 &getPosition() const { return mesh.position; } private: + TextureRepository *texRepo; u32 jumpCounter, killedEnemies; Vector3 *getNextPosition(const Pad &t_pad, const Camera &t_camera); FloorsCheck *checkFloors(const FloorManager &t_floorManager, const Vector3 &t_nextPos);