80 lines
1.7 KiB
C++
80 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include "entity.h"
|
|
#include "cs_proto.pb.h"
|
|
|
|
namespace MetaData
|
|
{
|
|
struct Player;
|
|
struct Equip;
|
|
}
|
|
|
|
struct HumanFrameData
|
|
{
|
|
};
|
|
|
|
class CircleCollider;
|
|
class Obstacle;
|
|
class Human : public Entity
|
|
{
|
|
public:
|
|
int team_id = 0;
|
|
std::string team_uniid;
|
|
MetaData::Player* meta = nullptr;
|
|
MetaData::Equip* helmet_meta = nullptr;
|
|
MetaData::Equip* chest_meta = nullptr;
|
|
MetaData::Equip* weapon_meta = nullptr;
|
|
|
|
Vector2D move_dir;
|
|
Vector2D attack_dir;
|
|
|
|
std::string name;
|
|
float health = 0.0;
|
|
bool dead = false;
|
|
bool downed = false;
|
|
bool disconnected = false;
|
|
int anim_type = 0;
|
|
int anim_seq = 0;
|
|
int action_type = 0;
|
|
int skin = 0;
|
|
int helmet = 0;
|
|
int chest = 0;
|
|
int weapon = 0;
|
|
int energy_shield = 0;
|
|
int vip = 0;
|
|
int sdmg = 0;
|
|
bool poisoning = false;
|
|
long long poisoning_time = 0;
|
|
long long dead_frameno = 0;
|
|
bool game_over = false;
|
|
|
|
Weapon default_weapon;
|
|
std::vector<Weapon> weapons;
|
|
Weapon* curr_weapon = nullptr;
|
|
|
|
HumanFrameData frame_data;
|
|
|
|
std::set<Human*> my_seen_players;
|
|
std::set<Human*> seen_me_players;
|
|
std::set<Entity*> new_objects;
|
|
std::set<Entity*> part_objects;
|
|
|
|
Human();
|
|
virtual ~Human() override;
|
|
virtual void Initialize() override;
|
|
virtual float GetSpeed() override;
|
|
virtual void FillMFObjectPart(cs::MFObjectPart* part_data) override;
|
|
virtual void FillMFObjectFull(cs::MFObjectFull* full_data) override;
|
|
void Shot(Vector2D& target_dir);
|
|
void RecalcSelfCollider();
|
|
bool IsCollision();
|
|
ColliderComponent* GetFirstCollision();
|
|
void FindPath();
|
|
float GetRadius();
|
|
void UpdatePoisoning();
|
|
|
|
private:
|
|
CircleCollider* self_collider_ = nullptr;
|
|
|
|
};
|