Files
thepool/source/jgame.cpp
Raimon Zamora 0ab4ca06e3 - [FIX] [#2] Quan et donen una cat's life, ja no torna la música del joc
- [FIX] [#3] Quan entres a la habitació de la depuradora ...
- [FIX] [#4] ficar anbernics recopilades en el game over i altres pantalles de resum
- [FIX] [#5] que al acabar el joc la seuquencia acabe amb els stats, com el game over
2024-10-31 12:08:10 +01:00

90 lines
2.2 KiB
C++

#include "jgame.h"
#include "jdraw.h"
#include "jinput.h"
#include "jaudio.h"
#include <SDL2/SDL.h>
namespace game
{
static int param_count = 0;
static char **params = nullptr;
static bool should_exit = false;
static unsigned int ticks_per_frame = 1000/60;
void setUpdateTicks(const int ticks)
{
ticks_per_frame = ticks;
}
void exit()
{
should_exit = true;
}
const char* getParams(const int index)
{
if (index<param_count) return params[index];
return nullptr;
}
}
int main(int argc, char *argv[])
{
game::param_count = argc;
game::params = argv;
SDL_Init(SDL_INIT_EVERYTHING);
input::init();
audio::init();
game::init();
static unsigned int current_ticks = SDL_GetTicks();
SDL_Event e;
while (!game::should_exit)
{
while(SDL_PollEvent(&e))
{
if (e.type==SDL_QUIT) { game::should_exit = true; break; }
if (e.type==SDL_KEYDOWN)
{
input::updateKey(e.key.keysym.scancode);
}
if (e.type==SDL_KEYUP)
{
input::updateKeypressed(e.key.keysym.scancode);
}
if (e.type==SDL_MOUSEBUTTONUP)
{
input::updateClk(e.button.button);
}
if (e.type==SDL_MOUSEWHEEL)
{
input::updateWheel(e.wheel.y);
}
if (e.type==SDL_CONTROLLERBUTTONDOWN) {
input::updatePadBtn(e.cbutton.button);
input::updatePadBtnPressed(e.cbutton.button);
}
}
if (SDL_GetTicks()-current_ticks >= game::ticks_per_frame)
{
current_ticks = SDL_GetTicks();
if (!game::loop()) game::should_exit = true;
input::updateKey(SDL_SCANCODE_UNKNOWN);
input::updateKeypressed(SDL_SCANCODE_UNKNOWN);
input::updateClk(0);
input::updateWheel(0);
input::updatePadBtn(SDL_CONTROLLER_BUTTON_INVALID);
input::updatePadBtnPressed(SDL_CONTROLLER_BUTTON_INVALID);
}
}
audio::quit();
draw::quit();
return 0;
}