118 lines
3.1 KiB
C++
118 lines
3.1 KiB
C++
//
|
|
// Created by jedi on 10/30/18.
|
|
//
|
|
|
|
#include <iostream>
|
|
|
|
//Using SDL and standard IO
|
|
#include <SDL2/SDL.h>
|
|
#include <cstdio>
|
|
|
|
SDL_Window *window = nullptr;
|
|
SDL_Event event;
|
|
SDL_Renderer *renderer;
|
|
|
|
void hal_init() {
|
|
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
|
|
printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
|
|
exit(1);
|
|
}
|
|
|
|
//Create window
|
|
window = SDL_CreateWindow("SDL Tutorial", 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT,
|
|
SDL_WINDOW_SHOWN); //|SDL_WINDOW_BORDERLESS
|
|
if (window == nullptr) {
|
|
printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
|
|
exit(1);
|
|
}
|
|
|
|
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
|
|
if (renderer == nullptr) {
|
|
printf("Renderer could not be created! SDL_Error: %s\n", SDL_GetError());
|
|
exit(1);
|
|
}
|
|
|
|
}
|
|
|
|
void hal_draw(int x, int y){
|
|
SDL_RenderDrawPoint(renderer, x, y);
|
|
}
|
|
|
|
void hal_print(int x, int y, const char* str){
|
|
//TODO delete
|
|
}
|
|
|
|
void hal_render() {
|
|
|
|
bool quit = false;
|
|
|
|
while (!quit) {
|
|
if (SDL_PollEvent(&event)) {
|
|
|
|
|
|
switch (event.type) {
|
|
case SDL_KEYDOWN:
|
|
switch (event.key.keysym.sym) {
|
|
case SDLK_LEFT:
|
|
input[I_LEFT]=true;
|
|
break;
|
|
case SDLK_RIGHT:
|
|
input[I_RIGHT]=true;
|
|
break;
|
|
case SDLK_UP:
|
|
input[I_UP]=true;
|
|
break;
|
|
case SDLK_DOWN:
|
|
input[I_DOWN]=true;
|
|
break;
|
|
case 'q':
|
|
case 0x1b: //ESC
|
|
quit = true;
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case SDL_KEYUP:
|
|
switch (event.key.keysym.sym) {
|
|
case SDLK_LEFT:
|
|
input[I_LEFT]=false;
|
|
break;
|
|
case SDLK_RIGHT:
|
|
input[I_RIGHT]=false;
|
|
break;
|
|
case SDLK_UP:
|
|
input[I_UP]=false;
|
|
break;
|
|
case SDLK_DOWN:
|
|
input[I_DOWN]=false;
|
|
break;
|
|
default:
|
|
printf("key %x\n", event.key.keysym.sym);
|
|
}
|
|
break;
|
|
|
|
case SDL_QUIT:
|
|
quit = true;
|
|
break;
|
|
}
|
|
} else {
|
|
SDL_Delay(10);
|
|
}
|
|
|
|
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
|
|
SDL_RenderClear(renderer);
|
|
SDL_SetRenderDrawColor(renderer, 0, 255, 255, 255);
|
|
render();
|
|
SDL_RenderPresent(renderer);
|
|
}
|
|
|
|
SDL_DestroyRenderer(renderer);
|
|
SDL_DestroyWindow(window);
|
|
SDL_Quit();
|
|
|
|
}
|
|
|
|
|
|
void debug(const char* str){
|
|
std::cout << str << std::flush;
|
|
}
|