修复同步bug
This commit is contained in:
parent
69a655901d
commit
926afc2733
@ -27,7 +27,13 @@ void Bullet::Initialize()
|
|||||||
|
|
||||||
void Bullet::Update(int delta_time)
|
void Bullet::Update(int delta_time)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
player->room->CheckPartObjects();
|
||||||
|
#endif
|
||||||
MapServiceUpdate();
|
MapServiceUpdate();
|
||||||
|
#ifdef DEBUG
|
||||||
|
player->room->CheckPartObjects();
|
||||||
|
#endif
|
||||||
++updated_times_;
|
++updated_times_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -280,8 +280,20 @@ bool GridService::InView(int a_grid, int b_grid)
|
|||||||
|
|
||||||
bool GridService::InView(int grid_id, float x, float y)
|
bool GridService::InView(int grid_id, float x, float y)
|
||||||
{
|
{
|
||||||
int b_grid_id = grid_id = x/cell_width_ + (y/cell_width_) * cell_count_per_row_;
|
int b_grid_id = x/cell_width_ + (y/cell_width_) * cell_count_per_row_;
|
||||||
return InView(grid_id, b_grid_id);
|
bool in_view = InView(grid_id, b_grid_id);
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (in_view) {
|
||||||
|
a8::UdpLog::Instance()->Debug("InView %d %d %f %f",
|
||||||
|
{
|
||||||
|
grid_id,
|
||||||
|
b_grid_id,
|
||||||
|
x,
|
||||||
|
y
|
||||||
|
});
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return in_view;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GridService::GetGridList(int grid_id, int offset,
|
void GridService::GetGridList(int grid_id, int offset,
|
||||||
|
@ -665,9 +665,36 @@ void Human::SyncAroundPlayers(const char* file, int line, const char* func)
|
|||||||
if (a8::HasBitFlag(status, HS_Disable)) {
|
if (a8::HasBitFlag(status, HS_Disable)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
room->CheckPartObjects();
|
||||||
|
a8::UdpLog::Instance()->Debug("syncaround begin %s %d %s",
|
||||||
|
{
|
||||||
|
file,
|
||||||
|
line,
|
||||||
|
func
|
||||||
|
});
|
||||||
|
#endif
|
||||||
for (auto& cell : grid_list) {
|
for (auto& cell : grid_list) {
|
||||||
for (Human* hum : cell->human_list[room->room_idx]) {
|
for (Human* hum : cell->human_list[room->room_idx]) {
|
||||||
hum->AddToNewObjects(this);
|
hum->AddToNewObjects(this);
|
||||||
|
#ifdef DEBUG
|
||||||
|
{
|
||||||
|
std::string objs_str;
|
||||||
|
for (auto& obj : hum->part_objects) {
|
||||||
|
objs_str += a8::Format("%d ", {(long long)obj});
|
||||||
|
}
|
||||||
|
a8::UdpLog::Instance()->Debug("hum1 %d %s", {(long long)hum, objs_str});
|
||||||
|
}
|
||||||
|
{
|
||||||
|
std::string objs_str;
|
||||||
|
for (auto& obj : part_objects) {
|
||||||
|
objs_str += a8::Format("%d ", {(long long)obj});
|
||||||
|
}
|
||||||
|
a8::UdpLog::Instance()->Debug("hum2 %d %s", {(long long)this, objs_str});
|
||||||
|
}
|
||||||
|
room->CheckPartObjects(hum, this);
|
||||||
|
bool ok = hum->InPartObjects(this);
|
||||||
|
#endif
|
||||||
assert(hum->part_objects.find(this) != hum->part_objects.end());
|
assert(hum->part_objects.find(this) != hum->part_objects.end());
|
||||||
if (hum->part_objects.find(this) == hum->part_objects.end()) {
|
if (hum->part_objects.find(this) == hum->part_objects.end()) {
|
||||||
if (a8::XGetTickCount() - room->last_debugout_tick > 1000 * 10) {
|
if (a8::XGetTickCount() - room->last_debugout_tick > 1000 * 10) {
|
||||||
@ -682,6 +709,15 @@ void Human::SyncAroundPlayers(const char* file, int line, const char* func)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
room->CheckPartObjects();
|
||||||
|
a8::UdpLog::Instance()->Debug("syncaround end %s %d %s",
|
||||||
|
{
|
||||||
|
file,
|
||||||
|
line,
|
||||||
|
func
|
||||||
|
});
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::AutoLoadingBullet(bool manual)
|
void Human::AutoLoadingBullet(bool manual)
|
||||||
@ -813,6 +849,9 @@ void Human::FillSMGameOver(cs::SMGameOver& msg)
|
|||||||
|
|
||||||
void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
room->CheckPartObjects();
|
||||||
|
#endif
|
||||||
if (!dead && !room->game_over && !real_dead) {
|
if (!dead && !room->game_over && !real_dead) {
|
||||||
lethal_weapon = weapon_id;
|
lethal_weapon = weapon_id;
|
||||||
Entity* hum = room->GetEntityByUniId(killer_id);
|
Entity* hum = room->GetEntityByUniId(killer_id);
|
||||||
@ -900,6 +939,9 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
|||||||
RemoveBuffByEffectId(kBET_Camouflage);
|
RemoveBuffByEffectId(kBET_Camouflage);
|
||||||
}
|
}
|
||||||
ClearLordMode();
|
ClearLordMode();
|
||||||
|
#ifdef DEBUG
|
||||||
|
room->CheckPartObjects();
|
||||||
|
#endif
|
||||||
int max_revive_times = MetaMgr::Instance()->GetSysParamAsInt("max_revive_times", 1);
|
int max_revive_times = MetaMgr::Instance()->GetSysParamAsInt("max_revive_times", 1);
|
||||||
if (weapon_id != VW_Spectate &&
|
if (weapon_id != VW_Spectate &&
|
||||||
dead_times <= max_revive_times &&
|
dead_times <= max_revive_times &&
|
||||||
@ -1004,6 +1046,16 @@ void Human::ClearPartObjects()
|
|||||||
part_objects.clear();
|
part_objects.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Human::GetPartObjectsCount()
|
||||||
|
{
|
||||||
|
return part_objects.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Human::InPartObjects(Human* target)
|
||||||
|
{
|
||||||
|
return part_objects.find(target) != part_objects.end();
|
||||||
|
}
|
||||||
|
|
||||||
void Human::RemoveObjects(Entity* entity)
|
void Human::RemoveObjects(Entity* entity)
|
||||||
{
|
{
|
||||||
del_objects.insert(entity->entity_uniid);
|
del_objects.insert(entity->entity_uniid);
|
||||||
@ -1286,6 +1338,13 @@ void Human::OnGridListChange(std::set<GridCell*>& old_grid_list,
|
|||||||
if (!room->grid_service->HumanInGridList(hum, grid_list)) {
|
if (!room->grid_service->HumanInGridList(hum, grid_list)) {
|
||||||
AddOutObjects(hum);
|
AddOutObjects(hum);
|
||||||
hum->AddOutObjects(this);
|
hum->AddOutObjects(this);
|
||||||
|
#ifdef DEBUG
|
||||||
|
a8::UdpLog::Instance()->Debug("addoutobjects %d %d",
|
||||||
|
{
|
||||||
|
(long long)hum,
|
||||||
|
hum->entity_uniid
|
||||||
|
});
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (Entity* entity : cell->entity_list[0]) {
|
for (Entity* entity : cell->entity_list[0]) {
|
||||||
@ -2014,19 +2073,35 @@ void Human::ClearFrameData()
|
|||||||
new_objects.clear();
|
new_objects.clear();
|
||||||
}
|
}
|
||||||
if (!del_objects.empty()) {
|
if (!del_objects.empty()) {
|
||||||
for (auto& itr : del_objects) {
|
if (!a8::HasBitFlag(status, HS_Disable)) {
|
||||||
Entity* entity = room->GetEntityByUniId(itr);
|
for (auto& itr : del_objects) {
|
||||||
if (entity) {
|
Entity* entity = room->GetEntityByUniId(itr);
|
||||||
RemovePartObjects(entity);
|
if (entity) {
|
||||||
|
RemovePartObjects(entity);
|
||||||
|
if (entity->entity_type == ET_Player) {
|
||||||
|
((Human*)entity)->RemovePartObjects(this);
|
||||||
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
room->CheckPartObjects();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
del_objects.clear();
|
del_objects.clear();
|
||||||
}
|
}
|
||||||
if (!out_objects.empty()) {
|
if (!out_objects.empty()) {
|
||||||
for (auto& itr : out_objects) {
|
if (!a8::HasBitFlag(status, HS_Disable)) {
|
||||||
Entity* entity = room->GetEntityByUniId(itr);
|
for (auto& itr : out_objects) {
|
||||||
if (entity) {
|
Entity* entity = room->GetEntityByUniId(itr);
|
||||||
RemovePartObjects(entity);
|
if (entity) {
|
||||||
|
RemovePartObjects(entity);
|
||||||
|
if (entity->entity_type == ET_Player) {
|
||||||
|
((Human*)entity)->RemovePartObjects(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
room->CheckPartObjects();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
out_objects.clear();
|
out_objects.clear();
|
||||||
@ -3287,3 +3362,13 @@ void Human::AdjustDecHp(float old_health, float& new_health)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Human::OnEnable()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Human::OnDisable()
|
||||||
|
{
|
||||||
|
ClearFrameData();
|
||||||
|
ClearPartObjects();
|
||||||
|
}
|
||||||
|
@ -178,7 +178,8 @@ class Human : public MoveableEntity
|
|||||||
void AddToNewObjects(Entity* entity);
|
void AddToNewObjects(Entity* entity);
|
||||||
void AddToPartObjects(Entity* entity);
|
void AddToPartObjects(Entity* entity);
|
||||||
void RemovePartObjects(Entity* entity);
|
void RemovePartObjects(Entity* entity);
|
||||||
void ClearPartObjects();
|
bool InPartObjects(Human* target);
|
||||||
|
int GetPartObjectsCount();
|
||||||
void RemoveObjects(Entity* entity);
|
void RemoveObjects(Entity* entity);
|
||||||
void AddOutObjects(Entity* entity);
|
void AddOutObjects(Entity* entity);
|
||||||
void RemoveOutObjects(Entity* entity);
|
void RemoveOutObjects(Entity* entity);
|
||||||
@ -258,6 +259,8 @@ class Human : public MoveableEntity
|
|||||||
bool IsAndroid();
|
bool IsAndroid();
|
||||||
void DropItems(Obstacle* obstacle);
|
void DropItems(Obstacle* obstacle);
|
||||||
void ProcNewBieLogic();
|
void ProcNewBieLogic();
|
||||||
|
void OnEnable();
|
||||||
|
void OnDisable();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void _UpdateMove(int speed);
|
void _UpdateMove(int speed);
|
||||||
@ -283,6 +286,7 @@ private:
|
|||||||
void Revive();
|
void Revive();
|
||||||
void ClearLordMode();
|
void ClearLordMode();
|
||||||
void AdjustDecHp(float old_health, float& new_health);
|
void AdjustDecHp(float old_health, float& new_health);
|
||||||
|
void ClearPartObjects();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
long long last_shot_frameno_ = 0;
|
long long last_shot_frameno_ = 0;
|
||||||
|
@ -147,6 +147,9 @@ void Player::UpdateMove()
|
|||||||
tank_oil_value -= old_pos.Distance(GetPos()) * (MetaMgr::Instance()->average_oil / 100.0f);
|
tank_oil_value -= old_pos.Distance(GetPos()) * (MetaMgr::Instance()->average_oil / 100.0f);
|
||||||
tank_oil_value = std::max(0.0f, tank_oil_value);
|
tank_oil_value = std::max(0.0f, tank_oil_value);
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
room->CheckPartObjects();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::UpdateShot()
|
void Player::UpdateShot()
|
||||||
|
@ -90,11 +90,17 @@ void Room::UnInit()
|
|||||||
|
|
||||||
void Room::Update(int delta_time)
|
void Room::Update(int delta_time)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
run_in_timer_ = true;
|
||||||
|
#endif
|
||||||
xtimer.Update();
|
xtimer.Update();
|
||||||
if (game_over && frame_no - game_over_frameno > SERVER_FRAME_RATE * 20) {
|
if (game_over && frame_no - game_over_frameno > SERVER_FRAME_RATE * 20) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
run_in_timer_ = false;
|
||||||
|
#endif
|
||||||
elapsed_time_ += delta_time;
|
elapsed_time_ += delta_time;
|
||||||
while (elapsed_time_ >= 50) {
|
while (elapsed_time_ >= 50) {
|
||||||
if (frame_no % 2 == 0) {
|
if (frame_no % 2 == 0) {
|
||||||
@ -1700,17 +1706,21 @@ void Room::SecondRandPoint()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
CheckPartObjects();
|
||||||
|
#endif
|
||||||
for (auto& pair : accountid_hash_) {
|
for (auto& pair : accountid_hash_) {
|
||||||
if (room_type == RT_MidBrid) {
|
if (room_type == RT_MidBrid) {
|
||||||
pair.second->on_grid_chg = std::bind(&Room::OnHumanGridChg, this, std::placeholders::_1);
|
pair.second->on_grid_chg = std::bind(&Room::OnHumanGridChg, this, std::placeholders::_1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
CheckPartObjects();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Room::NotifyGameStart()
|
void Room::NotifyGameStart()
|
||||||
{
|
{
|
||||||
ProcDisableHuman();
|
|
||||||
|
|
||||||
cs::SMGameStart msg;
|
cs::SMGameStart msg;
|
||||||
for (auto& pair : accountid_hash_) {
|
for (auto& pair : accountid_hash_) {
|
||||||
pair.second->SendNotifyMsg(msg);
|
pair.second->SendNotifyMsg(msg);
|
||||||
@ -1724,6 +1734,7 @@ void Room::NotifyGameStart()
|
|||||||
[] (const a8::XParams& param)
|
[] (const a8::XParams& param)
|
||||||
{
|
{
|
||||||
Room* room = (Room*)param.sender.GetUserData();
|
Room* room = (Room*)param.sender.GetUserData();
|
||||||
|
room->ProcDisableHuman();
|
||||||
room->SecondRandPoint();
|
room->SecondRandPoint();
|
||||||
},
|
},
|
||||||
&xtimer_attacher_.timer_list_);
|
&xtimer_attacher_.timer_list_);
|
||||||
@ -1794,8 +1805,22 @@ long long Room::GetGasInactiveTime()
|
|||||||
|
|
||||||
void Room::EnableHuman(Human* target)
|
void Room::EnableHuman(Human* target)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (!run_in_timer_) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef DEBUG
|
||||||
|
CheckPartObjects();
|
||||||
|
a8::UdpLog::Instance()->Debug("enablehuman %d %d",
|
||||||
|
{
|
||||||
|
(long long)target,
|
||||||
|
target->entity_uniid
|
||||||
|
});
|
||||||
|
#endif
|
||||||
if (a8::HasBitFlag(target->status, HS_Disable)) {
|
if (a8::HasBitFlag(target->status, HS_Disable)) {
|
||||||
a8::UnSetBitFlag(target->status, HS_Disable);
|
a8::UnSetBitFlag(target->status, HS_Disable);
|
||||||
|
target->OnEnable();
|
||||||
target->enable_frameno = frame_no;
|
target->enable_frameno = frame_no;
|
||||||
moveable_hash_[target->entity_uniid] = target;
|
moveable_hash_[target->entity_uniid] = target;
|
||||||
grid_service->AddHuman(target);
|
grid_service->AddHuman(target);
|
||||||
@ -1805,10 +1830,26 @@ void Room::EnableHuman(Human* target)
|
|||||||
alive_human_hash_[target->entity_uniid] = target;
|
alive_human_hash_[target->entity_uniid] = target;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
CheckPartObjects();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Room::DisableHuman(Human* target)
|
void Room::DisableHuman(Human* target)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (!run_in_timer_) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef DEBUG
|
||||||
|
CheckPartObjects();
|
||||||
|
a8::UdpLog::Instance()->Debug("disablehuman %d %d",
|
||||||
|
{
|
||||||
|
(long long)target,
|
||||||
|
target->entity_uniid
|
||||||
|
});
|
||||||
|
#endif
|
||||||
if (!a8::HasBitFlag(target->status, HS_Disable)) {
|
if (!a8::HasBitFlag(target->status, HS_Disable)) {
|
||||||
a8::SetBitFlag(target->status, HS_Disable);
|
a8::SetBitFlag(target->status, HS_Disable);
|
||||||
moveable_hash_.erase(target->entity_uniid);
|
moveable_hash_.erase(target->entity_uniid);
|
||||||
@ -1829,8 +1870,11 @@ void Room::DisableHuman(Human* target)
|
|||||||
for (auto& pair : human_hash_) {
|
for (auto& pair : human_hash_) {
|
||||||
pair.second->RemovePartObjects(target);
|
pair.second->RemovePartObjects(target);
|
||||||
}
|
}
|
||||||
target->ClearPartObjects();
|
target->OnDisable();
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
CheckPartObjects();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Room::ShuaNewBieAndroid(Human* target)
|
void Room::ShuaNewBieAndroid(Human* target)
|
||||||
@ -2242,6 +2286,26 @@ void Room::ProcDisableHuman()
|
|||||||
|
|
||||||
void Room::OnHumanGridChg(Human* target)
|
void Room::OnHumanGridChg(Human* target)
|
||||||
{
|
{
|
||||||
|
xtimer.AddDeadLineTimerAndAttach(2,
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(target),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
hum->room->ShuaGridRound(hum);
|
||||||
|
},
|
||||||
|
&target->xtimer_attacher.timer_list_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Room::ShuaGridRound(Human* target)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
static bool shua_ed = false;
|
||||||
|
if (shua_ed) {
|
||||||
|
//return;
|
||||||
|
}
|
||||||
|
shua_ed = true;
|
||||||
|
#endif
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (auto& pair : human_hash_) {
|
for (auto& pair : human_hash_) {
|
||||||
Human* hum = pair.second;
|
Human* hum = pair.second;
|
||||||
@ -2258,4 +2322,51 @@ void Room::OnHumanGridChg(Human* target)
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
a8::UdpLog::Instance()->Debug("OnHumanGrid %d %d", {target->grid_id, count});
|
a8::UdpLog::Instance()->Debug("OnHumanGrid %d %d", {target->grid_id, count});
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef DEBUG
|
||||||
|
CheckPartObjects();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void Room::CheckPartObjects(Human* testa, Human* testb)
|
||||||
|
{
|
||||||
|
for (auto& pair1 : human_hash_) {
|
||||||
|
Human* a = pair1.second;
|
||||||
|
for (auto& pair2 : human_hash_) {
|
||||||
|
Human* b = pair2.second;
|
||||||
|
if (testa && testb) {
|
||||||
|
if ((a == testa && b == testb) ||
|
||||||
|
(a == testb && b == testa)) {
|
||||||
|
int i = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (a->InPartObjects(b)) {
|
||||||
|
if (!b->InPartObjects(a)) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto& pair1 : human_hash_) {
|
||||||
|
Human* huma = pair1.second;
|
||||||
|
for (auto& cell : huma->grid_list) {
|
||||||
|
for (Human* humb : cell->human_list[room_idx]) {
|
||||||
|
if (testa && testb) {
|
||||||
|
if ((huma == testa && humb == testb) ||
|
||||||
|
(huma == testb && humb == testa)) {
|
||||||
|
int i = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (a8::HasBitFlag(huma->status, HS_Disable) ||
|
||||||
|
a8::HasBitFlag(humb->status, HS_Disable) ||
|
||||||
|
huma->GetPartObjectsCount() <= 0
|
||||||
|
) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!huma->InPartObjects(humb)) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -122,6 +122,7 @@ public:
|
|||||||
long long GetGasInactiveTime();
|
long long GetGasInactiveTime();
|
||||||
void ShuaNewBieAndroid(Human* target);
|
void ShuaNewBieAndroid(Human* target);
|
||||||
void InitAirDrop();
|
void InitAirDrop();
|
||||||
|
void CheckPartObjects(Human* testa = nullptr, Human* testb = nullptr);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int AllocUniid();
|
int AllocUniid();
|
||||||
@ -167,6 +168,7 @@ private:
|
|||||||
bool HasPlayerInRound(const a8::Vec2& pos, float rad);
|
bool HasPlayerInRound(const a8::Vec2& pos, float rad);
|
||||||
void ProcDisableHuman();
|
void ProcDisableHuman();
|
||||||
void OnHumanGridChg(Human* target);
|
void OnHumanGridChg(Human* target);
|
||||||
|
void ShuaGridRound(Human* target);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int elapsed_time_ = 0;
|
int elapsed_time_ = 0;
|
||||||
@ -194,4 +196,7 @@ private:
|
|||||||
std::map<int, Human*> removed_robot_hash_;
|
std::map<int, Human*> removed_robot_hash_;
|
||||||
|
|
||||||
std::vector<ObstacleData> obstacle_datas_;
|
std::vector<ObstacleData> obstacle_datas_;
|
||||||
|
#ifdef DEBUG
|
||||||
|
bool run_in_timer_ = false;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user