84 lines
2.0 KiB
C++
84 lines
2.0 KiB
C++
/*
|
|
# _____ ____ ___
|
|
# | \/ ____| |___|
|
|
# | | | \ | |
|
|
#-----------------------------------------------------------------------
|
|
# Copyright 2022, tyra - https://github.com/h4570/tyra
|
|
# Licensed under Apache License 2.0
|
|
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
|
|
*/
|
|
|
|
#include "states/game/game_state.hpp"
|
|
#include "debug/debug.hpp"
|
|
|
|
namespace Demo {
|
|
|
|
GameState::GameState(Engine* t_engine)
|
|
: State(t_engine), renderer(&t_engine->renderer) {
|
|
state = STATE_GAME;
|
|
_wantFinish = false;
|
|
initialized = false;
|
|
fpsChecker = 0;
|
|
}
|
|
|
|
GameState::~GameState() {}
|
|
|
|
void GameState::onStart() {
|
|
TYRA_LOG("Game. RAM: ", engine->info.getAvailableRAM(), "MB");
|
|
|
|
engine->audio.song.stop();
|
|
|
|
auto* repository = &engine->renderer.core.texture.repository;
|
|
player = new Player(engine);
|
|
enemy = new Enemy(repository);
|
|
terrain = new Terrain(repository);
|
|
skybox = new Skybox(repository);
|
|
dbgObj = new DebugObject(repository);
|
|
|
|
initialized = true;
|
|
}
|
|
|
|
GlobalStateType GameState::onFinish() {
|
|
if (!initialized) return STATE_EXIT;
|
|
|
|
delete player;
|
|
delete enemy;
|
|
delete terrain;
|
|
delete skybox;
|
|
delete dbgObj;
|
|
initialized = false;
|
|
|
|
return STATE_EXIT;
|
|
}
|
|
|
|
void GameState::update() {
|
|
if (fpsChecker++ > 100) {
|
|
TYRA_LOG("FPS: ", engine->info.getFps());
|
|
fpsChecker = 0;
|
|
}
|
|
|
|
skybox->update(player->getPosition());
|
|
auto cameraInfo = player->getCameraInfo();
|
|
engine->renderer.beginFrame(cameraInfo);
|
|
|
|
dbgObj->setPosition(*cameraInfo.looksAt);
|
|
float terrainHeight = 0.0F;
|
|
// float terrainHeight = terrain->getHeightOffset(player->getPosition());
|
|
player->update(terrainHeight);
|
|
enemy->update(player->getPosition());
|
|
|
|
renderer.clear();
|
|
{
|
|
renderer.add(skybox->pair);
|
|
renderer.add(player->pair);
|
|
// renderer.add(enemy->pairs);
|
|
// renderer.add(terrain->pair);
|
|
renderer.add(dbgObj->pair);
|
|
}
|
|
renderer.render();
|
|
|
|
engine->renderer.endFrame();
|
|
}
|
|
|
|
} // namespace Demo
|