double-hit-balls/game/main_code.cpp

547 lines
20 KiB
C++
Raw Normal View History

2017-01-10 12:43:06 +00:00
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include "include/Engine.h"
#include "menucode.h"
#include "main_code.h"
#include <boost/property_tree/json_parser.hpp>
2017-01-10 12:43:06 +00:00
2017-11-14 17:04:04 +00:00
boost::signals2::signal<void (Vector2f)> OnTapUpSignal;
boost::signals2::signal<void (Vector2f)> OnTapUpAfterMoveSignal;
boost::signals2::signal<void (Vector2f)> OnTapDownSignal;
boost::signals2::signal<void (Vector2f)> OnFlingSignal;
boost::signals2::signal<void (Vector2f)> OnScrollSignal;
2017-01-10 12:43:06 +00:00
2017-02-26 23:07:37 +00:00
boost::signals2::signal<void ()> OnDrawSignal;
2017-01-10 12:43:06 +00:00
2018-03-20 10:54:53 +00:00
const std::string CONST_BLOCK_TEXTURE1 = "block1_mod1";
const std::string CONST_BLOCK_TEXTURE2 = "block2_mod1";
const std::string CONST_BLOCK_TEXTURE3 = "block3_mod1";
2017-01-10 12:43:06 +00:00
2018-03-20 10:54:53 +00:00
const std::string CONST_BONUS_GOTHROUGH_TEXTURE = "bonus_gothrough_mod1";
const std::string CONST_BONUS_MULTIPLIER_TEXTURE = "bonus_multiplier_mod1";
const std::string CONST_BONUS_FLOOR_TEXTURE = "bonus_floor_mod1";
const std::string CONST_BALL_TEXTURE = "ball_mod1";
2017-01-10 12:43:06 +00:00
const std::string CONST_BALLGLOW_TEXTURE = "ball_glow";
2018-03-22 12:50:52 +00:00
const std::string CONST_REFLECTOR_TEXTURE = "reflector_mod1";
2018-03-21 12:55:54 +00:00
const std::string CONST_WALL_LEFT_TEXTURE = "wall_left_mod1";
const std::string CONST_WALL_RIGHT_TEXTURE = "wall_right_mod1";
const std::string CONST_WALL_UP_TEXTURE = "wall_up_mod1";
//const std::string CONST_WALL_BONUS_TEXTURE = "wall_bonus";
2018-03-19 12:06:07 +00:00
2018-03-21 12:55:54 +00:00
/*
2018-03-19 12:06:07 +00:00
const std::string CONST_WALL_LEFT_TEXTURE = "left_frame_fragment";
const std::string CONST_WALL_RIGHT_TEXTURE = "right_frame_fragment";
const std::string CONST_WALL_UP_TEXTURE = "top_frame_fragment";
2018-03-21 12:55:54 +00:00
*/
2018-03-19 12:06:07 +00:00
const std::string CONST_WALL_BONUS_TEXTURE = "bottom_frame_fragment";
2017-01-10 12:43:06 +00:00
const std::string CONST_BACK_BTN_TEXTURE = "back_btn";
const std::string CONST_SLIDE_UP_BTN_TEXTURE = "slide_up_btn";
const std::string CONST_TAP_TO_CONTINUE_BTN_TEXTURE = "tap_to_continue_btn";
const std::string CONST_LOADING_TEXTURE = "loading";
const std::string CONST_LOGO_SMALL_TEXTURE = "logo_small";
2017-11-14 17:04:04 +00:00
const std::string CONST_LOADING_BACKGROUND_BLACK = "loading_background_black";
2017-01-10 12:43:06 +00:00
const std::string CONST_CREDITS_TEXTURE = "credits";
const float CONST_CREDITS_SHOW_TIME = 150.f;
2018-03-26 11:42:25 +00:00
2017-11-14 17:04:04 +00:00
TMyApplication* Application;
2017-01-10 12:43:06 +00:00
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerInit()
2017-01-10 12:43:06 +00:00
{
Application = this;
#ifdef TARGET_WIN32
#ifdef NDEBUG
2018-03-19 12:06:07 +00:00
//ST::PathToResources = "resources/";
ST::PathToResources = "../../../assets/";
2017-01-10 12:43:06 +00:00
#else
ST::PathToResources = "../../../assets/";
#endif
#endif
#ifdef TARGET_IOS
ST::PathToResources = "assets/";
#endif
if (Console != NULL)
{
*Console<<"APP INIT\n";
}
2017-11-14 17:04:04 +00:00
srand (static_cast<size_t>(time(NULL)));
2017-01-10 12:43:06 +00:00
GameState = CONST_GAMESTATE_PRELOADING;
StateTimer = 0.f;
2017-11-14 17:04:04 +00:00
2017-01-10 12:43:06 +00:00
ResourceManager->ShaderManager.AddShader("DefaultShader", "shader1vertex.txt", "shader1fragment.txt");
ResourceManager->ShaderManager.AddShader("FrameShader", "frameshader_vertex.txt", "frameshader_fragment.txt");
ResourceManager->ShaderManager.AddShader("BrickShader", "brickshader_vertex.txt", "brickshader_fragment.txt");
Renderer->PushShader("DefaultShader");
2017-11-14 17:04:04 +00:00
ResourceManager->TexList.AddTexture(CONST_LOADING_BACKGROUND_BLACK + ".png", CONST_LOADING_BACKGROUND_BLACK);
2017-01-10 12:43:06 +00:00
ResourceManager->TexList.AddTexture(CONST_LOADING_TEXTURE + ".png", CONST_LOADING_TEXTURE);
ResourceManager->TexList.AddTexture(CONST_LOGO_SMALL_TEXTURE + ".png", CONST_LOGO_SMALL_TEXTURE);
ResourceManager->TexList.AddTexture("console_bkg.bmp");
2017-11-14 17:04:04 +00:00
2017-01-10 12:43:06 +00:00
ResourceManager->FrameManager.AddFrameRenderBuffer("LevelBuffer", 512, 512);
2018-03-22 12:50:52 +00:00
2017-01-10 12:43:06 +00:00
OnDrawSignal.connect(boost::bind(&TGameLoading::Draw, boost::ref(GameLoading)));
Inited = true;
Renderer->SetOrthoProjection();
Renderer->SetFullScreenViewport();
2018-03-26 11:42:25 +00:00
Application->SetGameLevelScreenScale();
//GameLevel.SetLevelScale();
2017-01-10 12:43:06 +00:00
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerDeinit()
2017-01-10 12:43:06 +00:00
{
Inited = false;
Loaded = false;
if (Console != NULL)
{
*Console<<"APP DEINIT\n";
}
OnTapUpSignal.disconnect(boost::bind(&TGameLevel::OnTapUp, boost::ref(GameLevel), _1));
OnTapUpSignal.disconnect(boost::bind(&TGameMenu::OnTapUp, boost::ref(Menu), _1));
2017-02-26 23:07:37 +00:00
OnTapUpAfterMoveSignal.disconnect(boost::bind(&TGameMenu::OnTapUpAfterMove, boost::ref(Menu), _1));
2017-01-10 12:43:06 +00:00
OnFlingSignal.disconnect(boost::bind(&TGameLevel::OnFling, boost::ref(GameLevel), _1));
OnFlingSignal.disconnect(boost::bind(&TGameMenu::OnFling, boost::ref(Menu), _1));
OnScrollSignal.disconnect(boost::bind(&TGameLevel::OnScroll, boost::ref(GameLevel), _1));
OnScrollSignal.disconnect(boost::bind(&TGameMenu::OnScroll, boost::ref(Menu), _1));
OnTapDownSignal.disconnect(boost::bind(&TGameLevel::OnTapDown, boost::ref(GameLevel), _1));
OnTapDownSignal.disconnect(boost::bind(&TGameMenu::OnTapDown, boost::ref(Menu), _1));
OnTapDownSignal.disconnect(boost::bind(&TGameCredits::OnTapDown, boost::ref(GameCredits), _1));
OnDrawSignal.disconnect(boost::bind(&TGameLoading::Draw, boost::ref(GameLoading)));
OnDrawSignal.disconnect(boost::bind(&TGameMenu::Draw, boost::ref(Menu)));
OnDrawSignal.disconnect(boost::bind(&TGameLevel::Draw, boost::ref(GameLevel)));
OnDrawSignal.disconnect(boost::bind(&TGameCredits::Draw, boost::ref(GameCredits)));
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerOnTapDown(Vector2f p)
{
//-OnTapDownSignal(Vector2f(p.v[0], p.v[1]));
OnTapDownSignal(Vector2f(p(0), p(1)));
2017-01-10 12:43:06 +00:00
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerOnTapUp(Vector2f p)
{
OnTapUpSignal(Vector2f(p(0), p(1)));
2017-01-10 12:43:06 +00:00
}
2017-02-26 23:07:37 +00:00
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerOnTapUpAfterMove(Vector2f p)
2017-02-26 23:07:37 +00:00
{
2017-11-14 17:04:04 +00:00
OnTapUpAfterMoveSignal(Vector2f(p(0), p(1)));
2017-02-26 23:07:37 +00:00
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerOnMove(Vector2f p, Vector2f shift)
2017-01-10 12:43:06 +00:00
{
2017-11-14 17:04:04 +00:00
OnScrollSignal(Vector2f(shift(0), shift(1)));
2017-01-10 12:43:06 +00:00
}
2017-11-14 17:04:04 +00:00
void TMyApplication::OnFling(Vector2f v)
2017-01-10 12:43:06 +00:00
{
}
2017-11-14 17:04:04 +00:00
void TMyApplication::ApplySignalsToMenu()
2017-01-10 12:43:06 +00:00
{
OnTapUpSignal.connect(boost::bind(&TGameMenu::OnTapUp, boost::ref(Menu), _1));
2017-02-26 23:07:37 +00:00
OnTapUpAfterMoveSignal.connect(boost::bind(&TGameMenu::OnTapUpAfterMove, boost::ref(Menu), _1));
2017-01-10 12:43:06 +00:00
OnFlingSignal.connect(boost::bind(&TGameMenu::OnFling, boost::ref(Menu), _1));
OnScrollSignal.connect(boost::bind(&TGameMenu::OnScroll, boost::ref(Menu), _1));
OnTapDownSignal.connect(boost::bind(&TGameMenu::OnTapDown, boost::ref(Menu), _1));
}
2017-11-14 17:04:04 +00:00
void TMyApplication::DisapplySignalsToMenu()
2017-01-10 12:43:06 +00:00
{
OnTapUpSignal.disconnect(boost::bind(&TGameMenu::OnTapUp, boost::ref(Menu), _1));
2017-02-26 23:07:37 +00:00
OnTapUpAfterMoveSignal.disconnect(boost::bind(&TGameMenu::OnTapUpAfterMove, boost::ref(Menu), _1));
2017-01-10 12:43:06 +00:00
OnFlingSignal.disconnect(boost::bind(&TGameMenu::OnFling, boost::ref(Menu), _1));
OnScrollSignal.disconnect(boost::bind(&TGameMenu::OnScroll, boost::ref(Menu), _1));
OnTapDownSignal.disconnect(boost::bind(&TGameMenu::OnTapDown, boost::ref(Menu), _1));
}
2017-11-14 17:04:04 +00:00
void TMyApplication::ApplySignalsToGame()
2017-01-10 12:43:06 +00:00
{
OnTapUpSignal.connect(boost::bind(&TGameLevel::OnTapUp, boost::ref(GameLevel), _1));
OnFlingSignal.connect(boost::bind(&TGameLevel::OnFling, boost::ref(GameLevel), _1));
2017-11-14 17:04:04 +00:00
OnScrollSignal.connect(boost::bind(&TGameLevel::OnScroll, boost::ref(GameLevel), _1));
2017-01-10 12:43:06 +00:00
OnTapDownSignal.connect(boost::bind(&TGameLevel::OnTapDown, boost::ref(GameLevel), _1));
}
2017-11-14 17:04:04 +00:00
void TMyApplication::DisapplySignalsToGame()
2017-01-10 12:43:06 +00:00
{
OnTapUpSignal.disconnect(boost::bind(&TGameLevel::OnTapUp, boost::ref(GameLevel), _1));
OnFlingSignal.disconnect(boost::bind(&TGameLevel::OnFling, boost::ref(GameLevel), _1));
OnScrollSignal.disconnect(boost::bind(&TGameLevel::OnScroll, boost::ref(GameLevel), _1));
OnTapDownSignal.disconnect(boost::bind(&TGameLevel::OnTapDown, boost::ref(GameLevel), _1));
}
2017-11-14 17:04:04 +00:00
void TMyApplication::ApplySignalsToCredits()
2017-01-10 12:43:06 +00:00
{
OnTapDownSignal.connect(boost::bind(&TGameCredits::OnTapDown, boost::ref(GameCredits), _1));
}
2017-11-14 17:04:04 +00:00
void TMyApplication::DisapplySignalsToCredits()
2017-01-10 12:43:06 +00:00
{
OnTapDownSignal.disconnect(boost::bind(&TGameCredits::OnTapDown, boost::ref(GameCredits), _1));
}
2017-11-14 17:04:04 +00:00
void TMyApplication::LoadResources()
2017-01-10 12:43:06 +00:00
{
TextureNamesToLoad.clear();
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("main_menu_bkg_left.png", "main_menu_bkg_left"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("main_menu_bkg_right.png", "main_menu_bkg_right"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("select_level.png", "select_level"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock1.png", "shutterstock1"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock2.png", "shutterstock2"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock3.png", "shutterstock3"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock4.png", "shutterstock4"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock5.png", "shutterstock5"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock6.png", "shutterstock6"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock7.png", "shutterstock7"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock8.png", "shutterstock8"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock9.png", "shutterstock9"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock10.png", "shutterstock10"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock11.png", "shutterstock11"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("shutterstock12.png", "shutterstock12"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot1.png", "levelshot1"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot2.png", "levelshot2"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot3.png", "levelshot3"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot4.png", "levelshot4"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot5.png", "levelshot5"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot6.png", "levelshot6"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot7.png", "levelshot7"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot8.png", "levelshot8"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot9.png", "levelshot9"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot10.png", "levelshot10"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot11.png", "levelshot11"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("levelshot12.png", "levelshot12"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>("game_end.png", "game_end"));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_BLOCK_TEXTURE1 + ".png", CONST_BLOCK_TEXTURE1));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_BLOCK_TEXTURE2 + ".png", CONST_BLOCK_TEXTURE2));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_BLOCK_TEXTURE3 + ".png", CONST_BLOCK_TEXTURE3));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_BONUS_GOTHROUGH_TEXTURE + ".png", CONST_BONUS_GOTHROUGH_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_BONUS_MULTIPLIER_TEXTURE + ".png", CONST_BONUS_MULTIPLIER_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_BONUS_FLOOR_TEXTURE + ".png", CONST_BONUS_FLOOR_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_BALL_TEXTURE + ".png", CONST_BALL_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_BALLGLOW_TEXTURE + ".png", CONST_BALLGLOW_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_WALL_LEFT_TEXTURE + ".png", CONST_WALL_LEFT_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_WALL_RIGHT_TEXTURE + ".png", CONST_WALL_RIGHT_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_WALL_UP_TEXTURE + ".png", CONST_WALL_UP_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_WALL_BONUS_TEXTURE + ".png", CONST_WALL_BONUS_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_REFLECTOR_TEXTURE + ".png", CONST_REFLECTOR_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_BACK_BTN_TEXTURE + ".png", CONST_BACK_BTN_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_SLIDE_UP_BTN_TEXTURE + ".png", CONST_SLIDE_UP_BTN_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_TAP_TO_CONTINUE_BTN_TEXTURE + ".png", CONST_TAP_TO_CONTINUE_BTN_TEXTURE));
TextureNamesToLoad.push_back(std::pair<std::string, std::string>(CONST_CREDITS_TEXTURE + ".png", CONST_CREDITS_TEXTURE));
2017-02-26 23:23:22 +00:00
#ifdef TARGET_IOS
2017-01-10 12:43:06 +00:00
ResourceManager->SoundManager.LoadMusicLooped("level1ogg.ogg");
#else
2017-02-26 23:23:22 +00:00
//ResourceManager->SoundManager.LoadMusic("level1ogg.ogg");
#endif
2017-01-10 12:43:06 +00:00
ResourceManager->FontManager.AddFont("droid_sans14", "droid_sans14_font_bitmap.png", "droid_sans14_font_charmap.txt");
ResourceManager->FontManager.PushFont("droid_sans14");
TryLoadSavedGame();
}
2017-11-14 17:04:04 +00:00
void TMyApplication::TryLoadSavedGame()
2017-01-10 12:43:06 +00:00
{
std::string fileName = GetFilePathUserData("progress.txt");
FILE* file = fopen(fileName.c_str(), "r");
if (file != NULL)
{
char line[100];
char* r;
r = fgets(line, 100, file);
if (r != NULL)
{
Menu.SetMenuItemCount(toint(r));
}
fclose(file);
}
}
2017-11-14 17:04:04 +00:00
void TMyApplication::TrySaveGame()
2017-01-10 12:43:06 +00:00
{
std::string fileName = GetFilePathUserData("progress.txt");
std::string s = tostr(Menu.GetMenuItemCount());
FILE* file = fopen(fileName.c_str(), "w");
if (file != NULL)
{
fputs(s.c_str(), file);
fflush(file);
fclose(file);
}
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerDraw()
2017-01-10 12:43:06 +00:00
{
glDisable(GL_DEPTH_TEST);
sparkler.draw();
2017-01-10 12:43:06 +00:00
OnDrawSignal();
}
2017-11-14 17:04:04 +00:00
void TMyApplication::InnerUpdate(size_t dt)
2017-01-10 12:43:06 +00:00
{
if (GameState == CONST_GAMESTATE_PRELOADING)
{
2017-11-14 17:04:04 +00:00
*SE::Console << "1CONST_GAMESTATE_PRELOADING";
2017-01-10 12:43:06 +00:00
StateTimer += dt/1000.f;
if (StateTimer >= 1.f)
{
LoadResources();
GameState = CONST_GAMESTATE_LOADING;
StateTimer = 0.f;
}
}
else if (GameState == CONST_GAMESTATE_LOADING)
{
2017-11-14 17:04:04 +00:00
*SE::Console << "2CONST_GAMESTATE_LOADING";
2017-01-10 12:43:06 +00:00
StateTimer += dt/1000.f;
if (StateTimer >= 1.f)
{
StateTimer -= 1.f;
}
if (TextureNamesToLoad.size() != 0)
{
ResourceManager->TexList.AddTexture(TextureNamesToLoad.begin()->first, TextureNamesToLoad.begin()->second);
TextureNamesToLoad.erase(TextureNamesToLoad.begin());
}
else
{
GameState = CONST_GAMESTATE_MENU;
ApplySignalsToMenu();
OnDrawSignal.disconnect(boost::bind(&TGameLoading::Draw, boost::ref(GameLoading)));
OnDrawSignal.connect(0, boost::bind(&TGameMenu::Draw, boost::ref(Menu)));
StateTimer = 0.f;
Loaded = true;
}
}
else if (GameState == CONST_GAMESTATE_LEVEL)
{
2017-11-14 17:04:04 +00:00
*SE::Console << "3CONST_GAMESTATE_LEVEL";
2017-01-10 12:43:06 +00:00
GameLevel.Update(dt);
}
else if (GameState == CONST_GAMESTATE_MENU)
{
2017-11-14 17:04:04 +00:00
//*SE::Console << "4CONST_GAMESTATE_MENU";
2017-01-10 12:43:06 +00:00
Menu.Update(dt);
2017-01-10 12:43:06 +00:00
}
else if (GameState == CONST_GAMESTATE_FROM_MENU_TO_LEVEL)
2017-11-14 17:04:04 +00:00
{
*SE::Console << "5CONST_GAMESTATE_FROM_MENU_TO_LEVEL";
2017-01-10 12:43:06 +00:00
GameLevel.Update(dt);
if (GameLevel.IsLoaded())
{
2017-11-14 17:04:04 +00:00
//*SE::Console << "5CONST_GAMESTATE_FROM_MENU_TO_LEVEL";
2017-01-10 12:43:06 +00:00
GameState = CONST_GAMESTATE_LEVEL;
OnDrawSignal.disconnect(boost::bind(&TGameMenu::Draw, boost::ref(Menu)));
//CONNECT SLOT
DisapplySignalsToMenu();
ApplySignalsToGame();
}
}
else if (GameState == CONST_GAMESTATE_FROM_MENU_TO_CREDITS)
2017-11-14 17:04:04 +00:00
{
*SE::Console << "6CONST_GAMESTATE_FROM_MENU_TO_CREDITS";
2017-01-10 12:43:06 +00:00
Menu.Update(dt);
GameCredits.Update(dt);
StateTimer -= dt;
if (StateTimer <= 0.f)
{
GameState = CONST_GAMESTATE_CREDITS;
OnDrawSignal.disconnect(boost::bind(&TGameMenu::Draw, boost::ref(Menu)));
ApplySignalsToCredits();
StateTimer = 0.f;
}
}
else if (GameState == CONST_GAMESTATE_CREDITS)
2017-11-14 17:04:04 +00:00
{
//*SE::Console << "7CONST_GAMESTATE_CREDITS";
2017-01-10 12:43:06 +00:00
GameCredits.Update(dt);
}
else if (GameState == CONST_GAMESTATE_FROM_CREDITS_TO_MENU)
{
Menu.Update(dt);
GameCredits.Update(dt);
StateTimer -= dt;
if (StateTimer <= 0.f)
{
GameState = CONST_GAMESTATE_MENU;
StateTimer = 0.f;
ApplySignalsToMenu();
OnDrawSignal.disconnect(boost::bind(&TGameCredits::Draw, boost::ref(GameCredits)));
}
}
}
2017-11-14 17:04:04 +00:00
void TMyApplication::GoFromMenuToGame(int level)
2017-01-10 12:43:06 +00:00
{
2017-11-14 17:04:04 +00:00
//#ifndef TARGET_IOS
// ResourceManager->SoundManager.PlayMusicLooped("level1ogg.ogg");
2017-01-10 12:43:06 +00:00
//#endif
2017-11-14 17:04:04 +00:00
2017-01-10 12:43:06 +00:00
GameLevel.FillWithFile(ST::PathToResources + "level"+tostr(level+1)+".txt");
GameLevel.SetLoading("shutterstock" + tostr(level+1), "levelshot"+tostr(level+1));
GameState = CONST_GAMESTATE_FROM_MENU_TO_LEVEL;
OnDrawSignal.connect(1, boost::bind(&TGameLevel::Draw, boost::ref(GameLevel)));
DisapplySignalsToMenu();
}
2017-11-14 17:04:04 +00:00
void TMyApplication::GoFromGameToMenu()
2017-01-10 12:43:06 +00:00
{
//#ifndef TARGET_IOS
2017-11-14 17:04:04 +00:00
// ResourceManager->SoundManager.StopMusic("level1ogg.ogg");
2017-01-10 12:43:06 +00:00
//#endif
TrySaveGame();
DisapplySignalsToGame();
ApplySignalsToMenu();
GameState = CONST_GAMESTATE_MENU;
OnDrawSignal.disconnect(boost::bind(&TGameLevel::Draw, boost::ref(GameLevel)));
}
2017-11-14 17:04:04 +00:00
void TMyApplication::GoFromMenuToCredits()
2017-01-10 12:43:06 +00:00
{
GameState = CONST_GAMESTATE_FROM_MENU_TO_CREDITS;
StateTimer = CONST_CREDITS_SHOW_TIME;
GameCredits.StartAppear();
OnDrawSignal.connect(1, boost::bind(&TGameCredits::Draw, boost::ref(GameCredits)));
DisapplySignalsToMenu();
}
2017-11-14 17:04:04 +00:00
void TMyApplication::GoFromCreditsToMenu()
2017-01-10 12:43:06 +00:00
{
GameState = CONST_GAMESTATE_FROM_CREDITS_TO_MENU;
StateTimer = CONST_CREDITS_SHOW_TIME;
GameCredits.StartDisappear();
OnDrawSignal.connect(0, boost::bind(&TGameMenu::Draw, boost::ref(Menu)));
DisapplySignalsToCredits();
}
2017-11-14 17:04:04 +00:00
void TMyApplication::MarkSetGameLevelPause()
2017-01-10 12:43:06 +00:00
{
OnDrawSignal.connect(0, boost::bind(&TGameMenu::Draw, boost::ref(Menu)));
}
2017-11-14 17:04:04 +00:00
void TMyApplication::MarkReleaseGameLevelPause()
2017-01-10 12:43:06 +00:00
{
OnDrawSignal.disconnect(boost::bind(&TGameMenu::Draw, boost::ref(Menu)));
}
2017-11-14 17:04:04 +00:00
void TMyApplication::OpenNextLevel()
2017-01-10 12:43:06 +00:00
{
Menu.OpenNextLevel();
}
2017-11-14 17:04:04 +00:00
bool TMyApplication::IsLoaded()
2017-01-10 12:43:06 +00:00
{
return Loaded;
}
2017-11-14 17:04:04 +00:00
bool TMyApplication::IsInited()
2017-01-10 12:43:06 +00:00
{
return Inited;
}
2018-03-26 11:42:25 +00:00
void TMyApplication::SetGameLevelScreenScale()
{
if ((((float)Renderer->GetScreenWidth())/((float)Renderer->GetScreenHeight())) >= levelScreenRatio)
{
levelScreenHeight = (float)Renderer->GetScreenHeight();
levelScreenWidth = levelScreenHeight * levelScreenRatio;
} else
{
levelScreenWidth = (float)Renderer->GetScreenWidth();
levelScreenHeight = levelScreenWidth / levelScreenRatio;
}
}
float TMyApplication::GetGameLevelScreenWidth()
{
return levelScreenWidth;
}
float TMyApplication::GetGameLevelScreenHeight()
{
return levelScreenHeight;
}
void TMyApplication::InnerOnMouseDown(TMouseState& mouseState) {
/*
if (mouseState.LeftButtonPressed) {
if ((float)mouseState.X >= (Renderer->GetScreenWidth())*0.25f && (float)mouseState.X <= (Renderer->GetScreenWidth())*0.75f && (float)mouseState.Y >= (Renderer->GetScreenHeight())*0.25f && (float)mouseState.Y <= (Renderer->GetScreenHeight())*0.75f) {
// some tmp code
Application->GoFromMenuToGame(1);
}
}
*/
OnTapDownSignal(Vector2f(mouseState.X, ((Renderer->GetScreenHeight()) - mouseState.Y))); // Temporary mouse down action for WIN32
}
void TMyApplication::InnerOnMouseMove(TMouseState& mouseState) {
}