game2005/server/gameserver/mapblock.cc
aozhiwei cdbfd129da 1
2021-07-22 16:26:49 +08:00

128 lines
2.5 KiB
C++

#include "precompile.h"
#include "mapblock.h"
#include "collider.h"
#include "cs_proto.pb.h"
#include "typeconvert.h"
#include "metamgr.h"
MapBlock::MapBlock()
{
}
MapBlock::~MapBlock()
{
}
void MapBlock::Initialize()
{
}
void MapBlock::RecalcSelfCollider()
{
}
void MapBlock::FillMFObjectPart(Room* room, Human* hum, cs::MFObjectPart* part_data)
{
part_data->set_object_type(ET_Obstacle);
cs::MFObstaclePart* p = part_data->mutable_union_obj_2();
p->set_obj_uniid(GetUniId());
TypeConvert::ToPb(GetPos(), p->mutable_pos());
p->set_scale(1.0f);
}
void MapBlock::FillMFObjectFull(Room* room, Human* hum, cs::MFObjectFull* full_data)
{
full_data->set_object_type(ET_Obstacle);
if (IsClientCached(hum)) {
int object_flags = 0;
a8::SetBitFlag(object_flags, kOfReadCache);
full_data->set_obj_uniid(GetUniId());
full_data->set_object_flags(object_flags);
return;
}
cs::MFObstacleFull* p = full_data->mutable_union_obj_2();
if (CanClientCache(hum)) {
int object_flags = 0;
a8::SetBitFlag(object_flags, kOfWriteCache);
#if 0
full_data->set_obj_uniid(GetUniId());
#endif
full_data->set_object_flags(object_flags);
AddClientCache(hum);
}
p->set_obj_uniid(GetUniId());
TypeConvert::ToPb(GetPos(), p->mutable_pos());
p->set_scale(1.0f);
p->set_obstacle_id(meta->i->thing_id());
p->set_health(0);
p->set_dead(false);
p->set_dead_at_thisframe(false);
p->set_is_door(false);
{
cs::MFCollider* collider = full_data->mutable_union_obj_2()->mutable_collider();
collider->set_shape(shape);
if (shape == 1) {
collider->set_width(rad);
collider->set_height(rad);
} else {
collider->set_width(width);
collider->set_height(height);
}
}
}
void MapBlock::GetAabbBox(AabbCollider& aabb_box)
{
aabb_box.active = false;
aabb_box.owner = this;
}
void MapBlock::GetCircleBox(CircleCollider& circle_box)
{
circle_box.active = false;
circle_box.owner = this;
}
bool MapBlock::IsDead(Room* room)
{
return false;
}
long long MapBlock::GetDeadFrameNo(Room* room)
{
return 0;
}
void MapBlock::OnPreCollision(Room* room)
{
}
void MapBlock::OnBulletHit(Bullet* bullet)
{
}
void MapBlock::OnExplosionHit(Explosion* explosion)
{
}
bool MapBlock::Attackable(Room* room)
{
return false;
}
bool MapBlock::ReceiveExplosionDmg(Explosion* explosion)
{
return false;
}