From 8a5388d30e356644b2dc27c94469f14d6f2c8a8e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 31 Dec 2022 17:09:08 +0800 Subject: [PATCH] 1 --- server/gameserver/bullet.cc | 3 +++ server/gameserver/gridcell.cc | 13 ------------- server/gameserver/gridcell.h | 4 ---- server/gameserver/gridservice.cc | 33 +++++--------------------------- server/gameserver/gridservice.h | 2 -- 5 files changed, 8 insertions(+), 47 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 2601d245..4e62f5c9 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -828,6 +828,9 @@ void Bullet::GetHitCreatures(BulletCheckResult& result) AabbCollider aabb_box; c->GetHitAabbBox(aabb_box); if (c != sender.Get() && !c->dead && TestCollision(room, &aabb_box)) { + #ifdef DEBUG + a8::XPrintf("bullet hit\n", {}); + #endif if (meta->_inventory_slot() == IS_C4) { if (!c->IsHuman()) { result.objects.insert(c); diff --git a/server/gameserver/gridcell.cc b/server/gameserver/gridcell.cc index 59829cdb..f2f9c062 100644 --- a/server/gameserver/gridcell.cc +++ b/server/gameserver/gridcell.cc @@ -7,18 +7,15 @@ #include "car.h" #include "hero.h" #include "creature.h" -#include "bullet.h" #include "global.h" GridCell::GridCell() { entitys_.reserve(MAX_ROOM_IDX); creatures_.reserve(MAX_ROOM_IDX); - bullets_.reserve(MAX_ROOM_IDX); for (int i = 0; i < MAX_ROOM_IDX; ++i) { entitys_.push_back(std::set()); creatures_.push_back(std::set()); - bullets_.push_back(std::set()); } } @@ -144,13 +141,3 @@ bool GridCell::CreatureExists(Creature* c) { return creatures_[c->room->GetRoomIdx()].find(c) != creatures_[c->room->GetRoomIdx()].end(); } - -void GridCell::AddBullet(Bullet* bullet) -{ - bullets_[bullet->room->GetRoomIdx()].insert(bullet); -} - -void GridCell::RemoveBullet(Bullet* bullet) -{ - bullets_[bullet->room->GetRoomIdx()].erase(bullet); -} diff --git a/server/gameserver/gridcell.h b/server/gameserver/gridcell.h index 3cceb73d..24f1e018 100644 --- a/server/gameserver/gridcell.h +++ b/server/gameserver/gridcell.h @@ -2,7 +2,6 @@ class Entity; class Human; -class Bullet; class Room; class Creature; @@ -23,8 +22,6 @@ public: void AddCreature(Creature* c); void RemoveCreature(Creature* c); bool CreatureExists(Creature* c); - void AddBullet(Bullet* bullet); - void RemoveBullet(Bullet* bullet); void AddPermanentEntity(Entity* entity); void AddRoomEntity(Room* room, Entity* entity); void RemoveRoomEntity(Room* room, Entity* entity); @@ -41,5 +38,4 @@ public: private: std::vector> entitys_; std::vector> creatures_; - std::vector> bullets_; }; diff --git a/server/gameserver/gridservice.cc b/server/gameserver/gridservice.cc index 3174e0bf..6a421eeb 100644 --- a/server/gameserver/gridservice.cc +++ b/server/gameserver/gridservice.cc @@ -117,7 +117,7 @@ void GridService::ClearRoomData(Room* room) void GridService::AddCreature(Creature* c) { int x = (int)c->GetPos().GetX() + cell_width_; - int y = (int)c->GetPos().GetY() + cell_width_; + int y = (int)c->GetPos().GetZ() + cell_width_; if (BroderOverFlow(x, y)) { A8_ABORT(); } @@ -138,7 +138,7 @@ void GridService::RemoveCreature(Creature* c) void GridService::MoveCreature(Creature* c) { int new_x = (int)c->GetPos().GetX() + cell_width_; - int new_y = (int)c->GetPos().GetY() + cell_width_; + int new_y = (int)c->GetPos().GetZ() + cell_width_; int new_grid_id = new_x/cell_width_ + (new_y/cell_width_) * cell_count_per_row_; if (BroderOverFlow(new_x, new_y)) { A8_ABORT(); @@ -167,7 +167,7 @@ void GridService::AddRoomEntity(Room* room, Entity* entity) { assert(!entity->IsEntityType(ET_Player)); int x = (int)entity->GetPos().GetX() + cell_width_; - int y = (int)entity->GetPos().GetY() + cell_width_; + int y = (int)entity->GetPos().GetZ() + cell_width_; if (BroderOverFlow(x, y)) { A8_ABORT(); } @@ -188,7 +188,7 @@ void GridService::AddPermanentEntity(Entity* entity) { assert(!entity->IsEntityType(ET_Player)); int x = (int)entity->GetPos().GetX() + cell_width_; - int y = (int)entity->GetPos().GetY() + cell_width_; + int y = (int)entity->GetPos().GetZ() + cell_width_; if (BroderOverFlow(x, y)) { A8_ABORT(); } @@ -375,25 +375,10 @@ void GridService::DeatchHuman(Human* target) target->GetGridList().clear(); } -void GridService::AddBullet(Bullet* bullet) -{ - int x = (int)bullet->GetPos().GetX() + cell_width_; - int y = (int)bullet->GetPos().GetY() + cell_width_; - if (BroderOverFlow(x, y)) { - A8_ABORT(); - } - bullet->SetGridId(x/cell_width_ + (y/cell_width_) * cell_count_per_row_); - if (bullet->GetGridId() == 0 || bullet->GetGridId() > max_grid_id_) { - A8_ABORT(); - } - cells_[bullet->GetGridId()].AddBullet(bullet); - GetAllCells(bullet->room, bullet->GetGridId(), bullet->GetGridList()); -} - void GridService::MoveBullet(Bullet* bullet) { int new_x = (int)bullet->GetPos().GetX() + cell_width_; - int new_y = (int)bullet->GetPos().GetY() + cell_width_; + int new_y = (int)bullet->GetPos().GetZ() + cell_width_; int new_grid_id = new_x/cell_width_ + (new_y/cell_width_) * cell_count_per_row_; if (BroderOverFlow(new_x, new_y)) { A8_ABORT(); @@ -411,14 +396,6 @@ void GridService::MoveBullet(Bullet* bullet) bullet->GetGridList(), inc_grid_list, dec_grid_list); - cells_[bullet->GetGridId()].RemoveBullet(bullet); - cells_[new_grid_id].AddBullet(bullet); bullet->SetGridId(new_grid_id); } } - -void GridService::DelBullet(Bullet* bullet) -{ - GridCell& cell = cells_[bullet->GetGridId()]; - cell.RemoveBullet(bullet); -} diff --git a/server/gameserver/gridservice.h b/server/gameserver/gridservice.h index 7a361c3a..2548f38e 100644 --- a/server/gameserver/gridservice.h +++ b/server/gameserver/gridservice.h @@ -24,9 +24,7 @@ class GridService void RemoveCreature(Creature* c); void MoveCreature(Creature* c); - void AddBullet(Bullet* bullet); void MoveBullet(Bullet* bullet); - void DelBullet(Bullet* bullet); void AddRoomEntity(Room* room, Entity* entity); void DelRoomEntity(Room* room, Entity* entity);