annotate sori/main.c @ 71:75de5903355c

Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
author June Park <parkjune1995@gmail.com>
date Sun, 28 Dec 2025 20:34:22 -0800
parents a58a663dae68
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
1 #include <stdio.h>
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
2 #include "dowa/dowa.h"
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
3 #include "third_party/raylib/include/raylib.h"
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
4 #include "third_party/raylib/include/raymath.h"
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
5
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
6 typedef struct {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
7 char *texts;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
8 Vector2 position;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
9 } PopUpText;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
10
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
11 typedef struct {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
12 Vector2 position;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
13 Vector2 size;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
14 Vector2 velocity;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
15 } Entity;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
16
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
17 Entity *Shoot(Entity *player)
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
18 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
19 Entity *box = malloc(sizeof(Entity));
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
20 box->velocity = (Vector2){ .x=1, .y=-10 };
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
21 box->position = player->position;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
22 box->size = (Vector2){ .x=10, .y=2 };
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
23 return box;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
24 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
25
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
26 void Entity_Update(Entity *player, Entity *object)
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
27 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
28 int gravity = 1;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
29 player->velocity.y += gravity;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
30 player->position = Vector2Add(player->position, player->velocity);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
31
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
32 if (
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
33 player->position.y + player->size.y > object->position.y
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
34 )
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
35 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
36 player->position.y = object->position.y - player->size.y;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
37 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
38 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
39
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
40 int main()
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
41 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
42 char mouse_position[256];
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
43
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
44 InitWindow(800, 450, "Sori the game");
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
45 SetTargetFPS(120);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
46
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
47 Entity player = {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
48 .size = (Vector2){ .x = 20, .y = 20 },
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
49 .position = (Vector2){ .x = 10, .y = 10},
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
50 .velocity = (Vector2){ .x = 0, .y = 0},
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
51 };
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
52
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
53 Entity ground = {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
54 .size = (Vector2){ .x = 800, .y = 100 },
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
55 .position = (Vector2){ .x = 0, .y = 350},
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
56 .velocity = (Vector2){ .x = 0, .y = 0},
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
57 };
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
58 Entity *bullet;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
59 Entity **bullets = malloc(sizeof(Entity) * 100);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
60
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
61 PopUpText *curr_values = malloc(sizeof(PopUpText) * 100);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
62 int size_bullets = 0;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
63 int size_texts = 0;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
64 int frame = 0;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
65
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
66 while (!WindowShouldClose())
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
67 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
68 BeginDrawing();
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
69 ClearBackground(RAYWHITE);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
70 int x = GetMouseX();
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
71 int y = GetMouseY();
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
72
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
73 sprintf(
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
74 mouse_position,
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
75 "Mouse position %d, %d",
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
76 x, y
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
77 );
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
78 if (IsMouseButtonPressed(0))
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
79 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
80 curr_values[size_texts].texts = "hello good sir";
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
81 curr_values[size_texts].position = (Vector2){
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
82 .x = (float)x,
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
83 .y = (float)y,
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
84 };
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
85 size_texts++;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
86
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
87 Entity *bullet = Shoot(&player);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
88 bullets[size_bullets] = bullet;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
89 size_bullets++;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
90 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
91
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
92 if (frame > 2)
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
93 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
94 Entity_Update(&player, &ground);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
95 frame = 0;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
96 for (uint32 i = 0; i < size_texts; i++)
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
97 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
98 Entity_Update(bullets[i], &ground);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
99 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
100 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
101
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
102 int key = GetKeyPressed();
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
103
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
104 if (IsKeyDown(KEY_W))
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
105 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
106 player.position.y -= 1;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
107 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
108
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
109 if (IsKeyDown(KEY_S))
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
110 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
111 player.position.y += 1;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
112 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
113
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
114 if (IsKeyDown(KEY_A))
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
115 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
116 player.position.x -= 1;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
117 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
118
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
119 if (IsKeyDown(KEY_D))
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
120 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
121 player.position.x += 1;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
122 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
123
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
124 DrawRectangleV(player.position, player.size, RED);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
125 DrawRectangleV(ground.position, ground.size, BLUE);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
126
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
127 for (uint32 i = 0; i < size_texts; i++)
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
128 {
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
129 DrawText(curr_values[i].texts, curr_values[i].position.x, curr_values[i].position.y,
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
130 20, LIGHTGRAY);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
131 DrawRectangleV(bullets[i]->position, bullets[i]->size, BLACK);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
132 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
133 DrawText(mouse_position, 190, 200, 20, LIGHTGRAY);
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
134 EndDrawing();
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
135
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
136 frame++;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
137 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
138 CloseWindow();
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
139 return 0;
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
140 }
a58a663dae68 [Sori] Making a simple game.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
141