Mercurial
annotate color_game/main.c @ 60:d64a8c189a77
Merged
| author | June Park <me@mrjunejune.com> |
|---|---|
| date | Sat, 20 Dec 2025 13:56:01 -0500 |
| parents | e06bc03d9618 |
| children | 9df5587cf23b |
| rev | line source |
|---|---|
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
1 #include <stdio.h> |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
2 #include <stdlib.h> |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
3 #include <time.h> |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
4 #include "dowa/dowa.h" |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
5 #include "third_party/raylib/include/raylib.h" |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
6 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
7 #define INIT_SCREEN_WIDTH 1200 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
8 #define INIT_SCREEN_HEIGHT 700 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
9 #define PLAYER_SPEED 200.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
10 #define PLAYER_RADIUS 20.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
11 #define MONSTER_SPEED 100.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
12 #define MONSTER_RADIUS 15.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
13 #define BULLET_SPEED 300.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
14 #define BULLET_RADIUS 5.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
15 #define BULLET_LIFETIME 3.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
16 #define SHOOT_INTERVAL 0.5f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
17 #define HIT_PROBABILITY 0.7f // 70% aim accuracy (0.0 = random, 1.0 = perfect) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
18 #define MAX_PASSIVE_NODES 12 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
19 #define PASSIVE_TREE_RADIUS 250.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
20 #define PASSIVE_NODE_RADIUS 20.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
21 #define BASE_DAMAGE 10.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
22 #define PLAYER_MAX_HEALTH 100.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
23 #define MONSTER_CONTACT_DAMAGE 5.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
24 #define BOSS_HEALTH_MULTIPLIER 5.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
25 #define COLOR_UNLOCK_TIME 30.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
26 #define BOSS_SPAWN_TIME 60.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
27 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
28 typedef struct Player { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
29 Vector2 position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
30 Color color; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
31 float health; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
32 float maxHealth; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
33 int unlockedBulletTypes[MAX_PASSIVE_NODES]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
34 int unlockedCount; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
35 int passivePoints; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
36 float invulnerabilityTimer; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
37 } Player; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
38 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
39 typedef struct Map { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
40 float width; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
41 float height; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
42 } Map; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
43 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
44 typedef struct Monster { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
45 Vector2 position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
46 float hue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
47 float saturation; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
48 float health; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
49 float maxHealth; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
50 bool alive; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
51 bool hasCollision; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
52 bool isBoss; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
53 } Monster; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
54 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
55 typedef struct Bullet { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
56 Vector2 position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
57 Vector2 velocity; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
58 float lifetime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
59 float hue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
60 float damage; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
61 bool active; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
62 } Bullet; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
63 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
64 typedef struct PassiveNode { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
65 float angle; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
66 float hue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
67 char description[64]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
68 float damageBonus; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
69 bool unlocked; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
70 } PassiveNode; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
71 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
72 float RandomFloat(float min, float max) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
73 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
74 return min + ((float)rand() / (float)RAND_MAX) * (max - min); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
75 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
76 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
77 float CalculateColorDamage(float bulletHue, float monsterHue, float baseDamage) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
78 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
79 // Calculate hue difference (0-180 degrees) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
80 float diff = fabs(bulletHue - monsterHue); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
81 if (diff > 180.0f) diff = 360.0f - diff; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
82 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
83 // Opposite colors (180 degrees) = 2x damage |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
84 // Same color (0 degrees) = 0.5x damage |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
85 // Linear scale between them |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
86 float damageMultiplier = 0.5f + (diff / 180.0f) * 1.5f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
87 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
88 return baseDamage * damageMultiplier; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
89 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
90 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
91 void InitializePassiveTree(PassiveNode* nodes) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
92 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
93 const char* nodeDescriptions[MAX_PASSIVE_NODES] = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
94 "Red Bullet", // 0° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
95 "Orange Bullet", // 30° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
96 "Yellow Bullet", // 60° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
97 "Chartreuse", // 90° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
98 "Green Bullet", // 120° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
99 "Spring Green", // 150° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
100 "Cyan Bullet", // 180° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
101 "Azure Bullet", // 210° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
102 "Blue Bullet", // 240° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
103 "Violet Bullet", // 270° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
104 "Magenta Bullet", // 300° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
105 "Rose Bullet" // 330° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
106 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
107 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
108 for (int i = 0; i < MAX_PASSIVE_NODES; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
109 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
110 nodes[i].angle = (360.0f / MAX_PASSIVE_NODES) * i; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
111 nodes[i].hue = nodes[i].angle; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
112 snprintf(nodes[i].description, sizeof(nodes[i].description), "%s", nodeDescriptions[i]); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
113 nodes[i].damageBonus = 5.0f + (i * 2.0f); // Scaling damage bonus |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
114 nodes[i].unlocked = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
115 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
116 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
117 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
118 void HandlePlayerMovement(Player* player, Map* map, float deltaTime) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
119 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
120 Vector2 movement = {0}; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
121 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
122 if (IsKeyDown(KEY_W) || IsKeyDown(KEY_UP)) movement.y -= 1.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
123 if (IsKeyDown(KEY_S) || IsKeyDown(KEY_DOWN)) movement.y += 1.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
124 if (IsKeyDown(KEY_A) || IsKeyDown(KEY_LEFT)) movement.x -= 1.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
125 if (IsKeyDown(KEY_D) || IsKeyDown(KEY_RIGHT)) movement.x += 1.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
126 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
127 // Normalize diagonal movement |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
128 float length = sqrtf(movement.x * movement.x + movement.y * movement.y); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
129 if (length > 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
130 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
131 movement.x /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
132 movement.y /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
133 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
134 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
135 // Apply movement |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
136 player->position.x += movement.x * PLAYER_SPEED * deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
137 player->position.y += movement.y * PLAYER_SPEED * deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
138 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
139 // Keep player within map bounds |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
140 if (player->position.x < PLAYER_RADIUS) player->position.x = PLAYER_RADIUS; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
141 if (player->position.x > map->width - PLAYER_RADIUS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
142 player->position.x = map->width - PLAYER_RADIUS; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
143 if (player->position.y < PLAYER_RADIUS) player->position.y = PLAYER_RADIUS; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
144 if (player->position.y > map->height - PLAYER_RADIUS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
145 player->position.y = map->height - PLAYER_RADIUS; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
146 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
147 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
148 void UpdateMonsters(Monster* monsters, int monsterCount, Vector2 playerPos, float deltaTime) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
149 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
150 for (int i = 0; i < monsterCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
151 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
152 if (!monsters[i].alive) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
153 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
154 // Calculate direction to player |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
155 Vector2 direction = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
156 playerPos.x - monsters[i].position.x, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
157 playerPos.y - monsters[i].position.y |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
158 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
159 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
160 // Normalize direction |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
161 float length = sqrtf(direction.x * direction.x + direction.y * direction.y); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
162 if (length > 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
163 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
164 direction.x /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
165 direction.y /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
166 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
167 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
168 // Move toward player |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
169 Vector2 newPos = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
170 monsters[i].position.x + direction.x * MONSTER_SPEED * deltaTime, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
171 monsters[i].position.y + direction.y * MONSTER_SPEED * deltaTime |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
172 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
173 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
174 // Check collision with other monsters if this monster has collision enabled |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
175 if (monsters[i].hasCollision) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
176 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
177 bool collision = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
178 for (int j = 0; j < monsterCount; j++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
179 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
180 if (i == j || !monsters[j].alive || !monsters[j].hasCollision) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
181 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
182 float dx = newPos.x - monsters[j].position.x; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
183 float dy = newPos.y - monsters[j].position.y; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
184 float distance = sqrtf(dx * dx + dy * dy); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
185 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
186 if (distance < MONSTER_RADIUS * 2) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
187 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
188 collision = true; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
189 break; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
190 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
191 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
192 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
193 if (!collision) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
194 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
195 monsters[i].position = newPos; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
196 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
197 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
198 else |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
199 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
200 monsters[i].position = newPos; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
201 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
202 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
203 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
204 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
205 void CheckPlayerMonsterCollision(Player* player, Monster* monsters, int monsterCount, float deltaTime) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
206 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
207 if (player->invulnerabilityTimer > 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
208 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
209 player->invulnerabilityTimer -= deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
210 return; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
211 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
212 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
213 for (int i = 0; i < monsterCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
214 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
215 if (!monsters[i].alive) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
216 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
217 float dx = player->position.x - monsters[i].position.x; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
218 float dy = player->position.y - monsters[i].position.y; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
219 float distance = sqrtf(dx * dx + dy * dy); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
220 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
221 if (distance < PLAYER_RADIUS + MONSTER_RADIUS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
222 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
223 player->health -= MONSTER_CONTACT_DAMAGE; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
224 player->invulnerabilityTimer = 0.5f; // 0.5 second invulnerability |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
225 if (player->health < 0) player->health = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
226 break; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
227 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
228 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
229 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
230 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
231 void UpdateBullets(Bullet* bullets, int bulletCount, float deltaTime) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
232 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
233 for (int i = 0; i < bulletCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
234 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
235 if (!bullets[i].active) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
236 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
237 // Update position |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
238 bullets[i].position.x += bullets[i].velocity.x * deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
239 bullets[i].position.y += bullets[i].velocity.y * deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
240 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
241 // Update lifetime |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
242 bullets[i].lifetime -= deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
243 if (bullets[i].lifetime <= 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
244 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
245 bullets[i].active = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
246 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
247 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
248 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
249 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
250 int CheckCollisions(Bullet* bullets, int bulletCount, Monster* monsters, int monsterCount, Player* player) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
251 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
252 int bossesKilled = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
253 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
254 for (int i = 0; i < bulletCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
255 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
256 if (!bullets[i].active) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
257 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
258 for (int j = 0; j < monsterCount; j++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
259 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
260 if (!monsters[j].alive) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
261 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
262 // Check distance between bullet and monster |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
263 float dx = bullets[i].position.x - monsters[j].position.x; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
264 float dy = bullets[i].position.y - monsters[j].position.y; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
265 float distance = sqrtf(dx * dx + dy * dy); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
266 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
267 if (distance < BULLET_RADIUS + MONSTER_RADIUS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
268 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
269 // Calculate damage based on color difference |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
270 float damage = CalculateColorDamage(bullets[i].hue, monsters[j].hue, bullets[i].damage); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
271 monsters[j].health -= damage; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
272 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
273 // Check if monster died |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
274 if (monsters[j].health <= 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
275 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
276 monsters[j].alive = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
277 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
278 // Award passive point if boss was killed |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
279 if (monsters[j].isBoss) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
280 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
281 player->passivePoints++; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
282 bossesKilled++; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
283 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
284 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
285 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
286 bullets[i].active = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
287 break; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
288 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
289 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
290 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
291 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
292 return bossesKilled; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
293 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
294 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
295 Vector2 FindNearestMonster(Monster* monsters, int monsterCount, Vector2 playerPos) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
296 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
297 float minDistance = INFINITY; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
298 Vector2 nearestPos = playerPos; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
299 bool found = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
300 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
301 for (int i = 0; i < monsterCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
302 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
303 if (!monsters[i].alive) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
304 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
305 float dx = monsters[i].position.x - playerPos.x; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
306 float dy = monsters[i].position.y - playerPos.y; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
307 float distance = sqrtf(dx * dx + dy * dy); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
308 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
309 if (distance < minDistance) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
310 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
311 minDistance = distance; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
312 nearestPos = monsters[i].position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
313 found = true; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
314 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
315 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
316 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
317 if (!found) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
318 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
319 // No monsters, return random direction |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
320 float angle = RandomFloat(0.0f, 2.0f * PI); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
321 return (Vector2){ |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
322 playerPos.x + cosf(angle) * 100.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
323 playerPos.y + sinf(angle) * 100.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
324 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
325 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
326 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
327 return nearestPos; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
328 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
329 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
330 int main() |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
331 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
332 InitWindow(INIT_SCREEN_WIDTH, INIT_SCREEN_HEIGHT, "color game"); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
333 SetTargetFPS(60); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
334 srand(time(NULL)); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
335 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
336 // --- All Global Variables --- |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
337 Map map = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
338 .width = INIT_SCREEN_WIDTH * 3, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
339 .height = INIT_SCREEN_HEIGHT * 3 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
340 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
341 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
342 // Initialize player at map center |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
343 Player player = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
344 .position = {map.width / 2, map.height / 2}, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
345 .color = BLUE, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
346 .health = PLAYER_MAX_HEALTH, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
347 .maxHealth = PLAYER_MAX_HEALTH, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
348 .unlockedCount = 0, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
349 .passivePoints = 0, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
350 .invulnerabilityTimer = 0.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
351 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
352 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
353 // Initialize passive tree |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
354 PassiveNode passiveTree[MAX_PASSIVE_NODES]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
355 InitializePassiveTree(passiveTree); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
356 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
357 // Unlock first node only (grayscale bullet to start) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
358 passiveTree[0].unlocked = true; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
359 player.unlockedBulletTypes[player.unlockedCount++] = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
360 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
361 // Initialize camera |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
362 Camera2D camera = {0}; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
363 camera.target = player.position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
364 camera.offset = (Vector2){INIT_SCREEN_WIDTH / 2.0f, INIT_SCREEN_HEIGHT / 2.0f}; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
365 camera.rotation = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
366 camera.zoom = 1.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
367 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
368 bool menuOpen = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
369 bool showMonsterColors = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
370 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
371 Vector2 menuCenter = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
372 .x = INIT_SCREEN_WIDTH / 2, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
373 .y = INIT_SCREEN_HEIGHT / 2 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
374 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
375 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
376 // Game progression variables |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
377 float gameTime = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
378 float currentMonsterHue = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
379 float currentMonsterSaturation = 0.0f; // Start grayscale |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
380 int bossesDefeated = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
381 float nextBossTime = BOSS_SPAWN_TIME; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
382 bool colorUnlocked = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
383 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
384 // Initialize monsters array |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
385 #define MAX_MONSTERS 100 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
386 Monster live_monsters[MAX_MONSTERS]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
387 int monsterCount = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
388 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
389 // Spawn initial monsters (grayscale) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
390 for (int i = 0; i < 10; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
391 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
392 live_monsters[monsterCount++] = (Monster){ |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
393 .position = {RandomFloat(0, map.width), RandomFloat(0, map.height)}, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
394 .hue = currentMonsterHue, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
395 .saturation = currentMonsterSaturation, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
396 .health = 50.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
397 .maxHealth = 50.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
398 .alive = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
399 .hasCollision = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
400 .isBoss = false |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
401 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
402 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
403 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
404 // Initialize bullets array |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
405 #define MAX_BULLETS 200 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
406 Bullet bullets[MAX_BULLETS]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
407 int bulletCount = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
408 for (int i = 0; i < MAX_BULLETS; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
409 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
410 bullets[i].active = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
411 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
412 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
413 // Shooting timer |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
414 float shootTimer = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
415 float hitProbability = HIT_PROBABILITY; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
416 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
417 while (!WindowShouldClose()) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
418 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
419 float deltaTime = GetFrameTime(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
420 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
421 if (IsKeyPressed(KEY_P)) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
422 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
423 menuOpen = !menuOpen; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
424 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
425 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
426 if (IsKeyPressed(KEY_R)) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
427 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
428 showMonsterColors = !showMonsterColors; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
429 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
430 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
431 // Handle passive tree menu interactions |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
432 if (menuOpen) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
433 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
434 if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
435 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
436 Vector2 mousePos = GetMousePosition(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
437 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
438 // Check if clicked on a passive node |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
439 for (int i = 0; i < MAX_PASSIVE_NODES; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
440 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
441 float angleRad = passiveTree[i].angle * DEG2RAD; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
442 Vector2 nodePos = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
443 menuCenter.x + cosf(angleRad) * PASSIVE_TREE_RADIUS, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
444 menuCenter.y + sinf(angleRad) * PASSIVE_TREE_RADIUS |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
445 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
446 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
447 float dx = mousePos.x - nodePos.x; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
448 float dy = mousePos.y - nodePos.y; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
449 float distance = sqrtf(dx * dx + dy * dy); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
450 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
451 if (distance < PASSIVE_NODE_RADIUS && !passiveTree[i].unlocked && player.passivePoints > 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
452 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
453 // Unlock the node |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
454 passiveTree[i].unlocked = true; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
455 player.unlockedBulletTypes[player.unlockedCount++] = i; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
456 player.passivePoints--; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
457 break; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
458 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
459 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
460 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
461 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
462 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
463 // Only handle game logic when menu is closed |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
464 if (!menuOpen) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
465 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
466 // Update game time and progression |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
467 gameTime += deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
468 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
469 // Unlock color after COLOR_UNLOCK_TIME |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
470 if (!colorUnlocked && gameTime >= COLOR_UNLOCK_TIME) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
471 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
472 colorUnlocked = true; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
473 currentMonsterSaturation = 1.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
474 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
475 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
476 // Spawn boss and unlock new color |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
477 if (gameTime >= nextBossTime && monsterCount < MAX_MONSTERS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
478 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
479 // Generate new color for this boss cycle |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
480 currentMonsterHue = RandomFloat(0, 360); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
481 nextBossTime += BOSS_SPAWN_TIME; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
482 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
483 // Spawn boss monster |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
484 live_monsters[monsterCount++] = (Monster){ |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
485 .position = {RandomFloat(0, map.width), RandomFloat(0, map.height)}, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
486 .hue = currentMonsterHue, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
487 .saturation = currentMonsterSaturation, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
488 .health = 50.0f * BOSS_HEALTH_MULTIPLIER, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
489 .maxHealth = 50.0f * BOSS_HEALTH_MULTIPLIER, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
490 .alive = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
491 .hasCollision = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
492 .isBoss = true |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
493 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
494 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
495 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
496 // Spawn regular monsters periodically |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
497 static float monsterSpawnTimer = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
498 monsterSpawnTimer += deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
499 if (monsterSpawnTimer >= 3.0f && monsterCount < MAX_MONSTERS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
500 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
501 monsterSpawnTimer = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
502 live_monsters[monsterCount++] = (Monster){ |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
503 .position = {RandomFloat(0, map.width), RandomFloat(0, map.height)}, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
504 .hue = currentMonsterHue, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
505 .saturation = currentMonsterSaturation, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
506 .health = 50.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
507 .maxHealth = 50.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
508 .alive = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
509 .hasCollision = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
510 .isBoss = false |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
511 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
512 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
513 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
514 HandlePlayerMovement(&player, &map, deltaTime); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
515 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
516 // Check player-monster collision |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
517 CheckPlayerMonsterCollision(&player, live_monsters, monsterCount, deltaTime); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
518 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
519 // Update shoot timer and shoot bullets |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
520 shootTimer += deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
521 if (shootTimer >= SHOOT_INTERVAL && player.unlockedCount > 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
522 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
523 shootTimer = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
524 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
525 // Find inactive bullet slot |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
526 for (int i = 0; i < MAX_BULLETS; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
527 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
528 if (!bullets[i].active) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
529 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
530 // Choose random bullet type from unlocked types |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
531 int randomIndex = (int)RandomFloat(0, player.unlockedCount); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
532 int nodeIndex = player.unlockedBulletTypes[randomIndex]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
533 PassiveNode* selectedNode = &passiveTree[nodeIndex]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
534 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
535 // Find nearest monster to aim at |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
536 Vector2 targetPos = FindNearestMonster(live_monsters, monsterCount, player.position); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
537 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
538 // Calculate direction to target |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
539 Vector2 direction = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
540 targetPos.x - player.position.x, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
541 targetPos.y - player.position.y |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
542 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
543 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
544 // Normalize |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
545 float length = sqrtf(direction.x * direction.x + direction.y * direction.y); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
546 if (length > 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
547 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
548 direction.x /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
549 direction.y /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
550 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
551 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
552 // Calculate base angle |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
553 float baseAngle = atan2f(direction.y, direction.x); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
554 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
555 // Add random deviation based on accuracy |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
556 float maxDeviation = (1.0f - hitProbability) * PI; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
557 float deviation = RandomFloat(-maxDeviation, maxDeviation); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
558 float finalAngle = baseAngle + deviation; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
559 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
560 bullets[i] = (Bullet){ |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
561 .position = player.position, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
562 .velocity = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
563 cosf(finalAngle) * BULLET_SPEED, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
564 sinf(finalAngle) * BULLET_SPEED |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
565 }, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
566 .lifetime = BULLET_LIFETIME, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
567 .hue = selectedNode->hue, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
568 .damage = BASE_DAMAGE + selectedNode->damageBonus, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
569 .active = true |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
570 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
571 break; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
572 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
573 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
574 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
575 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
576 // Update monsters |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
577 UpdateMonsters(live_monsters, monsterCount, player.position, deltaTime); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
578 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
579 // Update bullets |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
580 UpdateBullets(bullets, MAX_BULLETS, deltaTime); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
581 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
582 // Check collisions |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
583 int bossKills = CheckCollisions(bullets, MAX_BULLETS, live_monsters, monsterCount, &player); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
584 bossesDefeated += bossKills; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
585 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
586 // Update camera to follow player |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
587 camera.target = player.position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
588 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
589 // Clamp camera to map edges |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
590 float minX = INIT_SCREEN_WIDTH / 2.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
591 float maxX = map.width - INIT_SCREEN_WIDTH / 2.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
592 float minY = INIT_SCREEN_HEIGHT / 2.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
593 float maxY = map.height - INIT_SCREEN_HEIGHT / 2.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
594 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
595 if (camera.target.x < minX) camera.target.x = minX; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
596 if (camera.target.x > maxX) camera.target.x = maxX; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
597 if (camera.target.y < minY) camera.target.y = minY; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
598 if (camera.target.y > maxY) camera.target.y = maxY; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
599 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
600 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
601 // --- Drawings --- |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
602 BeginDrawing(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
603 ClearBackground(RAYWHITE); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
604 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
605 if (menuOpen) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
606 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
607 // Draw color wheel background |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
608 for (int i = 0; i < 360; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
609 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
610 Color color = ColorFromHSV((float)i, 1.0f, 1.0f); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
611 DrawCircleSector( |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
612 menuCenter, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
613 PASSIVE_TREE_RADIUS + 30.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
614 (float)i, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
615 (float)(i + 1), |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
616 1, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
617 color |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
618 ); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
619 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
620 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
621 // Draw passive tree nodes |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
622 for (int i = 0; i < MAX_PASSIVE_NODES; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
623 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
624 float angleRad = passiveTree[i].angle * DEG2RAD; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
625 Vector2 nodePos = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
626 menuCenter.x + cosf(angleRad) * PASSIVE_TREE_RADIUS, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
627 menuCenter.y + sinf(angleRad) * PASSIVE_TREE_RADIUS |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
628 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
629 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
630 Color nodeColor = ColorFromHSV(passiveTree[i].hue, 1.0f, 1.0f); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
631 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
632 if (passiveTree[i].unlocked) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
633 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
634 // Draw unlocked node |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
635 DrawCircleV(nodePos, PASSIVE_NODE_RADIUS, nodeColor); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
636 DrawCircleV(nodePos, PASSIVE_NODE_RADIUS - 3, WHITE); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
637 DrawCircleV(nodePos, PASSIVE_NODE_RADIUS - 6, nodeColor); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
638 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
639 else |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
640 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
641 // Draw locked node |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
642 DrawCircleV(nodePos, PASSIVE_NODE_RADIUS, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
643 DrawCircleV(nodePos, PASSIVE_NODE_RADIUS - 3, GRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
644 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
645 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
646 // Draw node info on hover |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
647 Vector2 mousePos = GetMousePosition(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
648 float dx = mousePos.x - nodePos.x; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
649 float dy = mousePos.y - nodePos.y; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
650 float distance = sqrtf(dx * dx + dy * dy); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
651 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
652 if (distance < PASSIVE_NODE_RADIUS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
653 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
654 DrawText(passiveTree[i].description, nodePos.x - 50, nodePos.y - 40, 12, BLACK); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
655 DrawText(TextFormat("+%.0f dmg", passiveTree[i].damageBonus), nodePos.x - 30, nodePos.y - 28, 10, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
656 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
657 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
658 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
659 // Draw menu instructions |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
660 DrawText("PASSIVE TREE MENU", menuCenter.x - 100, menuCenter.y - 350, 20, BLACK); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
661 DrawText("Click nodes to unlock bullet types", menuCenter.x - 120, menuCenter.y - 330, 16, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
662 DrawText(TextFormat("Passive Points Available: %d", player.passivePoints), menuCenter.x - 120, menuCenter.y - 310, 16, PURPLE); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
663 DrawText("Defeat bosses to earn passive points!", menuCenter.x - 120, menuCenter.y - 290, 14, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
664 DrawText("Press P to close", menuCenter.x - 70, menuCenter.y + 320, 18, BLACK); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
665 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
666 else |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
667 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
668 // Draw game world (with camera) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
669 BeginMode2D(camera); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
670 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
671 // Draw map background |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
672 DrawRectangle(0, 0, map.width, map.height, (Color){240, 240, 240, 255}); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
673 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
674 // Draw map border |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
675 DrawRectangleLinesEx((Rectangle){0, 0, map.width, map.height}, 5.0f, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
676 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
677 // Draw grid to show map scale |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
678 for (int i = 0; i <= map.width; i += 100) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
679 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
680 DrawLine(i, 0, i, map.height, LIGHTGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
681 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
682 for (int i = 0; i <= map.height; i += 100) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
683 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
684 DrawLine(0, i, map.width, i, LIGHTGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
685 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
686 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
687 // Draw monsters |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
688 for (int i = 0; i < monsterCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
689 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
690 if (live_monsters[i].alive) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
691 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
692 Color monsterColor = ColorFromHSV(live_monsters[i].hue, live_monsters[i].saturation, 1.0f); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
693 float radius = live_monsters[i].isBoss ? MONSTER_RADIUS * 2 : MONSTER_RADIUS; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
694 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
695 DrawCircleV(live_monsters[i].position, radius, monsterColor); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
696 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
697 // Draw boss crown indicator |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
698 if (live_monsters[i].isBoss) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
699 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
700 DrawCircleV(live_monsters[i].position, radius - 5, YELLOW); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
701 DrawCircleV(live_monsters[i].position, radius - 10, monsterColor); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
702 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
703 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
704 // Draw health bar |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
705 float healthPercent = live_monsters[i].health / live_monsters[i].maxHealth; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
706 Vector2 barPos = {live_monsters[i].position.x - 15, live_monsters[i].position.y - radius - 10}; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
707 DrawRectangle(barPos.x, barPos.y, 30, 4, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
708 DrawRectangle(barPos.x, barPos.y, 30 * healthPercent, 4, GREEN); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
709 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
710 // Draw color label if toggle is on |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
711 if (showMonsterColors) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
712 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
713 char colorText[32]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
714 snprintf(colorText, sizeof(colorText), "H:%.0f S:%.1f", live_monsters[i].hue, live_monsters[i].saturation); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
715 DrawText(colorText, live_monsters[i].position.x - 25, live_monsters[i].position.y + radius + 5, 10, BLACK); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
716 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
717 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
718 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
719 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
720 // Draw bullets |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
721 for (int i = 0; i < MAX_BULLETS; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
722 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
723 if (bullets[i].active) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
724 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
725 Color bulletColor = ColorFromHSV(bullets[i].hue, 1.0f, 1.0f); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
726 DrawCircleV(bullets[i].position, BULLET_RADIUS, bulletColor); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
727 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
728 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
729 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
730 // Draw player (flash when invulnerable) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
731 if (player.invulnerabilityTimer <= 0 || ((int)(player.invulnerabilityTimer * 10) % 2 == 0)) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
732 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
733 DrawCircleV(player.position, PLAYER_RADIUS, player.color); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
734 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
735 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
736 EndMode2D(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
737 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
738 // Draw UI (screen space) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
739 // Timer at top center |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
740 int minutes = (int)(gameTime / 60); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
741 int seconds = (int)gameTime % 60; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
742 DrawText(TextFormat("Time: %02d:%02d", minutes, seconds), INIT_SCREEN_WIDTH / 2 - 60, 10, 30, BLACK); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
743 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
744 // Player health bar |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
745 float healthPercent = player.health / player.maxHealth; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
746 DrawRectangle(10, 10, 200, 20, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
747 DrawRectangle(10, 10, 200 * healthPercent, 20, RED); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
748 DrawText(TextFormat("HP: %.0f/%.0f", player.health, player.maxHealth), 15, 12, 16, WHITE); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
749 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
750 // Passive points |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
751 DrawText(TextFormat("Passive Points: %d", player.passivePoints), 10, 40, 20, PURPLE); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
752 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
753 // Controls |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
754 DrawText("WASD: Move | P: Menu | R: Toggle Colors", 10, 70, 16, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
755 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
756 // Count alive monsters and bosses |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
757 int aliveCount = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
758 int bossCount = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
759 for (int i = 0; i < monsterCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
760 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
761 if (live_monsters[i].alive) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
762 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
763 aliveCount++; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
764 if (live_monsters[i].isBoss) bossCount++; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
765 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
766 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
767 DrawText(TextFormat("Monsters: %d | Bosses: %d", aliveCount, bossCount), 10, 95, 18, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
768 DrawText(TextFormat("Unlocked bullets: %d/%d", player.unlockedCount, MAX_PASSIVE_NODES), 10, 120, 16, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
769 DrawText(TextFormat("Bosses defeated: %d", bossesDefeated), 10, 145, 16, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
770 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
771 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
772 EndDrawing(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
773 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
774 return 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
775 } |