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

+ 2
- 1
src/game.h View File

35
 #define POWER_INC 2
35
 #define POWER_INC 2
36
 #define POWER_DEC 4
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
 #define SHOT_SPEED 23
41
 #define SHOT_SPEED 23
41
 
42
 

+ 7
- 5
src/obj.c View File

56
 
56
 
57
 #define MAX_TRAVEL 32
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
 struct obj {
64
 struct obj {
60
     uint8_t active;
65
     uint8_t active;
61
     enum SPRITES sprite;
66
     enum SPRITES sprite;
117
     return OBJ_ADDED;
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
 uint8_t obj_act(int16_t *spd_off_x, int16_t *spd_off_y) {
125
 uint8_t obj_act(int16_t *spd_off_x, int16_t *spd_off_y) {
124
     uint8_t damage = 0;
126
     uint8_t damage = 0;
125
 
127
 
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
             } break;
151
             } break;
150
 
152
 

Loading…
Cancel
Save