aozhiwei 114a325b5f 1
2019-04-28 17:21:18 +08:00

67 lines
1.4 KiB
C++

#include "precompile.h"
#include "hero.h"
#include "collider.h"
#include "human.h"
Hero::Hero(): Entity()
{
entity_type = ET_Hero;
}
Hero::~Hero()
{
}
void Hero::Initialize()
{
Entity::Initialize();
RecalcSelfCollider();
}
void Hero::RecalcSelfCollider()
{
if (!self_collider_) {
self_collider_ = new CircleCollider();
self_collider_->owner = this;
colliders.push_back(self_collider_);
}
self_collider_->pos = Vector2D();
self_collider_->rad = master->GetRadius();
}
void Hero::FillMFObjectPart(cs::MFObjectPart* part_data)
{
part_data->set_object_type(entity_type);
cs::MFHeroPart* p = part_data->mutable_union_obj_10();
p->set_obj_uniid(entity_uniid);
pos.ToPB(p->mutable_pos());
attack_dir.ToPB(p->mutable_dir());
}
void Hero::FillMFObjectFull(cs::MFObjectFull* full_data)
{
full_data->set_object_type(entity_type);
cs::MFHeroFull* p = full_data->mutable_union_obj_10();
p->set_obj_uniid(entity_uniid);
pos.ToPB(p->mutable_pos());
attack_dir.ToPB(p->mutable_dir());
p->set_skin(skin);
p->set_backpack(backpack);
p->set_helmet(helmet);
p->set_chest(chest);
weapon.ToPB(p->mutable_weapon());
p->set_energy_shield(energy_shield);
}
ColliderComponent* Hero::GetBoxBound()
{
CircleCollider* collider = new CircleCollider();
collider->owner = this;
collider->pos = Vector2D();
collider->rad = master->GetRadius();
return collider;
}