SQCSimulator2023/SQCSim2021/engine.h

82 lines
2.1 KiB
C++

#ifndef ENGINE_H__
#define ENGINE_H__
#include "define.h"
#include "openglcontext.h"
#include "texture.h"
#include "transformation.h"
#include "shader.h"
#include "player.h"
#include "chunk.h"
#include "skybox.h"
#include "audio.h"
#include "textureatlas.h"
#include "blockinfo.h"
#include "array2d.h"
#include "world.h"
#include "bullet.h"
class Engine : public OpenglContext {
public:
Engine();
virtual ~Engine();
virtual void Init();
virtual void DeInit();
virtual void LoadResource();
virtual void UnloadResource();
virtual void Render(float elapsedTime);
virtual void KeyPressEvent(unsigned char key);
virtual void KeyReleaseEvent(unsigned char key);
virtual void MouseMoveEvent(int x, int y);
virtual void MousePressEvent(const MOUSE_BUTTON &button, int x, int y);
virtual void MouseReleaseEvent(const MOUSE_BUTTON &button, int x, int y);
private:
bool LoadTexture(Texture& texture, const std::string& filename, bool stopOnError = true);
void DrawHud(float elapsedTime, BlockType bloc);
void PrintText(unsigned int x, unsigned int y, const std::string& t);
int GetFps(float elapsedTime) const;
bool m_wireframe = false;
bool m_isSkybox = true;
int m_renderCount = 0;
Shader m_shader01;
BlockInfo* m_blockinfo[BTYPE_LAST];
TextureAtlas m_textureAtlas = TextureAtlas(BTYPE_LAST);
World m_world = World();
Texture m_textureSkybox;
Texture m_textureFont;
Texture m_textureCrosshair;
Skybox m_skybox;
Audio m_audio = Audio(AUDIO_PATH "music01.wav");
irrklang::ISound* m_powpow;
irrklang::ISound* m_scream;
Player m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f));
Bullet* m_bullets[MAX_BULLETS];
bool m_keyW = false;
bool m_keyA = false;
bool m_keyS = false;
bool m_keyD = false;
bool m_keylshift = false;
bool m_keySpace = false;
bool m_mouseL = false;
bool m_mouseR = false;
bool m_mouseC = false;
bool m_mouseWU = false;
bool m_mouseWD = false;
bool m_block = false;
bool m_flash = true;
};
#endif // ENGINE_H__