aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKikooDX <kikoodx@paranoici.org>2022-02-28 21:47:26 +0100
committerKikooDX <kikoodx@paranoici.org>2022-02-28 21:47:26 +0100
commit426a48adb9c94a9246f41135a24df3578eb218de (patch)
treeaba22139686e99143e65a5a5591685c2205e6d27
parentea2fe7255815f651f5cb57dcf73dcb4520f629d7 (diff)
downloadlzy-426a48adb9c94a9246f41135a24df3578eb218de.tar.gz
draw rectangles
-rw-r--r--inc/lzy.h44
-rw-r--r--src/main.c29
2 files changed, 63 insertions, 10 deletions
diff --git a/inc/lzy.h b/inc/lzy.h
index a6d3088..cfbef1c 100644
--- a/inc/lzy.h
+++ b/inc/lzy.h
@@ -14,6 +14,8 @@ int LZY_DrawEnd(void);
void LZY_DrawSetColor(uint8_t r, uint8_t g, uint8_t b);
void LZY_DrawSetColorNone(void);
int LZY_DrawClear(void);
+int LZY_DrawRect(int x, int y, unsigned int w, unsigned int h);
+int LZY_DrawFillRect(int x, int y, unsigned int w, unsigned int h);
void LZY_CycleEvents(void);
int LZY_KeyDown(unsigned int key);
int LZY_ShouldQuit(void);
@@ -49,7 +51,7 @@ enum LZY_ScanCode {
#define LZY_TILE_SIZE 16
#endif
#ifndef LZY_DISPLAY_WIDTH
-#define LZY_DISPLAY_WIDTH 400
+#define LZY_DISPLAY_WIDTH 396
#endif
#ifndef LZY_DISPLAY_HEIGHT
#define LZY_DISPLAY_HEIGHT 224
@@ -116,6 +118,20 @@ int LZY_DrawClear(void) {
return 0;
}
+int LZY_DrawRect(int x, int y, unsigned int w, unsigned int h) {
+ if (w < 1 || h < 1)
+ return -1;
+ drect_border(x, y, x + w - 1, y + h - 1, C_NONE, 1, draw_color);
+ return 0;
+}
+
+int LZY_DrawFillRect(int x, int y, unsigned int w, unsigned int h) {
+ if (w < 1 || h < 1)
+ return -1;
+ drect(x, y, x + w - 1, y + h - 1, draw_color);
+ return 0;
+}
+
void LZY_CycleEvents(void) {
clearevents();
should_quit = should_quit || keydown(KEY_EXIT);
@@ -153,7 +169,7 @@ static uint64_t next_time;
int LZY_Init(const char *title, int target_fps) {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
error = SDL_GetError();
- return 1;
+ return -1;
}
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, 0);
@@ -163,7 +179,7 @@ int LZY_Init(const char *title, int target_fps) {
LZY_DISPLAY_HEIGHT, SDL_WINDOW_SHOWN);
if (window == NULL) {
error = SDL_GetError();
- return 2;
+ return -2;
}
SDL_SetWindowMinimumSize(window, LZY_DISPLAY_WIDTH, LZY_DISPLAY_HEIGHT);
@@ -171,7 +187,7 @@ int LZY_Init(const char *title, int target_fps) {
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if (renderer == NULL) {
error = SDL_GetError();
- return 3;
+ return -3;
}
fps_limiter = target_fps > 0;
@@ -227,7 +243,25 @@ void LZY_DrawSetColorNone(void) {
int LZY_DrawClear(void) {
if (SDL_RenderClear(renderer) < 0) {
error = SDL_GetError();
- return 1;
+ return -1;
+ }
+ return 0;
+}
+
+int LZY_DrawRect(int x, int y, unsigned int w, unsigned int h) {
+ const SDL_Rect rect = {x, y, w, h};
+ if (SDL_RenderDrawRect(renderer, &rect) < 0) {
+ error = SDL_GetError();
+ return -1;
+ }
+ return 0;
+}
+
+int LZY_DrawFillRect(int x, int y, unsigned int w, unsigned int h) {
+ const SDL_Rect rect = {x, y, w, h};
+ if (SDL_RenderFillRect(renderer, &rect) < 0) {
+ error = SDL_GetError();
+ return -1;
}
return 0;
}
diff --git a/src/main.c b/src/main.c
index b967932..56cf2fe 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2,8 +2,11 @@
#include "lzy.h"
#include <stdint.h>
+static void draw_player(int x, int y);
+
int main(void) {
- uint8_t c = 0;
+ int x = 0;
+ int y = 0;
if (LZY_Init("lzy example", 30)) {
LZY_Log(LZY_GetError());
@@ -13,15 +16,24 @@ int main(void) {
LZY_Log("init was great success!");
do {
+ /* update */
LZY_CycleEvents();
if (LZY_KeyDown(LZYK_LEFT))
- c -= 8;
+ x--;
if (LZY_KeyDown(LZYK_RIGHT))
- c += 8;
+ x++;
+ if (LZY_KeyDown(LZYK_UP))
+ y--;
+ if (LZY_KeyDown(LZYK_DOWN))
+ y++;
+ /* draw */
LZY_DrawBegin();
- LZY_DrawSetColor(c, c, c);
- LZY_DrawClear();
+ {
+ LZY_DrawSetColor(0x20, 0x20, 0x00);
+ LZY_DrawClear();
+ draw_player(x, y);
+ }
LZY_DrawEnd();
} while (!LZY_ShouldQuit());
@@ -29,3 +41,10 @@ int main(void) {
LZY_Quit();
return 0;
}
+
+static void draw_player(int x, int y) {
+ LZY_DrawSetColor(0x00, 0xff, 0xff);
+ LZY_DrawFillRect(x, y, 8, 8);
+ LZY_DrawSetColor(0xff, 0x00, 0x00);
+ LZY_DrawRect(x + 1, y + 1, 6, 6);
+}