refactor #1
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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!");
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
class Player; // Forward definition
|
||||
|
||||
#include <models/math/point.hpp>
|
||||
#include <modules/texture_repository.hpp>
|
||||
#include <modules/camera_base.hpp>
|
||||
#include <models/audio_listener.hpp>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user