// // 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