text: #pragma once
  /*
  	* Space Arcade Game
  	* Copyright (C) 2018 Paul Razumov.
  	
  	Permission is hereby granted, free of charge, to any person obtaining a copy of this software
  	and associated documentation files (the "Software"), to deal in the Software without restriction,
  	including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
  	and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
  	subject to the following conditions:
  
  	The above copyright notice and this permission notice shall be included in all
  	copies or substantial portions of the Software.
  
  	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
  	LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  	IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  	WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
  	OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  
  	* Source:
  	*  https://github.com/pavelrazumoff/SpaceArcade_Game
  */
  
  #define GLM_FORCE_CTOR_INIT
  
  #include <iostream>
  #include <fstream>
  #include <sstream>
  #include <string>
  #include <vector>
  #include <random>
  #include <map>
  #include <time.h>
  #include <glad/glad.h>
  #include <GLFW/glfw3.h>
  #include "stb_image.h"
  
  #include <glm/glm.hpp>
  #include <glm/gtc/matrix_transform.hpp>
  #include <glm/gtc/type_ptr.hpp>
  
  #include <ft2build.h>
  #include FT_FREETYPE_H
  
  #include <irrKlang.h>
  using namespace irrklang;
  
  #if defined(DEBUG) || defined(_DEBUG)
  #define _CRTDBG_MAP_ALLOC
  #include <crtdbg.h>
  #endif
  
  //#define m_new new
  
  #if defined(DEBUG) || defined(_DEBUG)
  #ifndef DBG_NEW
  #define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
  #define new DBG_NEW
  #endif
  #endif  // _DEBUG
  
  #if defined(DEBUG) || defined(_DEBUG)
  #define m_free(A) _dbgfree( __FILE__, __LINE__, (A) )
  #endif  // _DEBUG
  
  struct Character {
  	GLuint TextureID; // ID handle of the glyph texture
  	glm::ivec2 Size; // Size of glyph
  	glm::ivec2 Bearing; // Offset from baseline to left/top of glyph
  	GLuint Advance; // Offset to advance to next glyph
  };
  
  struct Font
  {
  	std::map<GLchar, Character> characters;
  	int fontSize;
  };
  
  float lerp(float a, float b, float f);
  
  void healthBarChanged(float health, float initialHealth);
  void energyBarChanged(float usedEnergy, float maxEnergy);
  void enemyHealthBarChanged(float health, float initialHealth);
  void rocketIntegrityChanged(int integrity, int maxIntegrity);
  void blackHolePortalChanged(bool value);
  void ionWeaponChanged(bool value);
  void coinsChanged(int coins);
  
  void showStationDialogue();