From 9daa4a1330ad2b4bb15d2c4cac19aa35a4db5476 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 30 May 2020 16:06:02 +0800 Subject: [PATCH] youhua entity_type entity_subtype --- server/gameserver/android.cc | 4 +- server/gameserver/building.cc | 2 +- server/gameserver/bullet.cc | 32 +++---- server/gameserver/entity.h | 13 ++- server/gameserver/gridservice.cc | 4 +- server/gameserver/human.cc | 136 +++++++++++++++--------------- server/gameserver/loot.cc | 2 +- server/gameserver/mapservice.cc | 8 +- server/gameserver/obstacle.cc | 8 +- server/gameserver/player.cc | 6 +- server/gameserver/room.cc | 130 ++++++++++++++-------------- server/gameserver/roomobstacle.cc | 2 +- 12 files changed, 178 insertions(+), 169 deletions(-) diff --git a/server/gameserver/android.cc b/server/gameserver/android.cc index e606835..b604052 100644 --- a/server/gameserver/android.cc +++ b/server/gameserver/android.cc @@ -8,8 +8,8 @@ Android::Android():Human() { - entity_type = ET_Player; - entity_subtype = EST_Android; + entity_type_ = ET_Player; + entity_subtype_ = EST_Android; ai = new AndroidAI; ai->owner = this; #if 0 diff --git a/server/gameserver/building.cc b/server/gameserver/building.cc index 3c48362..99a6c82 100644 --- a/server/gameserver/building.cc +++ b/server/gameserver/building.cc @@ -11,7 +11,7 @@ Building::Building():Entity() { - entity_type = ET_Building; + entity_type_ = ET_Building; ++App::Instance()->perf.entity_num[ET_Building]; } diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 4b479df..8c32eeb 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -10,7 +10,7 @@ Bullet::Bullet():MoveableEntity() { - entity_type = ET_Bullet; + entity_type_ = ET_Bullet; ++App::Instance()->perf.entity_num[ET_Bullet]; } @@ -51,7 +51,7 @@ void Bullet::RecalcSelfCollider() void Bullet::OnHit(std::set& objects) { for (auto& target : objects) { - switch (target->entity_type) { + switch (target->GetEntityType()) { case ET_Player: { Human* hum = (Human*)target; @@ -129,20 +129,20 @@ void Bullet::ProcBomb() ( [this, &objects] (Entity* entity, bool& stop) { - switch (entity->entity_type) { - case ET_Obstacle: - case ET_Building: - { - if (TestCollision(room, entity)) { - objects.insert(entity); - } - } - break; - default: - { - } - break; - } + switch (entity->GetEntityType()) { + case ET_Obstacle: + case ET_Building: + { + if (TestCollision(room, entity)) { + objects.insert(entity); + } + } + break; + default: + { + } + break; + } }); switch (meta->i->_inventory_slot()) { diff --git a/server/gameserver/entity.h b/server/gameserver/entity.h index 29acddf..d27382e 100644 --- a/server/gameserver/entity.h +++ b/server/gameserver/entity.h @@ -18,8 +18,6 @@ class Entity { public: int entity_uniid = 0; - EntityType_e entity_type = ET_None; - EntitySubType_e entity_subtype = EST_None; int grid_id = 0; @@ -34,6 +32,10 @@ class Entity virtual bool IsDead(Room* room) { return false;}; virtual long long GetDeadFrameNo(Room* room) { return 0;}; virtual void OnPreCollision(Room* room) {}; + EntityType_e GetEntityType() { return entity_type_; } + EntitySubType_e GetEntitySubType() { return entity_subtype_; } + virtual bool IsEntityType(EntityType_e type) { return type == entity_type_;} + virtual bool IsEntitySubType(EntitySubType_e subtype) { return subtype == entity_subtype_;} bool TestCollision(Room* room, Entity* b); bool TestCollision(Room* room, ColliderComponent* b); bool TestCollisionEx(Room* room, const a8::Vec2& aabb_pos, AabbCollider& aabb_box); @@ -71,11 +73,14 @@ class Entity pos_.y = y; } +private: + void ClearColliders(); + protected: std::list colliders_; + EntityType_e entity_type_ = ET_None; + EntitySubType_e entity_subtype_ = EST_None; private: a8::Vec2 pos_; - - void ClearColliders(); }; diff --git a/server/gameserver/gridservice.cc b/server/gameserver/gridservice.cc index 8d8c938..1908a28 100644 --- a/server/gameserver/gridservice.cc +++ b/server/gameserver/gridservice.cc @@ -206,7 +206,7 @@ void GridService::DelBullet(Bullet* bullet) void GridService::AddRoomEntity(Room* room, Entity* entity) { - assert(entity->entity_type != ET_Player); + assert(!entity->IsEntityType(ET_Player)); int x = (int)entity->GetX() + cell_width_; int y = (int)entity->GetY() + cell_width_; if (BroderOverFlow(x, y)) { @@ -227,7 +227,7 @@ void GridService::DelRoomEntity(Room* room, Entity* entity) void GridService::AddPermanentEntity(Entity* entity) { - assert(entity->entity_type != ET_Player); + assert(!entity->IsEntityType(ET_Player)); int x = (int)entity->GetX() + cell_width_; int y = (int)entity->GetY() + cell_width_; if (BroderOverFlow(x, y)) { diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 98a5ddd..4eb436b 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -459,7 +459,7 @@ bool Human::IsCollisionInMapService() AabbCollider aabb_box; GetAabbBox(aabb_box); for (ColliderComponent* collider : colliders) { - switch (collider->owner->entity_type) { + switch (collider->owner->GetEntityType()) { case ET_Obstacle: { Obstacle* obstacle = (Obstacle*)collider->owner; @@ -655,7 +655,7 @@ void Human::UpdatePoisoning() } poisoning_time -= 1000; } - if (need_notify && entity_subtype == EST_Player) { + if (need_notify && IsEntitySubType(EST_Player)) { SyncAroundPlayers(__FILE__, __LINE__, __func__); } } @@ -769,7 +769,7 @@ void Human::CancelAction() { if (action_type == AT_Relive) { Entity* entity = room->GetEntityByUniId(action_target_id); - if (entity->entity_type != ET_Player) { + if (!entity->IsEntityType(ET_Player)) { Human* hum = (Human*)entity; if (hum->action_type == AT_Rescue) { hum->CancelAction(); @@ -857,7 +857,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id) if (!dead && !room->IsGameOver() && !real_dead) { lethal_weapon = weapon_id; Entity* hum = room->GetEntityByUniId(killer_id); - if (hum && hum->entity_type == ET_Player) { + if (hum && hum->IsEntityType(ET_Player)) { if (killer_id == entity_uniid) { std::string msg = a8::Format("%s 自杀", { @@ -948,7 +948,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id) if (weapon_id != VW_Spectate && dead_times <= max_revive_times && room->AliveCount() >= 5 && - entity_subtype == EST_Player) { + IsEntitySubType(EST_Player)) { Revive(); } else { real_dead = true; @@ -1130,7 +1130,7 @@ void Human::DoSkill() skill_target_id = entity_uniid; #endif Entity* entity = room->GetEntityByUniId(skill_target_id); - if (entity && entity->entity_type == ET_Player) { + if (entity && entity->IsEntityType(ET_Player)) { Human* hum = (Human*)entity; std::set target_list; skill_target_pos = hum->GetPos(); @@ -1161,7 +1161,7 @@ void Human::DoGetDown() if (car_.car_id != 0) { int entity_uniid = room->CreateLoot(car_.car_id, GetPos(), 1, 1); Entity* loot_entity = room->GetEntityByUniId(entity_uniid); - if (loot_entity && loot_entity->entity_type == ET_Loot) { + if (loot_entity && loot_entity->IsEntityType(ET_Loot)) { ((Loot*)loot_entity)->bullet_num = 0; ((Loot*)loot_entity)->param1 = 0; ((Loot*)loot_entity)->param2 = 0; @@ -1185,7 +1185,7 @@ void Human::FindLocation() ( [this, &target] (Entity* entity, bool& stop) { - switch (entity->entity_type) { + switch (entity->GetEntityType()) { case ET_Obstacle: { if (!target) { @@ -1197,13 +1197,13 @@ void Human::FindLocation() break; case ET_Building: { - if (!target || target->entity_type != ET_Building) { - AabbCollider aabb_box; - entity->GetAabbBox(aabb_box); - if (TestCollision(room, &aabb_box)) { - target = entity; - } - } + if (!target || !target->IsEntityType(ET_Building)) { + AabbCollider aabb_box; + entity->GetAabbBox(aabb_box); + if (TestCollision(room, &aabb_box)) { + target = entity; + } + } } break; default: @@ -1232,7 +1232,7 @@ void Human::RefreshView() ( [this] (Entity* entity, bool& stop) { - switch (entity->entity_type) { + switch (entity->GetEntityType()) { case ET_Building: case ET_Obstacle: case ET_Loot: @@ -1494,7 +1494,7 @@ void Human::SendUpdateMsg() void Human::SendGameOver() { - if (entity_subtype == EST_Player) { + if (IsEntitySubType(EST_Player)) { //!!!必须要在SendNotifyMsg之前注意哦 if (!sent_battlereport_) { SendBattleReport(); @@ -1664,7 +1664,7 @@ void Human::UpdateAction() case AT_Relive: { Entity* entity = room->GetEntityByUniId(action_target_id); - if (entity->entity_type != ET_Player) { + if (!entity->IsEntityType(ET_Player)) { return; } Human* hum = (Human*)entity; @@ -1803,7 +1803,7 @@ void Human::ClearFrameData() Entity* entity = room->GetEntityByUniId(itr); if (entity) { RemovePartObjects(entity); - if (entity->entity_type == ET_Player) { + if (entity->IsEntityType(ET_Player)) { ((Human*)entity)->RemovePartObjects(this); } #ifdef DEBUG @@ -1821,7 +1821,7 @@ void Human::ClearFrameData() Human* hum = (Human*)entity; if (entity) { RemovePartObjects(entity); - if (entity->entity_type == ET_Player) { + if (entity->IsEntityType(ET_Player)) { ((Human*)entity)->RemovePartObjects(this); } } @@ -2141,7 +2141,7 @@ void Human::ProcLootOldSkin(Loot* entity, MetaData::Equip* item_meta) if (skin_tank.skin_id != 0) { int entity_uniid = room->CreateLoot(skin_tank.skin_id, GetPos(), 1, 1); Entity* loot_entity = room->GetEntityByUniId(entity_uniid); - if (loot_entity && loot_entity->entity_type == ET_Loot) { + if (loot_entity && loot_entity->IsEntityType(ET_Loot)) { ((Loot*)loot_entity)->bullet_num = tank_weapon.ammo; ((Loot*)loot_entity)->param1 = tank_oil_value; ((Loot*)loot_entity)->param2 = tank_oil_max; @@ -2257,7 +2257,7 @@ void Human::ProcLootCar(Loot* entity, MetaData::Equip* item_meta) if (car_.car_id != 0) { int entity_uniid = room->CreateLoot(car_.car_id, GetPos(), 1, 1); Entity* loot_entity = room->GetEntityByUniId(entity_uniid); - if (loot_entity && loot_entity->entity_type == ET_Loot) { + if (loot_entity && loot_entity->IsEntityType(ET_Loot)) { ((Loot*)loot_entity)->bullet_num = 0; ((Loot*)loot_entity)->param1 = 0; ((Loot*)loot_entity)->param2 = 0; @@ -2317,18 +2317,18 @@ void Human::FindLocationWithTarget(Entity* target) tmp_grids, [this, &building] (Entity* entity, bool& stop) { - switch (entity->entity_type) { - case ET_Building: - { - if (TestCollision(room, entity)) { - building = entity; - stop = true; - } - } - break; - default: - break; - } + switch (entity->GetEntityType()) { + case ET_Building: + { + if (TestCollision(room, entity)) { + building = entity; + stop = true; + } + } + break; + default: + break; + } }); if (!building) { @@ -2500,7 +2500,7 @@ float Human::GetSkillAtkAdd(int skill_id) void Human::TriggerOneObjectBuff(Entity* target, BuffTriggerType_e trigger_type) { - if (target->entity_type != ET_Player) { + if (!target->IsEntityType(ET_Player)) { return; } Human* hum = (Human*)target; @@ -2740,18 +2740,18 @@ float Human::GetBuffAttrRate(int attr_type) bool Human::IsPlayer() { - return entity_subtype == EST_Player; + return IsEntitySubType(EST_Player); } bool Human::IsAndroid() { - return entity_subtype == EST_Android; + return IsEntitySubType(EST_Android); } void Human::DropItems(Obstacle* obstacle) { bool is_treasure_box = false; - if (obstacle->entity_subtype == EST_RoomObstacle) { + if (obstacle->IsEntitySubType(EST_RoomObstacle)) { is_treasure_box = ((RoomObstacle*)obstacle)->is_treasure_box; } int drop_id = obstacle->meta->i->drop(); @@ -2912,7 +2912,7 @@ void Human::SelectSkillTargets(const a8::Vec2& target_pos, std::set& ta case kST_EnemySingle: { Entity* entity = room->GetEntityByUniId(skill_target_id); - if (entity && entity->entity_type == ET_Player) { + if (entity && entity->IsEntityType(ET_Player)) { Human* hum = (Human*)entity; if (hum->team_id != team_id) { target_list.insert(hum); @@ -2962,7 +2962,7 @@ void Human::SelectSkillTargets(const a8::Vec2& target_pos, std::set& ta case kST_SingleEnemyAndSelf: { Entity* entity = room->GetEntityByUniId(skill_target_id); - if (entity && entity->entity_type == ET_Player) { + if (entity && entity->IsEntityType(ET_Player)) { Human* hum = (Human*)entity; if (hum->team_id != team_id) { target_list.insert(hum); @@ -3106,19 +3106,19 @@ void Human::GetViewObjects(std::set& view_objects) ( [&view_objects] (Entity* entity, bool& stop) { - switch (entity->entity_type) { - case ET_Building: - case ET_Obstacle: - case ET_Loot: - { - view_objects.insert(entity); - } - break; - default: - { - } - break; - } + switch (entity->GetEntityType()) { + case ET_Building: + case ET_Obstacle: + case ET_Loot: + { + view_objects.insert(entity); + } + break; + default: + { + } + break; + } }); } @@ -3186,7 +3186,7 @@ void Human::ProcIncGridList(std::set& old_grids, inc_grids, [this] (Entity* entity, bool& stop) { - switch (entity->entity_type) { + switch (entity->GetEntityType()) { case ET_Building: case ET_Obstacle: case ET_Loot: @@ -3232,20 +3232,20 @@ void Human::ProcDecGridList(std::set& old_grids, [this] (Entity* entity, bool& stop) { if (!room->grid_service->EntityInGridList(room, entity, GetGridList())) { - switch (entity->entity_type) { - case ET_Building: - case ET_Obstacle: - case ET_Loot: - { - AddOutObjects(entity); - } - break; - default: - { - } - break; - } - } + switch (entity->GetEntityType()) { + case ET_Building: + case ET_Obstacle: + case ET_Loot: + { + AddOutObjects(entity); + } + break; + default: + { + } + break; + } + } }); } diff --git a/server/gameserver/loot.cc b/server/gameserver/loot.cc index 1d0ce18..9479a1d 100644 --- a/server/gameserver/loot.cc +++ b/server/gameserver/loot.cc @@ -10,7 +10,7 @@ Loot::Loot():RoomEntity() { - entity_type = ET_Loot; + entity_type_ = ET_Loot; ++App::Instance()->perf.entity_num[ET_Loot]; } diff --git a/server/gameserver/mapservice.cc b/server/gameserver/mapservice.cc index 8c8ef28..76c4e29 100644 --- a/server/gameserver/mapservice.cc +++ b/server/gameserver/mapservice.cc @@ -69,8 +69,8 @@ void MapService::UnInit() void MapService::AddCollider(ColliderComponent* collider) { - if (!(collider->owner->entity_type == ET_Obstacle || - collider->owner->entity_type == ET_Building)) { + if (!(collider->owner->IsEntityType(ET_Obstacle) || + collider->owner->IsEntityType(ET_Building))) { abort(); } CellNode* top_node = nullptr; @@ -184,10 +184,10 @@ void MapService::GetColliders(Room* room, } struct CellNode *node, *tmp; list_for_each_entry_safe(node, tmp, head, entry) { - switch (node->collider->owner->entity_type) { + switch (node->collider->owner->GetEntityType()) { case ET_Obstacle: { - switch (node->collider->owner->entity_subtype) { + switch (node->collider->owner->GetEntitySubType()) { case EST_PermanentObstacle: { colliders.insert(node->collider); diff --git a/server/gameserver/obstacle.cc b/server/gameserver/obstacle.cc index 788932f..a96b1c8 100644 --- a/server/gameserver/obstacle.cc +++ b/server/gameserver/obstacle.cc @@ -17,8 +17,8 @@ enum ObstacleDataFlags_e Obstacle::Obstacle():Entity() { - entity_type = ET_Obstacle; - entity_subtype = EST_PermanentObstacle; + entity_type_ = ET_Obstacle; + entity_subtype_ = EST_PermanentObstacle; ++App::Instance()->perf.entity_num[ET_Obstacle]; } @@ -245,7 +245,7 @@ void Obstacle::Explosion(Bullet* bullet) tmp_grids, [this, room, &objects] (Entity* entity, bool& stop) { - switch (entity->entity_type) { + switch (entity->GetEntityType()) { case ET_Obstacle: case ET_Building: { @@ -263,7 +263,7 @@ void Obstacle::Explosion(Bullet* bullet) a8::Vec2 bomb_pos = GetPos(); room->frame_event.AddExplosion(bullet, meta->i->thing_id(), bomb_pos); for (auto& target : objects) { - switch (target->entity_type) { + switch (target->GetEntityType()) { case ET_Player: { Human* hum = (Human*)target; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index d9fab16..de0b211 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -19,8 +19,8 @@ const int kREVIVE_BUFF_ID = 1005; Player::Player():Human() { - entity_type = ET_Player; - entity_subtype = EST_Player; + entity_type_ = ET_Player; + entity_subtype_ = EST_Player; ++App::Instance()->perf.entity_num[ET_Player]; } @@ -458,7 +458,7 @@ void Player::ProcInteraction() for (auto obj_id : interaction_objids) { Entity* entity = room->GetEntityByUniId(obj_id); if (entity) { - switch (entity->entity_type) { + switch (entity->GetEntityType()) { case ET_Obstacle: { ObstacleInteraction((Obstacle*)entity); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 24c20d7..fd6d320 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -131,7 +131,10 @@ Player* Room::GetPlayerByAccountId(const std::string& accountid) Player* Room::GetPlayerByUniId(int uniid) { Entity* entity = GetEntityByUniId(uniid); - return entity && entity->entity_type == ET_Player && entity->entity_subtype == EST_Player ? + if (!entity) { + return nullptr; + } + return entity->IsEntityType(ET_Player) && entity->IsEntitySubType(EST_Player) ? (Player*)entity : nullptr; } @@ -303,7 +306,7 @@ Human* Room::FindEnemy(Human* hum) ( [&enemys, hum, sub_type] (Human* target, bool& stop) { - if (target->entity_subtype == sub_type && + if (target->IsEntitySubType(sub_type) && !target->dead) { if (hum->GetPos().Distance(target->GetPos()) < 300.0f) { if (target->team_id == 0 || @@ -440,37 +443,38 @@ void Room::CreateBullet(Human* hum, Weapon* weapon, void Room::RemoveObjectLater(RoomEntity* entity) { - auto remove_func = [] (const a8::XParams& param) - { - RoomEntity* entity = (RoomEntity*)param.sender.GetUserData(); - switch (entity->entity_type) { - case ET_Bullet: - { - entity->room->RemoveFromMoveableHash((Bullet*)entity); - entity->room->grid_service->DelBullet((Bullet*)entity); - } - break; - case ET_Loot: - { - entity->BroadcastDeleteState(entity->room); - entity->room->grid_service->DelRoomEntity(entity->room, entity); - } - break; - case ET_Player: - { - entity->room->RemoveFromMoveableHash((Human*)entity); - entity->room->RemoveFromHuamnHash((Human*)entity); - } - break; - default: - { - abort(); - } - break; - } - entity->room->RemoveFromEntityHash(entity); - delete entity; - }; + auto remove_func = + [] (const a8::XParams& param) + { + RoomEntity* entity = (RoomEntity*)param.sender.GetUserData(); + switch (entity->GetEntityType()) { + case ET_Bullet: + { + entity->room->RemoveFromMoveableHash((Bullet*)entity); + entity->room->grid_service->DelBullet((Bullet*)entity); + } + break; + case ET_Loot: + { + entity->BroadcastDeleteState(entity->room); + entity->room->grid_service->DelRoomEntity(entity->room, entity); + } + break; + case ET_Player: + { + entity->room->RemoveFromMoveableHash((Human*)entity); + entity->room->RemoveFromHuamnHash((Human*)entity); + } + break; + default: + { + abort(); + } + break; + } + entity->room->RemoveFromEntityHash(entity); + delete entity; + }; xtimer.AddDeadLineTimerAndAttach(0, a8::XParams() .SetSender(entity), @@ -599,32 +603,32 @@ Entity* Room::FindFirstCollisonEntity(const a8::Vec2& aabb_pos, AabbCollider& aa tmp_grids, [this, &target, &aabb_pos, &aabb_box] (Entity* entity, bool& stop) { - switch (entity->entity_type) { - case ET_Obstacle: - { - if (!target) { - if (entity->TestCollisionEx(this, aabb_pos, aabb_box)) { - target = entity; - stop = true; - } - } - } - break; - case ET_Building: - { - if (!target || target->entity_type != ET_Building) { - AabbCollider building_aabb_box; - entity->GetAabbBox(building_aabb_box); - if (building_aabb_box.IntersectEx(aabb_pos, &aabb_box)) { - target = entity; - stop = true; - } - } - } - break; - default: - break; - } + switch (entity->GetEntityType()) { + case ET_Obstacle: + { + if (!target) { + if (entity->TestCollisionEx(this, aabb_pos, aabb_box)) { + target = entity; + stop = true; + } + } + } + break; + case ET_Building: + { + if (!target || !target->IsEntityType(ET_Building)) { + AabbCollider building_aabb_box; + entity->GetAabbBox(building_aabb_box); + if (building_aabb_box.IntersectEx(aabb_pos, &aabb_box)) { + target = entity; + stop = true; + } + } + } + break; + default: + break; + } }); return target; } @@ -1219,7 +1223,7 @@ void Room::AddObjectLater(RoomEntity* entity) auto add_func = [] (const a8::XParams& param) { RoomEntity* entity = (RoomEntity*)param.sender.GetUserData(); - if (entity->entity_type == ET_Bullet) { + if (entity->IsEntityType(ET_Bullet)) { MoveableEntity* moveableentity = (MoveableEntity*)entity; entity->room->AddToMoveableHash(moveableentity); } @@ -1448,7 +1452,7 @@ void Room::CreateLoots() ); if (entity_uniid && equip_meta->i->equip_type() == EQUIP_TYPE_CAR) { Entity* loot_entity = GetEntityByUniId(entity_uniid); - if (loot_entity && loot_entity->entity_type == ET_Loot) { + if (loot_entity && loot_entity->IsEntityType(ET_Loot)) { ((Loot*)loot_entity)->bullet_num = equip_meta->i->clip_volume(); ((Loot*)loot_entity)->param1 = MetaMgr::Instance()->max_oil; ((Loot*)loot_entity)->param2 = MetaMgr::Instance()->max_oil; @@ -1481,7 +1485,7 @@ void Room::CreateDropObjs() void Room::IncBornPointHumanNum(BornPoint* point, Human* hum) { - switch (hum->entity_subtype) { + switch (hum->GetEntitySubType()) { case EST_Player: { ++point->player_num; @@ -1501,7 +1505,7 @@ void Room::IncBornPointHumanNum(BornPoint* point, Human* hum) void Room::DecBornPointHumanNum(BornPoint* point, Human* hum) { - switch (hum->entity_subtype) { + switch (hum->GetEntitySubType()) { case EST_Player: { --point->player_num; diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index c47df8b..84e61cf 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -13,7 +13,7 @@ RoomObstacle::RoomObstacle():Obstacle() { - entity_subtype = EST_RoomObstacle; + entity_subtype_ = EST_RoomObstacle; } RoomObstacle::~RoomObstacle()