summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilas Gramlich <udyvp@student.kit.edu>2025-10-14 22:09:59 +0200
committerSilas Gramlich <udyvp@student.kit.edu>2025-10-14 22:09:59 +0200
commit57542da0daca2b74494fbdc7f68e6f5207eb7e48 (patch)
tree8c3389a1bb36992bc91795897aa4d8640849e765
parente01184ed595423e03664db4c645fb7794dddc193 (diff)
added WIP-version of draw_character
-rw-r--r--characters.h106
-rw-r--r--game.c39
2 files changed, 145 insertions, 0 deletions
diff --git a/characters.h b/characters.h
new file mode 100644
index 0000000..3450875
--- /dev/null
+++ b/characters.h
@@ -0,0 +1,106 @@
+#include <stdint.h>
+
+#ifndef CHARACTERS_H
+#define CHARACTERS_H
+
+
+uint32_t characters[96] =
+ {0b000000000000000000000000000000, // SPACE
+ 0b100001000010000000001000000000, // !
+ 0b101001010000000000000000000000, // "
+ 0b010101111101010111110101000000, // #
+ 0b111101010011110010101111000000, // $
+ 0b101000010001000100001010000000, // %
+ 0b010001010001101100100110100000, // &
+ 0b100001000000000000000000000000, // '
+ 0b010001000010000100000100000000, // (
+ 0b100000100001000010001000000000, // )
+ 0b000001010001000101000000000000, // *
+ 0b000000100011100010000000000000, // +
+ 0b000000000000000100001000000000, // ,
+ 0b000000000011000000000000000000, // -
+ 0b000000000000000000001000000000, // .
+ 0b001000010001000100001000000000, // /
+ 0b111001010010100101001110000000, // 0
+ 0b001000010000100001000010000000, // 1
+ 0b111000010011100100001110000000, // 2
+ 0b111000010011100001001110000000, // 3
+ 0b101001010011100001000010000000, // 4
+ 0b111001000011100001001110000000, // 5
+ 0b111001000011100101001110000000, // 6
+ 0b111000010000100001000010000000, // 7
+ 0b111001010011100101001110000000, // 8
+ 0b111001010011100001001110000000, // 9
+ 0b000001000000000100000000000000, // :
+ 0b000001000000000100001000000000, // ;
+ 0b001000100010000010000010000000, // <
+ 0b000001110000000111000000000000, // =
+ 0b100000100000100010001000000000, // >
+ 0b111000010001100000000100000000, // ?
+ 0b011101010110101101100111100000, // @
+ 0b111001010010100111001010000000, // A
+ 0b110001010011000101001110000000, // B
+ 0b011001000010000100000110000000, // C
+ 0b110001010010100101001100000000, // D
+ 0b111001000011100100001110000000, // E
+ 0b111001000011100100001000000000, // F
+ 0b011001000010000101000110000000, // G
+ 0b101001010011100101001010000000, // H
+ 0b111000100001000010001110000000, // I
+ 0b111000010000100101000110000000, // J
+ 0b101001010011000101001010000000, // K
+ 0b100001000010000100001110000000, // L
+ 0b111111010110101101011010100000, // M
+ 0b100101101010110100101001000000, // N
+ 0b111001010010100101001110000000, // O
+ 0b111001010011100100001000000000, // P
+ 0b111001010010100101001111000000, // Q
+ 0b111001010011000101001010000000, // R
+ 0b111001000011100001001110000000, // S
+ 0b111000100001000010000100000000, // T
+ 0b101001010010100101001110000000, // U
+ 0b101001010010100101000100000000, // V
+ 0b101011010110101101010101000000, // W
+ 0b101001010001000101001010000000, // X
+ 0b101001010011100010000100000000, // Y
+ 0b111100001001100100001111000000, // Z
+ 0b110001000010000100001100000000, // [
+ 0b100001000001000001000010000000, // backslash
+ 0b110000100001000010001100000000, // ]
+ 0b010001010000000000000000000000, // ^
+ 0b000000000000000000001110000000, // _
+ 0b100000100000000000000000000000, // `
+ 0b000000110010100101000111000000, // a
+ 0b100001110010100101001110000000, // b
+ 0b000001110010000100001110000000, // c
+ 0b001001110010100101001110000000, // d
+ 0b000001110010100100001110000000, // e
+ 0b011000100011100010000100000000, // f
+ 0b000001110010100111000010011100, // g
+ 0b100001000011100101001010000000, // h
+ 0b100000000010000100001100000000, // i
+ 0b010000000001000010000100011000, // j
+ 0b100001000010100110001010000000, // k
+ 0b110000100001000010001110000000, // l
+ 0b000001111010101101011010100000, // m
+ 0b000001100010100101001010000000, // n
+ 0b000001110010100101001110000000, // o
+ 0b000001110010100101001110010000, // p
+ 0b000001110010100101001110000100, // q
+ 0b000001010011000100001000000000, // r
+ 0b000000110011000001001100000000, // s
+ 0b010001110001000010000110000000, // t
+ 0b000001010010100101001110000000, // u
+ 0b000001010010100101000100000000, // v
+ 0b000001010110101101010101000000, // w
+ 0b000001010010100010001010000000, // x
+ 0b000001010010100111000010011100, // y
+ 0b000001110000100010001110000000, // z
+ 0b011000100011000010000110000000, // {
+ 0b100001000010000100001000000000, // |
+ 0b110000100001100010001100000000, // }
+ 0b000000000001010101000000000000, // ~
+ 0b000000000000000000000000000000 // DEL
+ };
+
+ #endif // CHARACTERS_H \ No newline at end of file
diff --git a/game.c b/game.c
index 752b32b..21ff5b5 100644
--- a/game.c
+++ b/game.c
@@ -6,6 +6,7 @@
#include "game.h"
#include "domino.h"
#include "assets/dominos.h"
+#include "characters.h"
#define MIN(a,b) (((a)<(b))?(a):(b))
#define MAX(a,b) (((a)>(b))?(a):(b))
@@ -107,6 +108,40 @@ draw(
}
}
+void
+draw_character(
+ struct image canvas,
+ char character,
+ size_t xpos, size_t ypos
+) {
+ const int character_width = 5;
+ const int character_height = 6;
+ struct image texture;
+ texture.width = character_height;
+ texture.height = character_width;
+ texture.buf = (uint32_t[30]) {0};
+ const uint32_t bitmask = characters[character - ' '];
+
+ for (size_t i = 0; i < character_width; i++) {
+ for (size_t j = 0; j < character_height; j++) {
+ if (bitmask >> ((character_height - j - 1) * character_width + (character_width - i + 1)) & 1) {
+ // (0b101101 >> ((height - y - 1) * width + (width - x + 1))) & 1
+ texture.color[j*character_width + i] = (struct color){255, 255, 255, 0};
+ }
+ //else {
+ // texture.color[j*character_width + i] = (struct color){0, 0, 0, 255};
+ //};
+
+ }
+ }
+ draw(canvas, texture, xpos, ypos);
+}
+
+//void
+//draw_text(
+//
+//)
+
void render(struct image canvas) {
for (size_t i = 0; i < canvas.bufsize; i++) canvas.buf[i] = i;
@@ -128,5 +163,9 @@ void render(struct image canvas) {
if (has_active) {
draw(canvas,domino[active.back.val][active.front.val], CLAMP(mouse_x + active.front.x, 0, canvas.width), CLAMP(mouse_y + active.front.y, 0, canvas.height));
}
+
+ // character
+ draw_character(canvas, 'D', 50, 20); // debugging
+
}