refactor #1
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user