aboutsummaryrefslogtreecommitdiff
#include "main.h"
#define FRAME_VALUES 10

void gravity(GameState *gameState)
{
    gameState->player1.y += gameState->player1.dy;
    gameState->player1.dy += GRAVEDAD;
    //gameState->player2.y += gameState->player2.dy;
    //gameState->player2.dy += GRAVEDAD;
}

Uint32 frametimes[FRAME_VALUES];

Uint32 frametimelast;

Uint32 framecount;

float framespersecond;

void fpsinit() {
        memset(frametimes, 0, sizeof(frametimes));
        framecount = 0;
        framespersecond = 0;
        frametimelast = SDL_GetTicks();

}

void fpsthink() {

        Uint32 frametimesindex;
        Uint32 getticks;
        Uint32 count;
        Uint32 i;

        frametimesindex = framecount % FRAME_VALUES;

        getticks = SDL_GetTicks();

        frametimes[frametimesindex] = getticks - frametimelast;

        frametimelast = getticks;

        framecount++;

        if (framecount < FRAME_VALUES) {

                count = framecount;

        } else {

                count = FRAME_VALUES;

        }

        framespersecond = 0;
        for (i = 0; i < count; i++) {

                framespersecond += frametimes[i];

        }

        framespersecond /= count;

        framespersecond = 1000.f / framespersecond;

}


int main()
{
  GameState gameState;
  SDL_Window *window = NULL;             // Declare a window
  SDL_Renderer *renderer = NULL;         // Declare a renderer
  SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);              // Initialize SDL2

  declaraciones(&gameState);

  //Create an application window with the following settings:
  window = SDL_CreateWindow("HighNoon",                     // window title
                            SDL_WINDOWPOS_UNDEFINED,           // initial x position
                            SDL_WINDOWPOS_UNDEFINED,           // initial y position
                            640,                               // width, in pixels
                            480,                               // height, in pixels
                            0                                  // flags
                            );
  renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);// | SDL_RENDERER_PRESENTVSYNC);

   if(window == NULL || renderer == NULL)
  {
      printf("SDL no pudo ejecutarse o no esta instalado");
  }
  TTF_Init();
  gameState.renderer = renderer;
  Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 4096);
  loadScreen(&gameState,renderer);
  // The window is open: enter program loop (see SDL_PollEvent)
  int menu_done = 0;
  gameState.done = 0;
  while(!menu_done)
  {
      menu_done = menu_events(window,&gameState);
      menu_render(renderer, &gameState);
  }

  fpsinit();
  ///Event loop
  while(!gameState.done)
  {
    ///Check for events
    gameState.done = processEvents(window, &gameState);
    ///Ejecutar gravedad
    gravity(&gameState);
    ///Deteccion de Coliciones (Objetos)
    collisionDetect(&gameState);
    ///Render display
    doRender(renderer, &gameState);
    ///Trabaja los Sprites
    spriteUpdate(&gameState);
    ///Balas
    processBullet(&gameState);
    ///Deteccion de Coliciones (Balas)
    bulletCollision(&gameState);
    fpsthink();
    printf("%f\n", framespersecond);
  }
  ///Limpia balas
  for(int i = 0; i < MAX_BULLETS; i++)
      removeBullet(i, &gameState);

  SDL_DestroyTexture(gameState.player1Texture);
  SDL_DestroyTexture(gameState.player2Texture);
  SDL_DestroyTexture(gameState.ladrilloTexture);
  SDL_DestroyTexture(gameState.balaTexture);
  SDL_DestroyTexture(gameState.menuTexture);
  SDL_DestroyTexture(gameState.gameOver);
  SDL_DestroyTexture(gameState.backGround);
  Mix_FreeChunk(gameState.disparo);
  TTF_CloseFont(gameState.font);
  // Close and destroy the window
  SDL_DestroyWindow(window);
  SDL_DestroyRenderer(renderer);
  TTF_Quit();
  // Clean up
  SDL_Quit();
  return 0;
}