Player.hpp 2.42 KiB
//
// Created by hoelshare on 21.05.17.
//
#ifndef GPN_LASERTAG_PLAYER_HPP
#define GPN_LASERTAG_PLAYER_HPP
#include "LaserMenuItem.hpp"
class Player {
public:
void setNickname(char *nickname) { this->nickname = nickname; }
const char *getNickname() { return this->nickname; }
Player(Badge *badge, char *nickname = "otter") : badge(badge), nickname(nickname) {
rebirth();
};
void setMaxHealthPoints(unsigned short maxHP) { this->maxHP = maxHP; }
void setMaxArmor(unsigned short maxArmor) { this->maxArmor = maxArmor; }
void heal(unsigned short healthPoints);
void hit(unsigned short hitPoints);
void nextWeapon() { weaponIndex = (weaponIndex + 1) % 3; }
void prevWeapon() {
nextWeapon();
nextWeapon();
}
void setPlayerID(unsigned short pID) { this->pID = pID; }
void setTeamID(unsigned short tID) { this->tID = tID; }
void setHealthMenuItem(LaserMenuItem *healthMenuItem) {
if (healthMenuItem) { delete healthMenuItem; }
this->healthMenuItem = healthMenuItem;
}
void setArmorMenuItem(LaserMenuItem *armorMenuItem) {
if (armorMenuItem) { delete armorMenuItem; }
this->armorMenuItem = armorMenuItem;
}
void setAmmoMenuItem(LaserMenuItem *ammoMenuItem) {
if (ammoMenuItem) { delete ammoMenuItem; }
this->ammoMenuItem = ammoMenuItem;
}
void reload();
void shot();
void rebirth();
~Player() {
delete[] teamColor, shotMagazine, currentShot, nickname;
delete healthMenuItem, armorMenuItem, ammoMenuItem;
}
static const int magazineSize[3];
static const int shotTime[3];
static const int magazineReloadTime[3];
static const int damage[3];
private:
unsigned int pID;
unsigned int tID;
unsigned char teamColor[3]; // 3 Colors RGB
char *nickname;
unsigned int maxHP;
unsigned int currentHP;
unsigned int shotMagazine[3]; // 3 Weapon categories [pistol, machine gun, explosive]
unsigned int currentShot[3];
unsigned int weaponIndex;
unsigned int currentArmor;
unsigned int maxArmor;
float maxArmorPercent; // max protection between 0 and 1
void die();
Badge *badge;
protected:
void updateHealthMenuItem();
void updateArmorMenuItem();
void updateAmmoMenuItem();
LaserMenuItem *healthMenuItem;
LaserMenuItem *armorMenuItem;
LaserMenuItem *ammoMenuItem;
};
#endif //GPN_LASERTAG_PLAYER_HPP