Continue SDL frontend
This commit is contained in:
parent
7503a5dc2b
commit
afecda260e
4 changed files with 169 additions and 70 deletions
|
@ -1 +1,100 @@
|
|||
#include <stdio.h>
|
||||
#include <SDL2/SDL.h>
|
||||
|
||||
#include "game.h"
|
||||
#include "debug.h"
|
||||
|
||||
SDL_Window *window;
|
||||
SDL_Renderer *renderer;
|
||||
SDL_Texture *texture;
|
||||
SDL_Surface *screenSurface;
|
||||
uint16_t screen[LCR_SETTING_RESOLUTION_X * LCR_SETTING_RESOLUTION_Y];
|
||||
|
||||
const uint8_t *keyboardState;
|
||||
|
||||
uint8_t LCR_keyPressed(uint8_t key)
|
||||
{
|
||||
switch (key)
|
||||
{
|
||||
case LCR_KEY_UP: return
|
||||
keyboardState[SDL_SCANCODE_W] | keyboardState[SDL_SCANCODE_UP]; break;
|
||||
|
||||
case LCR_KEY_RIGHT: return
|
||||
keyboardState[SDL_SCANCODE_D] | keyboardState[SDL_SCANCODE_RIGHT]; break;
|
||||
|
||||
case LCR_KEY_DOWN: return
|
||||
keyboardState[SDL_SCANCODE_S] | keyboardState[SDL_SCANCODE_DOWN]; break;
|
||||
|
||||
case LCR_KEY_LEFT: return
|
||||
keyboardState[SDL_SCANCODE_A] | keyboardState[SDL_SCANCODE_LEFT]; break;
|
||||
|
||||
case LCR_KEY_A: return
|
||||
keyboardState[SDL_SCANCODE_K] | keyboardState[SDL_SCANCODE_RETURN]; break;
|
||||
|
||||
case LCR_KEY_B: return
|
||||
keyboardState[SDL_SCANCODE_L] | keyboardState[SDL_SCANCODE_ESCAPE]; break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void LCR_sleep(uint16_t timeMs)
|
||||
{
|
||||
}
|
||||
|
||||
void LCR_drawPixel(unsigned int x, unsigned int y, uint_fast16_t color)
|
||||
{
|
||||
screen[y * LCR_SETTING_RESOLUTION_X + x] = color;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
uint8_t running = 1;
|
||||
LCR_gameInit();
|
||||
|
||||
SDL_Init(0);
|
||||
|
||||
window =
|
||||
SDL_CreateWindow("Licar", SDL_WINDOWPOS_UNDEFINED,
|
||||
SDL_WINDOWPOS_UNDEFINED, LCR_SETTING_RESOLUTION_X, LCR_SETTING_RESOLUTION_Y,
|
||||
SDL_WINDOW_SHOWN);
|
||||
|
||||
renderer = SDL_CreateRenderer(window,-1,0);
|
||||
|
||||
texture =
|
||||
SDL_CreateTexture(renderer,SDL_PIXELFORMAT_RGB565,SDL_TEXTUREACCESS_STATIC,
|
||||
LCR_SETTING_RESOLUTION_X,LCR_SETTING_RESOLUTION_Y);
|
||||
|
||||
screenSurface = SDL_GetWindowSurface(window);
|
||||
|
||||
SDL_ShowCursor(0);
|
||||
|
||||
SDL_PumpEvents();
|
||||
keyboardState = SDL_GetKeyboardState(NULL);
|
||||
|
||||
while (running)
|
||||
{
|
||||
SDL_PumpEvents();
|
||||
keyboardState = SDL_GetKeyboardState(NULL);
|
||||
running = !keyboardState[SDL_SCANCODE_Q];
|
||||
|
||||
running &= LCR_gameStep(SDL_GetTicks());
|
||||
|
||||
SDL_UpdateTexture(texture,NULL,screen,
|
||||
LCR_SETTING_RESOLUTION_X * sizeof(uint16_t));
|
||||
|
||||
SDL_RenderClear(renderer);
|
||||
SDL_RenderCopy(renderer,texture,NULL,NULL);
|
||||
SDL_RenderPresent(renderer);
|
||||
}
|
||||
|
||||
SDL_DestroyTexture(texture);
|
||||
SDL_DestroyRenderer(renderer);
|
||||
SDL_DestroyWindow(window);
|
||||
|
||||
LCR_gameEnd();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue