#include #include #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; }