Mercurial
annotate color_game/main.c @ 70:4bc56e88e1f3
Remove unnecessary files.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Thu, 25 Dec 2025 20:10:46 -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 } |