annotate color_game/main.c @ 61:9df5587cf23b

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