This commit is contained in:
h4570
2020-12-07 22:11:21 +01:00
parent 6d9b93998a
commit 5787b6a920
6 changed files with 32 additions and 23 deletions
+14 -17
View File
@@ -17,8 +17,7 @@
const u16 FLOORS_COUNT = 144; // Temp change it also in floor_manager.hpp const u16 FLOORS_COUNT = 144; // Temp change it also in floor_manager.hpp
Floors::Floors(Engine *t_engine) Floors::Floors(Engine *t_engine)
: engine(t_engine), floorManager(FLOORS_COUNT), : engine(t_engine), floorManager(), camera(&t_engine->screen)
player(&t_engine->audio), camera(&t_engine->screen)
{ {
audioTicks = 0; audioTicks = 0;
skip1Beat = 0; skip1Beat = 0;
@@ -28,6 +27,8 @@ Floors::~Floors()
{ {
delete enemy; delete enemy;
delete ui; delete ui;
delete floorManager;
delete player;
} }
// ---- // ----
@@ -41,30 +42,26 @@ void Floors::onInit()
engine->audio.addSongListener(this); engine->audio.addSongListener(this);
engine->audio.loadSong("sounds/mafikizolo-loot.wav"); engine->audio.loadSong("sounds/mafikizolo-loot.wav");
engine->audio.playSong(); engine->audio.playSong();
engine->audio.setSongVolume(80);
texRepo = engine->renderer->getTextureRepository(); texRepo = engine->renderer->getTextureRepository();
enemy = new Enemy(texRepo); enemy = new Enemy(texRepo);
ui = new Ui(texRepo); ui = new Ui(texRepo);
engine->audio.setSongVolume(80); floorManager = new FloorManager(FLOORS_COUNT, texRepo);
player = new Player(&engine->audio, texRepo);
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());
} }
void Floors::onUpdate() void Floors::onUpdate()
{ {
ui->update(player); ui->update(*player);
enemy->update(floorManager); enemy->update(*floorManager);
lightManager.update(); lightManager.update();
camera.update(engine->pad, player.mesh); camera.update(engine->pad, player->mesh);
floorManager.update(player); floorManager->update(*player);
player.update(engine->pad, camera, floorManager, *enemy); player->update(engine->pad, camera, *floorManager, *enemy);
engine->renderer->draw(player.mesh); engine->renderer->draw(player->mesh);
engine->renderer->draw(enemy->getMeshes(), enemy->getMeshesCount()); engine->renderer->draw(enemy->getMeshes(), enemy->getMeshesCount());
for (u16 i = 0; i < FLOORS_COUNT; i++) 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. 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 ((++audioTicks + 20) % 21 == 0)
{ {
if (skip1Beat) if (skip1Beat)
floorManager.onAudioTick(); floorManager->onAudioTick();
lightManager.onAudioTick(); lightManager.onAudioTick();
skip1Beat = !skip1Beat; skip1Beat = !skip1Beat;
} }
+2 -2
View File
@@ -42,8 +42,8 @@ private:
u8 skip1Beat; u8 skip1Beat;
TextureRepository *texRepo; TextureRepository *texRepo;
LightManager lightManager; LightManager lightManager;
FloorManager floorManager; FloorManager *floorManager;
Player player; Player *player;
Camera camera; Camera camera;
Ui *ui; Ui *ui;
Enemy *enemy; Enemy *enemy;
@@ -20,8 +20,9 @@
/** Calculate square spiral offsets and initialize floors /** Calculate square spiral offsets and initialize floors
* @param floorAmount must be a number from square root table * @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; floorAmount = t_floorAmount;
spirals = new Point[t_floorAmount]; spirals = new Point[t_floorAmount];
int floorSpiralMaxOffset = (int)Math::sqrt(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.loadObj("meshes/floor/", "floor", 3.0F, false);
floors[0].mesh.shouldBeFrustumCulled = true; floors[0].mesh.shouldBeFrustumCulled = true;
floors[0].mesh.shouldBeLighted = true; floors[0].mesh.shouldBeLighted = true;
texRepo->addByMesh("meshes/floor/", floors[0].mesh, BMP);
for (u16 i = 1; i < floorAmount; i++) for (u16 i = 1; i < floorAmount; i++)
{
floors[i].init(floors[0].mesh, spirals[i], 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!"); PRINT_LOG("Floors initialized!");
} }
@@ -14,6 +14,7 @@
class Player; // Forward definition class Player; // Forward definition
#include <models/math/point.hpp> #include <models/math/point.hpp>
#include <modules/texture_repository.hpp>
#include <modules/camera_base.hpp> #include <modules/camera_base.hpp>
#include <models/audio_listener.hpp> #include <models/audio_listener.hpp>
@@ -24,7 +25,7 @@ class FloorManager
{ {
public: public:
FloorManager(int t_floorAmount); FloorManager(int t_floorAmount, TextureRepository *t_texRepo);
~FloorManager(); ~FloorManager();
Floor floors[144]; // Temp change it also in floors.cpp Floor floors[144]; // Temp change it also in floors.cpp
u16 floorAmount; u16 floorAmount;
@@ -32,6 +33,7 @@ public:
void onAudioTick(); void onAudioTick();
private: private:
TextureRepository *texRepo;
u8 audioOffset, audioMode; u8 audioOffset, audioMode;
u32 audioTick; u32 audioTick;
float trick; float trick;
+4 -1
View File
@@ -21,9 +21,10 @@
// Constructors/Destructors // Constructors/Destructors
// ---- // ----
Player::Player(Audio *t_audio) Player::Player(Audio *t_audio, TextureRepository *t_texRepo)
{ {
PRINT_LOG("Creating player object"); PRINT_LOG("Creating player object");
texRepo = t_texRepo;
audio = t_audio; audio = t_audio;
gravity = 0.1F; gravity = 0.1F;
lift = -1.0F; lift = -1.0F;
@@ -45,6 +46,8 @@ Player::Player(Audio *t_audio)
mesh.setAnimSpeed(0.17F); mesh.setAnimSpeed(0.17F);
mesh.playAnimation(0, 0); mesh.playAnimation(0, 0);
texRepo->addByMesh("meshes/player/", mesh, BMP);
walkAdpcm = audio->loadADPCM("sounds/walk.adpcm"); walkAdpcm = audio->loadADPCM("sounds/walk.adpcm");
jumpAdpcm = audio->loadADPCM("sounds/jump.adpcm"); jumpAdpcm = audio->loadADPCM("sounds/jump.adpcm");
boomAdpcm = audio->loadADPCM("sounds/boom.adpcm"); boomAdpcm = audio->loadADPCM("sounds/boom.adpcm");
+2 -1
View File
@@ -33,7 +33,7 @@ public:
float gravity, velocity, lift; float gravity, velocity, lift;
Mesh mesh; Mesh mesh;
s16 indexOfCurrentFloor; s16 indexOfCurrentFloor;
Player(Audio *t_audio); Player(Audio *t_audio, TextureRepository *t_texRepo);
~Player(); ~Player();
void update(const Pad &t_pad, const Camera &t_camera, const FloorManager &t_floorManager, Enemy &enemy); 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; } inline const Vector3 &getPosition() const { return mesh.position; }
private: private:
TextureRepository *texRepo;
u32 jumpCounter, killedEnemies; u32 jumpCounter, killedEnemies;
Vector3 *getNextPosition(const Pad &t_pad, const Camera &t_camera); Vector3 *getNextPosition(const Pad &t_pad, const Camera &t_camera);
FloorsCheck *checkFloors(const FloorManager &t_floorManager, const Vector3 &t_nextPos); FloorsCheck *checkFloors(const FloorManager &t_floorManager, const Vector3 &t_nextPos);