Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed MotionSensor
Diff: Entity/Player/Player.cpp
- Revision:
- 23:5a8f75e93508
- Parent:
- 22:7abf4581bc9b
- Child:
- 26:abbc19edc5c1
diff -r 7abf4581bc9b -r 5a8f75e93508 Entity/Player/Player.cpp
--- a/Entity/Player/Player.cpp Thu Apr 25 05:53:30 2019 +0000
+++ b/Entity/Player/Player.cpp Thu Apr 25 23:15:44 2019 +0000
@@ -7,6 +7,7 @@
moving = false;
face = 0;
hp = 3;
+ attack = 1;
hitbox.width = 6;
hitbox.height = 5;
position.x = pos_x;
@@ -22,23 +23,32 @@
valid_bullets[i] = false;
}
fire_rate_counter = 0;
+ invulnerability_counter = invulnerability_period;
// Upgradable status
- fire_rate_delay = 3;
- velocity = 1.4;
- _bullet_speed = 2;
+ fire_rate_delay = 30;
+ velocity = 0.7;
+ _bullet_speed = 1;
+
}
// Accessors
-int Player::get_attack()
-{
- return 1;
-};
-
int Player::get_bullet_speed()
{
return _bullet_speed;
};
+int Player::get_hearts_width()
+{
+ return hearts.width;
+}
+int Player::get_hearts_height()
+{
+ return hearts.height;
+}
+int * Player::get_hearts_sprite()
+{
+ return hearts.sprite;
+}
// Functions
void Player::move(float mapped_x, float mapped_y)
@@ -61,7 +71,6 @@
} else if (mapped_x < 0 && abs(mapped_x) > abs(mapped_y)) {
face = 3;
}
-
if (frame.number < frame.max) {
frame.count++;
} else {
@@ -70,11 +79,23 @@
} else {
frame.count = 0;
}
- frame.number = (frame.count/4) % frame.max;
+ frame.number = (frame.count/8) % frame.max;
+ invulnerability_counter++;
+}
+
+void Player::take_damage(int damage)
+{
+ if (invulnerability_counter >= invulnerability_period) {
+ hp -= damage;
+ invulnerability_counter = 0;
+ }
}
int * Player::get_frame()
{
+ if ((invulnerability_counter < invulnerability_period) && (invulnerability_counter % 10 <= 4)) {
+ return (int*) sprite_transparent_player;
+ }
return (int *) sprite_player[face][frame.number];
}
@@ -101,3 +122,23 @@
}
}
}
+
+void Player::update_hearts()
+{
+ hearts.width = (hp * 10) - 1;
+ hearts.height = 9;
+ int hearts_sprite[hearts.height][hearts.width];
+ for (int j = 0; j < 9; j++) {
+ for (int n = 0; n < hp; n++) {
+ for (int i = 0; i < 9; i++){
+ hearts_sprite[j][i + (n * 10)] = sprite_heart[j][i];
+ }
+ if (n != hp) {
+ hearts_sprite[j][9 + (n * 10)] = 2;
+ }
+ }
+ }
+ hearts.sprite = * hearts_sprite;
+}
+
+