Browse Source

missing shift for distance check

Thomas B 2 months ago
parent
commit
cefbdffe81
3 changed files with 11 additions and 9 deletions
  1. 2
    3
      src/game.c
  2. 2
    1
      src/game.h
  3. 7
    5
      src/obj.c

+ 2
- 3
src/game.c View File

@@ -84,7 +84,7 @@ void game(void) {
84 84
     enum SPRITE_ROT rot = 0;
85 85
     enum ACCELERATION prev_acc = 0xFF; // so we draw the ship on the first frame
86 86
     uint8_t ship_hiwater = 0;
87
-    uint8_t health = HEALTH_MAX;
87
+    uint16_t health = HEALTH_MAX;
88 88
     uint16_t power = POWER_MAX;
89 89
 
90 90
     obj_init();
@@ -152,7 +152,6 @@ void game(void) {
152 152
             }
153 153
         }
154 154
 
155
-        // TODO
156 155
         uint8_t damage = obj_act(&spd_x, &spd_y);
157 156
         if (health > damage) {
158 157
             health -= damage;
@@ -219,7 +218,7 @@ void game(void) {
219 218
         }
220 219
 
221 220
         obj_draw(spd_x, spd_y, &hiwater);
222
-        status(health, power >> POWER_SHIFT, &hiwater);
221
+        status(health >> HEALTH_SHIFT, power >> POWER_SHIFT, &hiwater);
223 222
 
224 223
         hide_sprites_range(hiwater, MAX_HARDWARE_SPRITES);
225 224
 

+ 2
- 1
src/game.h View File

@@ -35,7 +35,8 @@
35 35
 #define POWER_INC 2
36 36
 #define POWER_DEC 4
37 37
 
38
-#define HEALTH_MAX 0xFF
38
+#define HEALTH_MAX 0x1FF
39
+#define HEALTH_SHIFT 1
39 40
 
40 41
 #define SHOT_SPEED 23
41 42
 

+ 7
- 5
src/obj.c View File

@@ -56,6 +56,11 @@
56 56
 
57 57
 #define MAX_TRAVEL 32
58 58
 
59
+#define GRAVITY_RANGE (32 << POS_SCALE_OBJS)
60
+#define GRAVITY_SHIFT (POS_SCALE_OBJS + 4)
61
+#define DAMAGE_RANGE (16 << POS_SCALE_OBJS)
62
+#define DAMAGE_INC 3
63
+
59 64
 struct obj {
60 65
     uint8_t active;
61 66
     enum SPRITES sprite;
@@ -117,9 +122,6 @@ enum OBJ_STATE obj_add(enum SPRITES sprite, int16_t off_x, int16_t off_y, int16_
117 122
     return OBJ_ADDED;
118 123
 }
119 124
 
120
-#define GRAVITY_RANGE (32 << POS_SCALE_OBJS)
121
-#define GRAVITY_SHIFT (POS_SCALE_OBJS + 4)
122
-
123 125
 uint8_t obj_act(int16_t *spd_off_x, int16_t *spd_off_y) {
124 126
     uint8_t damage = 0;
125 127
 
@@ -143,8 +145,8 @@ uint8_t obj_act(int16_t *spd_off_x, int16_t *spd_off_y) {
143 145
                     }
144 146
                 }
145 147
 
146
-                if ((abs(objs[i].off_x) <= 32) && (abs(objs[i].off_y) <= 32)) {
147
-                    damage += 64;
148
+                if ((abs(objs[i].off_x) <= DAMAGE_RANGE) && (abs(objs[i].off_y) <= DAMAGE_RANGE)) {
149
+                    damage += DAMAGE_INC;
148 150
                 }
149 151
             } break;
150 152
 

Loading…
Cancel
Save