room代码重构

This commit is contained in:
aozhiwei 2020-05-29 13:59:24 +08:00
parent 1d5737cb12
commit af44f89f9b
6 changed files with 120 additions and 117 deletions

View File

@ -103,7 +103,7 @@ void AndroidAI::ChangeToState(AndroidState_e to_state)
void AndroidAI::DoMove()
{
Human* hum = (Human*)owner;
if (hum->room->waiting_start) {
if (hum->room->IsWaitingStart()) {
return;
}
if (owner->UpdatedTimes() % 2 == 0) {
@ -132,10 +132,10 @@ void AndroidAI::DoMove()
void AndroidAI::DoAttack()
{
Human* hum = (Human*)owner;
if (hum->room->waiting_start) {
if (hum->room->IsWaitingStart()) {
return;
}
if (hum->room->gas_data.gas_mode == GasInactive) {
if (hum->room->GetGasData().gas_mode == GasInactive) {
return;
}
if (owner->UpdatedTimes() % 10 == 0) {

View File

@ -189,9 +189,9 @@ cs::SMUpdate* FrameMaker::MakeUpdateMsg(const Human* hum)
if (room->frame_event.airdrops_.size() > 0) {
*msg->mutable_airdrop() = room->frame_event.airdrops_.Get(0);
}
if (room->gas_data.gas_mode == GasMoving) {
msg->set_gas_progress(room->gas_data.gas_progress);
TypeConvert::ToPb(room->gas_data.pos_old, msg->mutable_gas_pos_old());
if (room->GetGasData().gas_mode == GasMoving) {
msg->set_gas_progress(room->GetGasData().gas_progress);
TypeConvert::ToPb(room->GetGasData().pos_old, msg->mutable_gas_pos_old());
}
msg->set_alive_count(room->AliveCount());
}

View File

@ -277,7 +277,7 @@ void Human::FillMFTeamData(cs::MFTeamData* team_data)
#if 1
{
#else
if (room->gas_data.gas_mode == GasJump ||
if (room->GetGasData().gas_mode == GasJump ||
room->GetFrameNo() - last_sync_teamdata_frameno_ > SERVER_FRAME_RATE * 2) {
#endif
last_sync_teamdata_frameno_ = room->GetFrameNo();
@ -477,7 +477,7 @@ bool Human::IsCollisionInMapService()
if (!obstacle->IsDead(room) &&
obstacle->meta->i->attack_type() == 1 &&
obstacle->meta->i->drop() != 0 &&
room->gas_data.gas_mode != GasInactive
room->GetGasData().gas_mode != GasInactive
) {
obstacle->Die(room);
if (obstacle->IsDead(room)) {
@ -644,10 +644,10 @@ void Human::UpdatePoisoning()
}
bool need_notify = poisoning_time > 1000;
while (poisoning_time > 1000) {
if (room->gas_data.is_last_gas) {
DecHP(room->gas_data.new_area_meta->i->hurt(), VP_SafeArea, "毒圈", VW_SafeArea);
if (room->GetGasData().is_last_gas) {
DecHP(room->GetGasData().new_area_meta->i->hurt(), VP_SafeArea, "毒圈", VW_SafeArea);
} else {
DecHP(room->gas_data.old_area_meta->i->hurt(), VP_SafeArea, "毒圈", VW_SafeArea);
DecHP(room->GetGasData().old_area_meta->i->hurt(), VP_SafeArea, "毒圈", VW_SafeArea);
}
if (dead) {
poisoning_time = 0;
@ -697,8 +697,9 @@ void Human::SyncAroundPlayers(const char* file, int line, const char* func)
#endif
assert(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) {
room->last_debugout_tick = a8::XGetTickCount();
static long long last_debugout_tick = 0;
if (a8::XGetTickCount() - last_debugout_tick > 1000 * 10) {
last_debugout_tick = a8::XGetTickCount();
a8::UdpLog::Instance()->Warning("SyncAroundPlayers error file:%s line:%d func:%s",
{
file,
@ -795,7 +796,7 @@ void Human::FillSMGameOver(cs::SMGameOver& msg)
[&human_list] (Human* hum, a8::XParams& param) -> bool
{
if (hum->leave_frameno_ == 0 ||
hum->leave_frameno_ > hum->room->battle_start_frameno_) {
hum->leave_frameno_ > hum->room->GetBattleStartFrameNo()) {
human_list.push_back(hum);
}
return true;
@ -839,7 +840,7 @@ void Human::FillSMGameOver(cs::SMGameOver& msg)
msg.set_team_id(team_id);
msg.set_team_rank(stats.rank);
msg.set_team_allcnt(1);
msg.set_game_over(room->game_over);
msg.set_game_over(room->IsGameOver());
msg.set_victory(!dead);
msg.set_room_uuid(a8::XValue(room->room_uuid));
@ -852,7 +853,7 @@ 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->IsGameOver() && !real_dead) {
lethal_weapon = weapon_id;
Entity* hum = room->GetEntityByUniId(killer_id);
if (hum && hum->entity_type == ET_Player) {
@ -1448,35 +1449,35 @@ void Human::FillMFActivePlayerData(cs::MFActivePlayerData* player_data)
void Human::FillMFGasData(cs::MFGasData* gas_data)
{
gas_data->set_mode(room->gas_data.gas_mode);
if (room->gas_data.gas_mode == GasInactive) {
gas_data->set_mode(room->GetGasData().gas_mode);
if (room->GetGasData().gas_mode == GasInactive) {
long long duration = room->GetGasInactiveTime() * SERVER_FRAME_RATE -
(room->GetFrameNo() - room->gas_data.gas_start_frameno);
(room->GetFrameNo() - room->GetGasData().gas_start_frameno);
gas_data->set_duration(std::max(duration * 50, (long long)1000) / 1000);
} else if (room->gas_data.gas_mode == GasJump) {
} else if (room->GetGasData().gas_mode == GasJump) {
gas_data->set_duration(0);
} else if (room->gas_data.gas_mode == GasMoving) {
if (room->gas_data.new_area_meta->i->shrink_speed() > 0.01f) {
long long duration = (room->gas_data.old_area_meta->i->rad() - room->gas_data.new_area_meta->i->rad()) /
room->gas_data.new_area_meta->i->shrink_speed();
} else if (room->GetGasData().gas_mode == GasMoving) {
if (room->GetGasData().new_area_meta->i->shrink_speed() > 0.01f) {
long long duration = (room->GetGasData().old_area_meta->i->rad() - room->GetGasData().new_area_meta->i->rad()) /
room->GetGasData().new_area_meta->i->shrink_speed();
++duration;
gas_data->set_duration(++duration);
} else {
gas_data->set_duration(0);
}
} else {
if (room->gas_data.old_area_meta->i->wait_time() <= 0) {
if (room->GetGasData().old_area_meta->i->wait_time() <= 0) {
gas_data->set_duration(0);
} else {
long long duration = room->gas_data.old_area_meta->i->wait_time() * 20 -
(room->GetFrameNo() - room->gas_data.gas_start_frameno);
long long duration = room->GetGasData().old_area_meta->i->wait_time() * 20 -
(room->GetFrameNo() - room->GetGasData().gas_start_frameno);
gas_data->set_duration(std::max(duration * 50, (long long)1000) / 1000);
}
}
TypeConvert::ToPb(room->gas_data.pos_old, gas_data->mutable_pos_old());
TypeConvert::ToPb(room->gas_data.pos_new, gas_data->mutable_pos_new());
gas_data->set_rad_old(room->gas_data.rad_old);
gas_data->set_rad_new(room->gas_data.rad_new);
TypeConvert::ToPb(room->GetGasData().pos_old, gas_data->mutable_pos_old());
TypeConvert::ToPb(room->GetGasData().pos_new, gas_data->mutable_pos_new());
gas_data->set_rad_old(room->GetGasData().rad_old);
gas_data->set_rad_new(room->GetGasData().rad_new);
}
bool Human::CanSee(const Human* hum) const
@ -1603,8 +1604,8 @@ void Human::SendUpdateMsg()
}
cs::SMUpdate* msg = room->frame_maker.MakeUpdateMsg(this);
if (send_msg_times == 0 || last_sync_gas_frameno < room->gas_data.gas_start_frameno) {
last_sync_gas_frameno = room->gas_data.gas_start_frameno;
if (send_msg_times == 0 || last_sync_gas_frameno < room->GetGasData().gas_start_frameno) {
last_sync_gas_frameno = room->GetGasData().gas_start_frameno;
FillMFGasData(msg->mutable_gas_data());
}
bool refreshed_view = false;
@ -2520,7 +2521,7 @@ void Human::ProcLootSkin(Loot* entity, MetaData::Equip* item_meta)
void Human::ProcLootCar(Loot* entity, MetaData::Equip* item_meta)
{
if (room->gas_data.gas_mode == GasInactive) {
if (room->GetGasData().gas_mode == GasInactive) {
return;
}
if (GetPos().Distance(entity->GetPos()) > MetaMgr::Instance()->max_mount_horse_distance) {

View File

@ -119,7 +119,7 @@ void Player::UpdateMove()
CancelAction();
}
if (dead ||
room->waiting_start) {
room->IsWaitingStart()) {
moving = false;
moved_frames = 0;
last_collision_door = nullptr;
@ -156,7 +156,7 @@ void Player::UpdateShot()
{
if (dead ||
downed ||
room->waiting_start) {
room->IsWaitingStart()) {
shot_start = false;
shot_hold = false;
series_shot_frames = 0;
@ -293,8 +293,8 @@ void Player::UpdateUseItemId()
void Player::UpdateSpectate()
{
if (room->gas_data.gas_mode == GasInactive ||
room->gas_data.gas_mode == GasJump) {
if (room->GetGasData().gas_mode == GasInactive ||
room->GetGasData().gas_mode == GasJump) {
spectate = false;
return;
}

View File

@ -90,7 +90,7 @@ void Room::Update(int delta_time)
run_in_timer_ = true;
#endif
xtimer.Update();
if (game_over && GetFrameNo() - game_over_frameno > SERVER_FRAME_RATE * 20) {
if (IsGameOver() && GetFrameNo() - game_over_frameno_ > SERVER_FRAME_RATE * 20) {
return;
}
@ -144,7 +144,7 @@ int Room::AliveCount()
void Room::AddPlayer(Player* hum)
{
assert(gas_data.gas_mode == GasInactive);
assert(gas_data_.gas_mode == GasInactive);
hum->born_point = AllocBornPoint(hum);
if (!hum->born_point) {
hum->SetPos(a8::Vec2(DEFAULT_BORN_POINT_X + rand() % 100,
@ -257,7 +257,7 @@ int Room::AllocUniid()
void Room::ShuaAndroid()
{
if (gas_data.gas_mode != GasInactive) {
if (gas_data_.gas_mode != GasInactive) {
return;
}
int robot_min_num = MetaMgr::Instance()->GetSysParamAsInt("refresh_robot_min_num", 5);
@ -658,7 +658,7 @@ int Room::GetAliveTeamNum()
bool Room::CanJoin(const std::string& accountid, RoomType_e self_room_type)
{
if (gas_data.gas_mode != GasInactive) {
if (gas_data_.gas_mode != GasInactive) {
return false;
}
if (GetPlayerByAccountId(accountid)) {
@ -863,7 +863,7 @@ void Room::TouchEntityList(a8::XParams param,
void Room::UpdateGas()
{
switch (gas_data.gas_mode) {
switch (gas_data_.gas_mode) {
case GasInactive:
UpdateGasInactive();
break;
@ -877,10 +877,10 @@ void Room::UpdateGas()
UpdateGasMoving();
break;
}
if (gas_data.gas_mode != GasInactive && gas_data.gas_mode != GasJump) {
if (!game_over && alive_count_ <= MAX_TEAM_NUM && GetAliveTeamNum() <= 1) {
game_over = true;
game_over_frameno = GetFrameNo();
if (gas_data_.gas_mode != GasInactive && gas_data_.gas_mode != GasJump) {
if (!IsGameOver() && alive_count_ <= MAX_TEAM_NUM && GetAliveTeamNum() <= 1) {
game_over_ = true;
game_over_frameno_ = GetFrameNo();
OnGameOver();
}
for (auto& pair : human_hash_) {
@ -888,13 +888,13 @@ void Room::UpdateGas()
a8::HasBitFlag(pair.second->status, HS_Disable)) {
continue;
}
bool b1 = a8::CircleContainCircle(gas_data.pos_old,
gas_data.gas_progress,
bool b1 = a8::CircleContainCircle(gas_data_.pos_old,
gas_data_.gas_progress,
pair.second->GetPos(),
pair.second->GetRadius()
);
bool b2 = a8::CircleContainCircle(gas_data.pos_new,
gas_data.rad_new,
bool b2 = a8::CircleContainCircle(gas_data_.pos_new,
gas_data_.rad_new,
pair.second->GetPos(),
pair.second->GetRadius()
);
@ -910,24 +910,24 @@ void Room::UpdateGas()
void Room::UpdateGasInactive()
{
if (GetFrameNo() - gas_data.gas_start_frameno >= GetGasInactiveTime() * SERVER_FRAME_RATE) {
gas_data.gas_mode = GasWaiting;
gas_data.old_area_meta = MetaMgr::Instance()->GetSafeArea(30001);
gas_data.new_area_meta = MetaMgr::Instance()->GetSafeArea(30002);
gas_data.gas_progress = gas_data.old_area_meta->i->rad();
gas_data.gas_start_frameno = GetFrameNo();
gas_data.pos_old = a8::Vec2(map_meta->i->map_width() / 2.0f,
if (GetFrameNo() - gas_data_.gas_start_frameno >= GetGasInactiveTime() * SERVER_FRAME_RATE) {
gas_data_.gas_mode = GasWaiting;
gas_data_.old_area_meta = MetaMgr::Instance()->GetSafeArea(30001);
gas_data_.new_area_meta = MetaMgr::Instance()->GetSafeArea(30002);
gas_data_.gas_progress = gas_data_.old_area_meta->i->rad();
gas_data_.gas_start_frameno = GetFrameNo();
gas_data_.pos_old = a8::Vec2(map_meta->i->map_width() / 2.0f,
map_meta->i->map_height() / 2.0f);
gas_data.pos_old_bk = gas_data.pos_old;
gas_data_.pos_old_bk = gas_data_.pos_old;
{
bool gen_ok = GenSmallCircle(gas_data.pos_old,
gas_data.old_area_meta->i->rad(),
gas_data.new_area_meta->i->rad(),
gas_data.pos_new);
bool gen_ok = GenSmallCircle(gas_data_.pos_old,
gas_data_.old_area_meta->i->rad(),
gas_data_.new_area_meta->i->rad(),
gas_data_.pos_new);
assert(gen_ok);
}
gas_data.rad_old = gas_data.old_area_meta->i->rad();
gas_data.rad_new = gas_data.new_area_meta->i->rad();
gas_data_.rad_old = gas_data_.old_area_meta->i->rad();
gas_data_.rad_new = gas_data_.new_area_meta->i->rad();
battle_start_frameno_ = GetFrameNo();
if (human_hash_.size() < ROOM_MAX_PLAYER_NUM) {
CreateAndroid(ROOM_MAX_PLAYER_NUM - human_hash_.size());
@ -945,56 +945,56 @@ void Room::UpdateGasInactive()
void Room::UpdateGasWaiting()
{
if (GetFrameNo() - gas_data.gas_start_frameno >=
gas_data.old_area_meta->i->wait_time() * SERVER_FRAME_RATE) {
gas_data.gas_mode = GasMoving;
gas_data.gas_start_frameno = GetFrameNo();;
if (GetFrameNo() - gas_data_.gas_start_frameno >=
gas_data_.old_area_meta->i->wait_time() * SERVER_FRAME_RATE) {
gas_data_.gas_mode = GasMoving;
gas_data_.gas_start_frameno = GetFrameNo();;
}
}
void Room::UpdateGasMoving()
{
if (GetFrameNo() - gas_data.gas_start_frameno > 0 && !gas_data.is_last_gas) {
float distance = gas_data.old_area_meta->i->shrink_speed() *
((GetFrameNo() - gas_data.gas_start_frameno) * (1.0 / SERVER_FRAME_RATE));
gas_data.gas_progress = std::max(gas_data.rad_old - distance, gas_data.rad_new);
if (!(gas_data.pos_new == gas_data.pos_old)) {
a8::Vec2 p1 = gas_data.pos_new - gas_data.pos_old_bk;
gas_data.pre_pos_old = gas_data.pos_old;
if (GetFrameNo() - gas_data_.gas_start_frameno > 0 && !gas_data_.is_last_gas) {
float distance = gas_data_.old_area_meta->i->shrink_speed() *
((GetFrameNo() - gas_data_.gas_start_frameno) * (1.0 / SERVER_FRAME_RATE));
gas_data_.gas_progress = std::max(gas_data_.rad_old - distance, gas_data_.rad_new);
if (!(gas_data_.pos_new == gas_data_.pos_old)) {
a8::Vec2 p1 = gas_data_.pos_new - gas_data_.pos_old_bk;
gas_data_.pre_pos_old = gas_data_.pos_old;
if (p1.Norm() - distance <= 0.01f) {
gas_data.pos_old = gas_data.pos_new;
gas_data_.pos_old = gas_data_.pos_new;
} else {
a8::Vec2 dir = p1;
dir.Normalize();
gas_data.pos_old = gas_data.pos_old_bk + dir * distance;
gas_data_.pos_old = gas_data_.pos_old_bk + dir * distance;
}
if (gas_data.rad_old - distance <= gas_data.rad_new) {
assert(gas_data.pos_new == gas_data.pos_old);
if (gas_data_.rad_old - distance <= gas_data_.rad_new) {
assert(gas_data_.pos_new == gas_data_.pos_old);
}
}
if (std::abs(gas_data.gas_progress - gas_data.rad_new) <= 0.001f) {
int pre_area_id = gas_data.new_area_meta->i->id();
a8::Vec2 pre_pos = gas_data.pos_new;
if (std::abs(gas_data_.gas_progress - gas_data_.rad_new) <= 0.001f) {
int pre_area_id = gas_data_.new_area_meta->i->id();
a8::Vec2 pre_pos = gas_data_.pos_new;
if (!MetaMgr::Instance()->GetSafeArea(pre_area_id + 1)) {
gas_data.is_last_gas = true;
gas_data_.is_last_gas = true;
return;
}
gas_data.gas_mode = GasWaiting;
gas_data.old_area_meta = MetaMgr::Instance()->GetSafeArea(pre_area_id);
gas_data.new_area_meta = MetaMgr::Instance()->GetSafeArea(pre_area_id + 1);
gas_data.gas_progress = gas_data.old_area_meta->i->rad();
gas_data.gas_start_frameno = GetFrameNo();
gas_data.pos_old = pre_pos;
gas_data.pos_old_bk = gas_data.pos_old;
gas_data_.gas_mode = GasWaiting;
gas_data_.old_area_meta = MetaMgr::Instance()->GetSafeArea(pre_area_id);
gas_data_.new_area_meta = MetaMgr::Instance()->GetSafeArea(pre_area_id + 1);
gas_data_.gas_progress = gas_data_.old_area_meta->i->rad();
gas_data_.gas_start_frameno = GetFrameNo();
gas_data_.pos_old = pre_pos;
gas_data_.pos_old_bk = gas_data_.pos_old;
{
bool gen_ok = GenSmallCircle(gas_data.pos_old,
gas_data.old_area_meta->i->rad(),
gas_data.new_area_meta->i->rad(),
gas_data.pos_new);
bool gen_ok = GenSmallCircle(gas_data_.pos_old,
gas_data_.old_area_meta->i->rad(),
gas_data_.new_area_meta->i->rad(),
gas_data_.pos_new);
assert(gen_ok);
}
gas_data.rad_old = gas_data.old_area_meta->i->rad();
gas_data.rad_new = gas_data.new_area_meta->i->rad();
gas_data_.rad_old = gas_data_.old_area_meta->i->rad();
gas_data_.rad_new = gas_data_.new_area_meta->i->rad();
}
}
}
@ -1223,7 +1223,7 @@ void Room::InitAirDrop()
[] (const a8::XParams& param)
{
Room* room = (Room*)param.sender.GetUserData();
if (!room->game_over) {
if (!room->IsGameOver()) {
room->AirDrop(param.param1, param.param2);
}
},
@ -1237,7 +1237,7 @@ void Room::AirDrop(int appear_time, int box_id)
if (thing_meta && thing_meta->i->type() == 2) {
a8::Vec2 dir = a8::Vec2::UP;
dir.Rotate(a8::RandAngle());
a8::Vec2 box_pos = gas_data.pos_new + dir * (500 + rand() % 300);
a8::Vec2 box_pos = gas_data_.pos_new + dir * (500 + rand() % 300);
if (box_pos.x < 1.0f) {
box_pos.x = 1.0f;
}
@ -1284,7 +1284,7 @@ void Room::AirDrop(int appear_time, int box_id)
[] (const a8::XParams& param)
{
Room* room = (Room*)param.sender.GetUserData();
if (!room->game_over) {
if (!room->IsGameOver()) {
RoomObstacle* obstacle = room->
CreateObstacle(param.param1.GetInt(),
param.param2.GetDouble(),
@ -1358,7 +1358,7 @@ void Room::AddObjectLater(RoomEntity* entity)
void Room::OnGameOver()
{
for (auto& pair : human_hash_) {
if (game_over && game_over_frameno == GetFrameNo()) {
if (IsGameOver() && game_over_frameno_ == GetFrameNo()) {
pair.second->SendGameOver();
}
}
@ -1733,14 +1733,14 @@ void Room::NotifyGameStart()
room->SecondRandPoint();
},
&xtimer_attacher_.timer_list_);
waiting_start = true;
waiting_start_ = true;
xtimer.AddDeadLineTimerAndAttach(SERVER_FRAME_RATE * 2,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
Room* room = (Room*)param.sender.GetUserData();
room->waiting_start = false;
room->waiting_start_ = false;
},
&xtimer_attacher_.timer_list_);
if (room_type == RT_NewBrid) {
@ -2177,7 +2177,7 @@ void Room::ProcDieAndroid(int die_time, int die_num)
alive_humans_copy.erase(alive_humans_copy.begin() + i);
break;
}
if (killer && ((rand() % 100 < 70) || !gas_data.old_area_meta)) {
if (killer && ((rand() % 100 < 70) || !gas_data_.old_area_meta)) {
hum->BeKill(killer->entity_uniid,
killer->name,
killer->curr_weapon->weapon_id);

View File

@ -10,7 +10,6 @@
namespace MetaData
{
struct Map;
struct SafeArea;
struct Building;
struct AirLine;
struct MapTplThing;
@ -39,26 +38,20 @@ class Room
public:
int room_idx = 0;
long long room_uuid = 0;
MetaData::Map* map_meta = nullptr;
const MetaData::Map* map_meta = nullptr;
std::string map_tpl_name;
FrameEvent frame_event;
FrameMaker frame_maker;
GasData gas_data;
bool game_over = false;
long long game_over_frameno = 0;
a8::XTimer xtimer;
a8::XTimerAttacher timer_attacher;
GridService* grid_service = nullptr;
MapService* map_service = nullptr;
long long battle_start_frameno_ = 0;
long long last_debugout_tick = 0;
bool waiting_start = false;
RoomType_e room_type = RT_NewBrid;
std::vector<MetaData::MapTplThing*>* spawn_points = nullptr;
MetaData::MapTplThing* newbie_born_point_meta = nullptr;
std::vector<MetaData::MapTplThing*>* loots = nullptr;
std::vector<Building*>* buildings = nullptr;
const std::vector<MetaData::MapTplThing*>* spawn_points = nullptr;
const MetaData::MapTplThing* newbie_born_point_meta = nullptr;
const std::vector<MetaData::MapTplThing*>* loots = nullptr;
const std::vector<Building*>* buildings = nullptr;
Human* first_newbie = nullptr;
a8::XTimerAttacher timer_attacher;
~Room();
void Init();
@ -68,6 +61,10 @@ public:
int GetPlayerNum();
int AliveCount();
inline int RealAliveCount() { return alive_human_hash_.size(); }
long long GetBattleStartFrameNo() { return battle_start_frameno_; }
bool IsGameOver() { return game_over_; }
const GasData& GetGasData() { return gas_data_; }
bool IsWaitingStart() { return waiting_start_; }
Player* GetPlayerByAccountId(const std::string& accountid);
Player* GetPlayerByUniId(int uniid);
Entity* GetEntityByUniId(int uniid);
@ -165,7 +162,12 @@ private:
void CheckAliveHuman(Human* hum, std::vector<Human*>& alive_humans);
private:
bool waiting_start_ = false;
GasData gas_data_;
long long frameno_ = 0;
long long battle_start_frameno_ = 0;
bool game_over_ = false;
long long game_over_frameno_ = 0;
int elapsed_time_ = 0;
int alive_count_ = 0;
int force_shua_android_times_ = 0;