Files
twang-mp/TWANG32/Player.h

90 lines
1.8 KiB
C
Raw Normal View History

2026-01-06 23:04:15 +01:00
#include "Arduino.h"
class Player
{
public:
Player(int[3], int, int);
void Lives(int);
int Lives();
void Kill();
bool Alive();
void moveto(int);
void moveby(int);
int color[3];
int position;
bool attacking;
int last_attack;
void updateState(bool tilted, bool wobbled, int time);
void startAttack(int time);
int _lastState; // 0-> idle; 1-> move; 2 -> attack
private:
int _lives;
int _state;
int _attackDuration;
};
Player::Player(int player_color[3], int lives, int attackDuration){
_lives = lives;
attacking = false;
color[0] = player_color[0];
color[1] = player_color[1];
color[2] = player_color[2];
_attackDuration = attackDuration;
_lastState = 0; // start as idle;
}
void Player::updateState(bool tilted, bool wobbled, int time) {
// attack timed out
if(attacking && last_attack+_attackDuration < time) attacking = false;
// no longer attacking
if (!wobbled) attacking = false;
_lastState = 0;
if (tilted) _lastState = 1; // moving
if (wobbled) _lastState = 2; // attacking
}
void Player::startAttack(int time){
// if already attacking just return
if (attacking) return;
// I got tired of attacking, I should be idle or moving for a little before attacking again.
if (_lastState == 2) return;
last_attack = time;
attacking = true;
}
void Player::Lives(int n){
_lives = n;
}
bool Player::Alive(){
return _lives > 0;
}
void Player::Kill(){
_lives--;
if (_lives < 0) _lives = 0;
}
int Player::Lives(){
return _lives;
}
void Player::moveby(int amount){
position += amount;
if (position<0) position=0;
}
void Player::moveto(int amount){
position = amount;
if (position<0) position=0;
}