From db4126ced08c9698a1e9c3443f8c1e30fab59124 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 10 Apr 2019 18:37:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90building=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/building.cc | 6 ++++-- server/gameserver/player.cc | 5 +++++ server/gameserver/room.cc | 9 ++------- server/gameserver/room.h | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/server/gameserver/building.cc b/server/gameserver/building.cc index 3f8ea63..5385478 100644 --- a/server/gameserver/building.cc +++ b/server/gameserver/building.cc @@ -39,8 +39,10 @@ void Building::RecalcSelfCollider() } for (auto& obj : meta->i->dropobj()) { room->CreateLoot(obj.id(), - pos.x + obj.x() - meta->i->tilewidth() / 2.0, - pos.y + obj.y() - meta->i->tileheight() / 2.0, + Vector2D( + pos.x + obj.x() - meta->i->tilewidth() / 2.0, + pos.y + obj.y() - meta->i->tileheight() / 2.0 + ), 1 ); } diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 0468d44..8e3e3e7 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -682,6 +682,11 @@ void Player::UpdateDropWeapon() } } if (drop_ok) { + { + Vector2D dir = Vector2D::UP; + dir.Rotate(a8::RandAngle()); + room->CreateLoot(weapon_id, pos + dir * (25 + rand() % 50), 1); + } #if 1 { MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(weapon_id); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index c1c12da..6a92e6b 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -468,7 +468,7 @@ void Room::CreateHouseObstacle(Building* building, int id, float x, float y) } } -void Room::CreateLoot(int equip_id, float x, float y, int count) +void Room::CreateLoot(int equip_id, Vector2D pos, int count) { MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(equip_id); if (equip_meta) { @@ -476,12 +476,7 @@ void Room::CreateLoot(int equip_id, float x, float y, int count) entity->room = this; entity->meta = equip_meta; entity->entity_uniid = AllocUniid(); - #if 1 - entity->pos = Vector2D(x, y); - #else - entity->pos = Vector2D(pos.x + obj.x() - meta->i->tilewidth() / 2.0, - pos.y + obj.y() - meta->i->tileheight() / 2.0); - #endif + entity->pos = pos; entity->item_id = equip_id; entity->count = count; entity->Initialize(); diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 40a13e2..6388724 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -66,7 +66,7 @@ public: void DropItem(Vector2D pos, int item_id); void CreateDoor(Building* building, int door_idx); void CreateHouseObstacle(Building* building, int id, float x, float y); - void CreateLoot(int equip_id, float x, float y, int count); + void CreateLoot(int equip_id, Vector2D pos, int count); private: void ClearDeletedObjects();