Mercurial
annotate color_game/main.c @ 71:75de5903355c
Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Sun, 28 Dec 2025 20:34:22 -0800 |
| parents | fff1b048dda6 |
| children | 35b1abc37969 |
| 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 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
12 #define PLAYER_MAX_HEALTH 100.0f |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
13 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
14 #define MONSTER_SPEED 100.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
15 #define MONSTER_RADIUS 15.0f |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
16 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
17 #define BULLET_SPEED 300.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
18 #define BULLET_RADIUS 5.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
19 #define BULLET_LIFETIME 3.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
20 #define SHOOT_INTERVAL 0.5f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
21 #define HIT_PROBABILITY 0.7f // 70% aim accuracy (0.0 = random, 1.0 = perfect) |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
22 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
23 #define MAX_PASSIVE_NODES 12 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
24 #define PASSIVE_TREE_RADIUS 250.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
25 #define PASSIVE_NODE_RADIUS 20.0f |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
26 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
27 #define MONSTER_WEIGHT 10.0f |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
28 #define MONSTER_CONTACT_DAMAGE 5.0f |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
29 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
30 #define BASE_DAMAGE 10.0f |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
31 #define BOSS_HEALTH_MULTIPLIER 5.0f |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
32 #define BOSS_MONSTER_WEIGHT 10.0f |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
33 #define BOSS_SPAWN_TIME 10.0f |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
34 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
35 #define COLOR_UNLOCK_TIME 5.0f |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
36 #define MAX_DAMAGE_NUMBERS 100 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
37 #define DAMAGE_NUMBER_LIFETIME 1.0f |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
38 #define EXP_PER_MONSTER 10.0f |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
39 #define EXP_PER_BOSS 50.0f |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
40 #define EXP_TO_LEVEL 100.0f |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
41 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
42 typedef struct Player { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
43 Vector2 position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
44 float health; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
45 float maxHealth; |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
46 float invulnerabilityTimer; |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
47 int unlockedBulletTypes[MAX_PASSIVE_NODES]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
48 int unlockedCount; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
49 int passivePoints; |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
50 int level; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
51 float experience; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
52 float expToNextLevel; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
53 Color color; |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
54 } Player; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
55 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
56 typedef struct DamageNumber { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
57 Vector2 position; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
58 float damage; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
59 float lifetime; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
60 bool active; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
61 Color color; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
62 } DamageNumber; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
63 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
64 typedef struct Map { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
65 float width; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
66 float height; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
67 } Map; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
68 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
69 typedef struct Monster { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
70 Vector2 position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
71 float hue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
72 float saturation; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
73 float health; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
74 float maxHealth; |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
75 float weight; |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
76 bool alive; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
77 bool hasCollision; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
78 bool isBoss; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
79 } Monster; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
80 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
81 typedef struct Bullet { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
82 Vector2 position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
83 Vector2 velocity; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
84 float lifetime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
85 float hue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
86 float damage; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
87 bool active; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
88 } Bullet; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
89 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
90 typedef struct PassiveNode { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
91 float angle; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
92 float hue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
93 char description[64]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
94 float damageBonus; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
95 bool unlocked; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
96 } PassiveNode; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
97 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
98 float RandomFloat(float min, float max) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
99 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
100 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
|
101 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
102 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
103 float CalculateColorDamage(float bulletHue, float monsterHue, float baseDamage) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
104 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
105 // Calculate hue difference (0-180 degrees) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
106 float diff = fabs(bulletHue - monsterHue); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
107 if (diff > 180.0f) diff = 360.0f - diff; |
|
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 // Opposite colors (180 degrees) = 2x damage |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
110 // Same color (0 degrees) = 0.5x damage |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
111 // Linear scale between them |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
112 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
|
113 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
114 return baseDamage * damageMultiplier; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
115 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
116 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
117 void SpawnDamageNumber(DamageNumber* damageNumbers, int maxCount, Vector2 position, float damage, Color color) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
118 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
119 for (int i = 0; i < maxCount; i++) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
120 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
121 if (!damageNumbers[i].active) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
122 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
123 damageNumbers[i].position = position; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
124 damageNumbers[i].damage = damage; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
125 damageNumbers[i].lifetime = DAMAGE_NUMBER_LIFETIME; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
126 damageNumbers[i].active = true; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
127 damageNumbers[i].color = color; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
128 break; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
129 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
130 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
131 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
132 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
133 void UpdateDamageNumbers(DamageNumber* damageNumbers, int count, float deltaTime) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
134 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
135 for (int i = 0; i < count; i++) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
136 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
137 if (!damageNumbers[i].active) continue; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
138 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
139 damageNumbers[i].lifetime -= deltaTime; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
140 damageNumbers[i].position.y -= 30.0f * deltaTime; // Float upward |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
141 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
142 if (damageNumbers[i].lifetime <= 0) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
143 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
144 damageNumbers[i].active = false; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
145 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
146 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
147 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
148 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
149 void AddExperience(Player* player, float exp) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
150 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
151 player->experience += exp; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
152 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
153 // Check for level up |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
154 while (player->experience >= player->expToNextLevel) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
155 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
156 player->experience -= player->expToNextLevel; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
157 player->level++; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
158 player->passivePoints++; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
159 // Increase exp requirement for next level |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
160 player->expToNextLevel = EXP_TO_LEVEL * player->level; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
161 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
162 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
163 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
164 void InitializePassiveTree(PassiveNode* nodes) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
165 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
166 const char* nodeDescriptions[MAX_PASSIVE_NODES] = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
167 "Red Bullet", // 0° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
168 "Orange Bullet", // 30° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
169 "Yellow Bullet", // 60° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
170 "Chartreuse", // 90° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
171 "Green Bullet", // 120° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
172 "Spring Green", // 150° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
173 "Cyan Bullet", // 180° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
174 "Azure Bullet", // 210° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
175 "Blue Bullet", // 240° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
176 "Violet Bullet", // 270° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
177 "Magenta Bullet", // 300° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
178 "Rose Bullet" // 330° |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
179 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
180 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
181 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
|
182 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
183 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
|
184 nodes[i].hue = nodes[i].angle; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
185 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
|
186 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
|
187 nodes[i].unlocked = false; |
|
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 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
190 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
191 void HandlePlayerMovement(Player* player, Map* map, float deltaTime) |
|
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 Vector2 movement = {0}; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
194 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
195 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
|
196 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
|
197 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
|
198 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
|
199 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
200 // Normalize diagonal movement |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
201 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
|
202 if (length > 0) |
|
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 movement.x /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
205 movement.y /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
206 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
207 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
208 // Apply movement |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
209 player->position.x += movement.x * PLAYER_SPEED * deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
210 player->position.y += movement.y * PLAYER_SPEED * deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
211 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
212 // Keep player within map bounds |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
213 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
|
214 if (player->position.x > map->width - PLAYER_RADIUS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
215 player->position.x = map->width - PLAYER_RADIUS; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
216 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
|
217 if (player->position.y > map->height - PLAYER_RADIUS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
218 player->position.y = map->height - PLAYER_RADIUS; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
219 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
220 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
221 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
|
222 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
223 for (int i = 0; i < monsterCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
224 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
225 if (!monsters[i].alive) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
226 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
227 // Calculate direction to player |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
228 Vector2 direction = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
229 playerPos.x - monsters[i].position.x, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
230 playerPos.y - monsters[i].position.y |
|
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 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
233 // Normalize direction |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
234 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
|
235 if (length > 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
236 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
237 direction.x /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
238 direction.y /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
239 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
240 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
241 // Move toward player |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
242 Vector2 newPos = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
243 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
|
244 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
|
245 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
246 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
247 // 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
|
248 if (monsters[i].hasCollision) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
249 { |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
250 bool canMove = true; |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
251 for (int j = 0; j < monsterCount; j++) |
|
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 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
|
254 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
255 float dx = newPos.x - monsters[j].position.x; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
256 float dy = newPos.y - monsters[j].position.y; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
257 float distance = sqrtf(dx * dx + dy * dy); |
|
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 if (distance < MONSTER_RADIUS * 2) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
260 { |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
261 // If this monster is heavier, push the other monster away |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
262 if (monsters[i].weight > monsters[j].weight) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
263 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
264 // Calculate push direction (away from current monster) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
265 Vector2 pushDir = {dx, dy}; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
266 float pushLength = sqrtf(pushDir.x * pushDir.x + pushDir.y * pushDir.y); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
267 if (pushLength > 0) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
268 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
269 pushDir.x /= pushLength; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
270 pushDir.y /= pushLength; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
271 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
272 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
273 // Push the lighter monster away |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
274 float pushForce = (monsters[i].weight - monsters[j].weight) * MONSTER_SPEED * deltaTime * 0.5f; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
275 monsters[j].position.x += pushDir.x * pushForce; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
276 monsters[j].position.y += pushDir.y * pushForce; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
277 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
278 else |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
279 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
280 // This monster is lighter or equal weight, can't move through |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
281 canMove = false; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
282 break; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
283 } |
|
59
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 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
287 if (canMove) |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
288 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
289 monsters[i].position = newPos; |
|
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 else |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
293 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
294 monsters[i].position = newPos; |
|
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 } |
|
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 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
299 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
|
300 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
301 if (player->invulnerabilityTimer > 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
302 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
303 player->invulnerabilityTimer -= deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
304 return; |
|
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 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
307 for (int i = 0; i < monsterCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
308 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
309 if (!monsters[i].alive) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
310 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
311 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
|
312 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
|
313 float distance = sqrtf(dx * dx + dy * dy); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
314 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
315 if (distance < PLAYER_RADIUS + MONSTER_RADIUS) |
|
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 player->health -= MONSTER_CONTACT_DAMAGE; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
318 player->invulnerabilityTimer = 0.5f; // 0.5 second invulnerability |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
319 if (player->health < 0) player->health = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
320 break; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
321 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
322 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
323 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
324 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
325 void UpdateBullets(Bullet* bullets, int bulletCount, float deltaTime) |
|
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 for (int i = 0; i < bulletCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
328 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
329 if (!bullets[i].active) continue; |
|
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 // Update position |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
332 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
|
333 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
|
334 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
335 // Update lifetime |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
336 bullets[i].lifetime -= deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
337 if (bullets[i].lifetime <= 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
338 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
339 bullets[i].active = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
340 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
341 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
342 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
343 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
344 int CheckCollisions(Bullet* bullets, int bulletCount, Monster* monsters, int monsterCount, Player* player, DamageNumber* damageNumbers) |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
345 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
346 int bossesKilled = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
347 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
348 for (int i = 0; i < bulletCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
349 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
350 if (!bullets[i].active) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
351 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
352 for (int j = 0; j < monsterCount; j++) |
|
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 if (!monsters[j].alive) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
355 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
356 // Check distance between bullet and monster |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
357 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
|
358 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
|
359 float distance = sqrtf(dx * dx + dy * dy); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
360 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
361 if (distance < BULLET_RADIUS + MONSTER_RADIUS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
362 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
363 // Calculate damage based on color difference |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
364 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
|
365 monsters[j].health -= damage; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
366 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
367 // Spawn damage number |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
368 Color damageColor = damage > bullets[i].damage * 1.5f ? ORANGE : WHITE; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
369 SpawnDamageNumber(damageNumbers, MAX_DAMAGE_NUMBERS, monsters[j].position, damage, damageColor); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
370 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
371 // Check if monster died |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
372 if (monsters[j].health <= 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
373 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
374 monsters[j].alive = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
375 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
376 // Award experience |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
377 float expGain = monsters[j].isBoss ? EXP_PER_BOSS : EXP_PER_MONSTER; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
378 AddExperience(player, expGain); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
379 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
380 // Award passive point if boss was killed |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
381 if (monsters[j].isBoss) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
382 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
383 player->passivePoints++; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
384 bossesKilled++; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
385 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
386 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
387 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
388 bullets[i].active = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
389 break; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
390 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
391 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
392 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
393 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
394 return bossesKilled; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
395 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
396 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
397 Vector2 FindNearestMonster(Monster* monsters, int monsterCount, Vector2 playerPos) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
398 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
399 float minDistance = INFINITY; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
400 Vector2 nearestPos = playerPos; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
401 bool found = 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 for (int i = 0; i < monsterCount; i++) |
|
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 if (!monsters[i].alive) continue; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
406 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
407 float dx = monsters[i].position.x - playerPos.x; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
408 float dy = monsters[i].position.y - playerPos.y; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
409 float distance = sqrtf(dx * dx + dy * dy); |
|
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 if (distance < minDistance) |
|
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 minDistance = distance; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
414 nearestPos = monsters[i].position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
415 found = true; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
416 } |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
417 |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
418 if (found) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
419 break; |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
420 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
421 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
422 if (!found) |
|
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 // No monsters, return random direction |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
425 float angle = RandomFloat(0.0f, 2.0f * PI); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
426 return (Vector2){ |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
427 playerPos.x + cosf(angle) * 100.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
428 playerPos.y + sinf(angle) * 100.0f |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
429 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
430 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
431 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
432 return nearestPos; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
433 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
434 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
435 int main() |
|
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 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
|
438 SetTargetFPS(60); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
439 srand(time(NULL)); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
440 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
441 // --- All Global Variables --- |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
442 Map map = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
443 .width = INIT_SCREEN_WIDTH * 3, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
444 .height = INIT_SCREEN_HEIGHT * 3 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
445 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
446 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
447 Player player = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
448 .position = {map.width / 2, map.height / 2}, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
449 .color = BLUE, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
450 .health = PLAYER_MAX_HEALTH, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
451 .maxHealth = PLAYER_MAX_HEALTH, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
452 .unlockedCount = 0, |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
453 .passivePoints = 3, |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
454 .invulnerabilityTimer = 0.0f, |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
455 .level = 1, |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
456 .experience = 0.0f, |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
457 .expToNextLevel = EXP_TO_LEVEL |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
458 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
459 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
460 PassiveNode passiveTree[MAX_PASSIVE_NODES]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
461 InitializePassiveTree(passiveTree); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
462 passiveTree[0].unlocked = true; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
463 player.unlockedBulletTypes[player.unlockedCount++] = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
464 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
465 // Initialize damage numbers array |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
466 DamageNumber damageNumbers[MAX_DAMAGE_NUMBERS]; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
467 for (int i = 0; i < MAX_DAMAGE_NUMBERS; i++) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
468 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
469 damageNumbers[i].active = false; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
470 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
471 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
472 Camera2D camera = {0}; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
473 camera.target = player.position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
474 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
|
475 camera.rotation = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
476 camera.zoom = 1.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
477 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
478 bool menuOpen = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
479 bool showMonsterColors = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
480 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
481 Vector2 menuCenter = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
482 .x = INIT_SCREEN_WIDTH / 2, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
483 .y = INIT_SCREEN_HEIGHT / 2 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
484 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
485 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
486 float gameTime = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
487 float currentMonsterHue = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
488 float currentMonsterSaturation = 0.0f; // Start grayscale |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
489 int bossesDefeated = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
490 float nextBossTime = BOSS_SPAWN_TIME; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
491 bool colorUnlocked = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
492 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
493 // Initialize monsters array |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
494 #define MAX_MONSTERS 1000 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
495 Monster live_monsters[MAX_MONSTERS]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
496 int monsterCount = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
497 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
498 // Spawn initial monsters (grayscale) |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
499 for (int i = 0; i < 30; i++) |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
500 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
501 live_monsters[monsterCount++] = (Monster){ |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
502 .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
|
503 .hue = currentMonsterHue, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
504 .saturation = currentMonsterSaturation, |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
505 .weight = MONSTER_WEIGHT, |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
506 .health = 50.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
507 .maxHealth = 50.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
508 .alive = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
509 .hasCollision = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
510 .isBoss = false |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
511 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
512 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
513 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
514 // Initialize bullets array |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
515 #define MAX_BULLETS 200 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
516 Bullet bullets[MAX_BULLETS]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
517 int bulletCount = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
518 for (int i = 0; i < MAX_BULLETS; i++) |
|
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 bullets[i].active = false; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
521 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
522 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
523 // Shooting timer |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
524 float shootTimer = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
525 float hitProbability = HIT_PROBABILITY; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
526 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
527 while (!WindowShouldClose()) |
|
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 float deltaTime = GetFrameTime(); |
|
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 if (IsKeyPressed(KEY_P)) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
532 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
533 menuOpen = !menuOpen; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
534 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
535 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
536 if (IsKeyPressed(KEY_R)) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
537 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
538 showMonsterColors = !showMonsterColors; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
539 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
540 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
541 // Handle passive tree menu interactions |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
542 if (menuOpen) |
|
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 if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
545 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
546 Vector2 mousePos = GetMousePosition(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
547 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
548 // Check if clicked on a passive node |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
549 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
|
550 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
551 float angleRad = passiveTree[i].angle * DEG2RAD; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
552 Vector2 nodePos = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
553 menuCenter.x + cosf(angleRad) * PASSIVE_TREE_RADIUS, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
554 menuCenter.y + sinf(angleRad) * PASSIVE_TREE_RADIUS |
|
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 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
557 float dx = mousePos.x - nodePos.x; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
558 float dy = mousePos.y - nodePos.y; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
559 float distance = sqrtf(dx * dx + dy * dy); |
|
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 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
|
562 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
563 // Unlock the node |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
564 passiveTree[i].unlocked = true; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
565 player.unlockedBulletTypes[player.unlockedCount++] = i; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
566 player.passivePoints--; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
567 break; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
568 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
569 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
570 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
571 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
572 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
573 // Only handle game logic when menu is closed |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
574 if (!menuOpen) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
575 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
576 // Update game time and progression |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
577 gameTime += deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
578 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
579 // Unlock color after COLOR_UNLOCK_TIME |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
580 if (!colorUnlocked && gameTime >= COLOR_UNLOCK_TIME) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
581 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
582 colorUnlocked = true; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
583 currentMonsterSaturation = 1.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
584 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
585 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
586 // Spawn boss and unlock new color |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
587 if (gameTime >= nextBossTime && monsterCount < MAX_MONSTERS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
588 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
589 // Generate new color for this boss cycle |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
590 currentMonsterHue = RandomFloat(0, 360); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
591 nextBossTime += BOSS_SPAWN_TIME; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
592 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
593 // Spawn boss monster |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
594 live_monsters[monsterCount++] = (Monster){ |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
595 .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
|
596 .hue = currentMonsterHue, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
597 .saturation = currentMonsterSaturation, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
598 .health = 50.0f * BOSS_HEALTH_MULTIPLIER, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
599 .maxHealth = 50.0f * BOSS_HEALTH_MULTIPLIER, |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
600 .weight = BOSS_MONSTER_WEIGHT, |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
601 .alive = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
602 .hasCollision = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
603 .isBoss = true |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
604 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
605 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
606 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
607 // Spawn regular monsters periodically |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
608 static float monsterSpawnTimer = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
609 monsterSpawnTimer += deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
610 if (monsterSpawnTimer >= 3.0f && monsterCount < MAX_MONSTERS) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
611 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
612 monsterSpawnTimer = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
613 live_monsters[monsterCount++] = (Monster){ |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
614 .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
|
615 .hue = currentMonsterHue, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
616 .saturation = currentMonsterSaturation, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
617 .health = 50.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
618 .maxHealth = 50.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
619 .alive = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
620 .hasCollision = true, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
621 .isBoss = false |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
622 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
623 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
624 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
625 HandlePlayerMovement(&player, &map, deltaTime); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
626 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
627 // Check player-monster collision |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
628 CheckPlayerMonsterCollision(&player, live_monsters, monsterCount, deltaTime); |
|
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 // Update shoot timer and shoot bullets |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
631 shootTimer += deltaTime; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
632 if (shootTimer >= SHOOT_INTERVAL && player.unlockedCount > 0) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
633 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
634 shootTimer = 0.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
635 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
636 // Find inactive bullet slot |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
637 for (int i = 0; i < MAX_BULLETS; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
638 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
639 if (!bullets[i].active) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
640 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
641 // Choose random bullet type from unlocked types |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
642 int randomIndex = (int)RandomFloat(0, player.unlockedCount); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
643 int nodeIndex = player.unlockedBulletTypes[randomIndex]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
644 PassiveNode* selectedNode = &passiveTree[nodeIndex]; |
|
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 // Find nearest monster to aim at |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
647 Vector2 targetPos = FindNearestMonster(live_monsters, monsterCount, player.position); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
648 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
649 // Calculate direction to target |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
650 Vector2 direction = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
651 targetPos.x - player.position.x, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
652 targetPos.y - player.position.y |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
653 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
654 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
655 // Normalize |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
656 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
|
657 if (length > 0) |
|
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 direction.x /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
660 direction.y /= length; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
661 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
662 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
663 // Calculate base angle |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
664 float baseAngle = atan2f(direction.y, direction.x); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
665 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
666 // Add random deviation based on accuracy |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
667 float maxDeviation = (1.0f - hitProbability) * PI; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
668 float deviation = RandomFloat(-maxDeviation, maxDeviation); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
669 float finalAngle = baseAngle + deviation; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
670 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
671 bullets[i] = (Bullet){ |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
672 .position = player.position, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
673 .velocity = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
674 cosf(finalAngle) * BULLET_SPEED, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
675 sinf(finalAngle) * BULLET_SPEED |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
676 }, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
677 .lifetime = BULLET_LIFETIME, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
678 .hue = selectedNode->hue, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
679 .damage = BASE_DAMAGE + selectedNode->damageBonus, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
680 .active = true |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
681 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
682 break; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
683 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
684 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
685 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
686 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
687 // Update monsters |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
688 UpdateMonsters(live_monsters, monsterCount, player.position, deltaTime); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
689 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
690 // Update bullets |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
691 UpdateBullets(bullets, MAX_BULLETS, deltaTime); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
692 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
693 // Update damage numbers |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
694 UpdateDamageNumbers(damageNumbers, MAX_DAMAGE_NUMBERS, deltaTime); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
695 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
696 // Check collisions |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
697 int bossKills = CheckCollisions(bullets, MAX_BULLETS, live_monsters, monsterCount, &player, damageNumbers); |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
698 bossesDefeated += bossKills; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
699 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
700 // Update camera to follow player |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
701 camera.target = player.position; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
702 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
703 // Clamp camera to map edges |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
704 float minX = INIT_SCREEN_WIDTH / 2.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
705 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
|
706 float minY = INIT_SCREEN_HEIGHT / 2.0f; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
707 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
|
708 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
709 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
|
710 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
|
711 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
|
712 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
|
713 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
714 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
715 // --- Drawings --- |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
716 BeginDrawing(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
717 ClearBackground(RAYWHITE); |
|
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 if (menuOpen) |
|
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 color wheel background |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
722 for (int i = 0; i < 360; 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 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
|
725 DrawCircleSector( |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
726 menuCenter, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
727 PASSIVE_TREE_RADIUS + 30.0f, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
728 (float)i, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
729 (float)(i + 1), |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
730 1, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
731 color |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
732 ); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
733 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
734 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
735 // Draw passive tree nodes |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
736 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
|
737 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
738 float angleRad = passiveTree[i].angle * DEG2RAD; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
739 Vector2 nodePos = { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
740 menuCenter.x + cosf(angleRad) * PASSIVE_TREE_RADIUS, |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
741 menuCenter.y + sinf(angleRad) * PASSIVE_TREE_RADIUS |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
742 }; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
743 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
744 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
|
745 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
746 if (passiveTree[i].unlocked) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
747 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
748 // Draw unlocked node |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
749 DrawCircleV(nodePos, PASSIVE_NODE_RADIUS, nodeColor); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
750 DrawCircleV(nodePos, PASSIVE_NODE_RADIUS - 3, WHITE); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
751 DrawCircleV(nodePos, PASSIVE_NODE_RADIUS - 6, nodeColor); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
752 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
753 else |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
754 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
755 // Draw locked node |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
756 DrawCircleV(nodePos, PASSIVE_NODE_RADIUS, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
757 DrawCircleV(nodePos, PASSIVE_NODE_RADIUS - 3, GRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
758 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
759 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
760 // Draw node info on hover |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
761 Vector2 mousePos = GetMousePosition(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
762 float dx = mousePos.x - nodePos.x; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
763 float dy = mousePos.y - nodePos.y; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
764 float distance = sqrtf(dx * dx + dy * dy); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
765 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
766 if (distance < PASSIVE_NODE_RADIUS) |
|
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(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
|
769 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
|
770 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
771 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
772 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
773 // Draw menu instructions |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
774 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
|
775 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
|
776 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
|
777 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
|
778 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
|
779 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
780 else |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
781 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
782 // Draw game world (with camera) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
783 BeginMode2D(camera); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
784 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
785 // Draw map background |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
786 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
|
787 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
788 // Draw map border |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
789 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
|
790 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
791 // Draw grid to show map scale |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
792 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
|
793 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
794 DrawLine(i, 0, i, map.height, LIGHTGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
795 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
796 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
|
797 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
798 DrawLine(0, i, map.width, i, LIGHTGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
799 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
800 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
801 // Draw monsters |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
802 for (int i = 0; i < monsterCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
803 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
804 if (live_monsters[i].alive) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
805 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
806 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
|
807 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
|
808 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
809 DrawCircleV(live_monsters[i].position, radius, monsterColor); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
810 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
811 // Draw boss crown indicator |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
812 if (live_monsters[i].isBoss) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
813 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
814 DrawCircleV(live_monsters[i].position, radius - 5, YELLOW); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
815 DrawCircleV(live_monsters[i].position, radius - 10, monsterColor); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
816 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
817 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
818 // Draw health bar |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
819 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
|
820 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
|
821 DrawRectangle(barPos.x, barPos.y, 30, 4, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
822 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
|
823 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
824 // Draw color label if toggle is on |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
825 if (showMonsterColors) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
826 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
827 char colorText[32]; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
828 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
|
829 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
|
830 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
831 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
832 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
833 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
834 // Draw bullets |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
835 for (int i = 0; i < MAX_BULLETS; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
836 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
837 if (bullets[i].active) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
838 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
839 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
|
840 DrawCircleV(bullets[i].position, BULLET_RADIUS, bulletColor); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
841 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
842 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
843 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
844 // Draw damage numbers |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
845 for (int i = 0; i < MAX_DAMAGE_NUMBERS; i++) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
846 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
847 if (damageNumbers[i].active) |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
848 { |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
849 printf("True\n"); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
850 float alpha = damageNumbers[i].lifetime / DAMAGE_NUMBER_LIFETIME; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
851 Color color = damageNumbers[i].color; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
852 color.a = (unsigned char)(255 * alpha); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
853 DrawText(TextFormat("%.0f", damageNumbers[i].damage), |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
854 damageNumbers[i].position.x - 10, |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
855 damageNumbers[i].position.y, |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
856 20, |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
857 color); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
858 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
859 } |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
860 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
861 // Draw player (flash when invulnerable) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
862 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
|
863 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
864 DrawCircleV(player.position, PLAYER_RADIUS, player.color); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
865 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
866 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
867 EndMode2D(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
868 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
869 // Draw UI (screen space) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
870 // Timer at top center |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
871 int minutes = (int)(gameTime / 60); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
872 int seconds = (int)gameTime % 60; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
873 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
|
874 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
875 // Player health bar |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
876 float healthPercent = player.health / player.maxHealth; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
877 DrawRectangle(10, 10, 200, 20, DARKGRAY); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
878 DrawRectangle(10, 10, 200 * healthPercent, 20, RED); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
879 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
|
880 |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
881 // Experience bar |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
882 float expPercent = player.experience / player.expToNextLevel; |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
883 DrawRectangle(10, 35, 200, 15, DARKGRAY); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
884 DrawRectangle(10, 35, 200 * expPercent, 15, SKYBLUE); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
885 DrawText(TextFormat("Lvl %d", player.level), 15, 36, 12, WHITE); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
886 DrawText(TextFormat("%.0f/%.0f XP", player.experience, player.expToNextLevel), 70, 36, 12, WHITE); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
887 |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
888 // Passive points |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
889 DrawText(TextFormat("Passive Points: %d", player.passivePoints), 10, 55, 18, PURPLE); |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
890 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
891 // Controls |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
892 DrawText("WASD: Move | P: Menu | R: Toggle Colors", 10, 80, 16, DARKGRAY); |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
893 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
894 // Count alive monsters and bosses |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
895 int aliveCount = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
896 int bossCount = 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
897 for (int i = 0; i < monsterCount; i++) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
898 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
899 if (live_monsters[i].alive) |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
900 { |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
901 aliveCount++; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
902 if (live_monsters[i].isBoss) bossCount++; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
903 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
904 } |
|
63
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
905 DrawText(TextFormat("Monsters: %d | Bosses: %d", aliveCount, bossCount), 10, 105, 18, DARKGRAY); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
906 DrawText(TextFormat("Unlocked bullets: %d/%d", player.unlockedCount, MAX_PASSIVE_NODES), 10, 130, 16, DARKGRAY); |
|
fff1b048dda6
[Postdog] Fixed a problem where string did not wrap.
June Park <parkjune1995@gmail.com>
parents:
61
diff
changeset
|
907 DrawText(TextFormat("Bosses defeated: %d", bossesDefeated), 10, 155, 16, DARKGRAY); |
|
59
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
908 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
909 |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
910 EndDrawing(); |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
911 } |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
912 return 0; |
|
e06bc03d9618
[Color Game] Making game with a friend.
June Park <parkjune1995@gmail.com>
parents:
diff
changeset
|
913 } |