From 2751310f43caa7a065647cfa3d0afae20f533151 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 22 Mar 2019 11:02:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0mapthing=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/metadata.h | 5 +++++ server/gameserver/metamgr.cc | 11 +++++++++++ server/gameserver/player.cc | 2 +- server/gameserver/room.cc | 6 +++--- server/tools/protobuild/metatable.proto | 12 ++++++++++++ 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index aa4832d..63a74e0 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -15,6 +15,11 @@ namespace MetaData const metatable::Map* i = nullptr; }; + struct MapThing + { + const metatable::MapThing* i = nullptr; + }; + struct SafeArea { const metatable::SafeArea* i = nullptr; diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index da5d6f7..54bab2d 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -22,6 +22,8 @@ public: std::list equip_list; std::list player_meta_list; std::list player_list; + std::list mapthing_meta_list; + std::list mapthing_list; std::map parameter_hash; std::map gamemap_hash; @@ -29,6 +31,7 @@ public: std::map item_hash; std::map equip_hash; std::map player_hash; + std::map mapthing_hash; void Load() { @@ -45,6 +48,8 @@ public: f8::ReadCsvMetaFile(res_path + "item@item.csv", item_meta_list); f8::ReadCsvMetaFile(res_path + "equip@equip.csv", equip_meta_list); f8::ReadCsvMetaFile(res_path + "player@player.csv", player_meta_list); + f8::ReadCsvMetaFile(res_path + "player@player.csv", player_meta_list); + f8::ReadCsvMetaFile(res_path + "mapThing@mapThing.csv", mapthing_meta_list); BindToMetaData(); } @@ -89,6 +94,12 @@ private: player_hash[item.i->id()] = &item; } + for (auto& meta : mapthing_meta_list) { + MetaData::MapThing& item = a8::FastAppend(mapthing_list); + item.i = &meta; + mapthing_hash[item.i->thing_id()] = &item; + } + } }; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 359375f..64027f2 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -80,7 +80,7 @@ void Player::UpdateMove() int speed = std::max(1, (int)GetSpeed()); for (int i = 0; i < speed; ++i) { Vector2D old_pos = pos; - pos = pos + move_dir * (i + 1); + pos = pos + move_dir; if (IsCollision()) { pos = old_pos; if (i == 0) { diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 1b305e0..8949ae4 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -11,7 +11,7 @@ #include "collider.h" const int ROOM_MAX_PLAYER_NUM = 50; -const int ANDROID_NUM = 30; +const int ANDROID_NUM = 0; void Room::Update(int delta_time) { @@ -66,8 +66,8 @@ int Room::AliveCount() void Room::AddPlayer(Player* hum) { { - hum->pos.x = 100 + rand() % 100; - hum->pos.y = 200 + rand() % 200; + hum->pos.x = 1000 + rand() % 100; + hum->pos.y = 2000 + rand() % 200; hum->attack_dir = hum->pos; hum->attack_dir.Normalize(); float angle = ((float)rand() / RAND_MAX) * 2.0f; diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index 3766929..add71a3 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -13,6 +13,18 @@ message Map optional int32 height = 3; //地图高度 } +message MapThing +{ + optional int32 thing_id = 1; //物件id + optional int32 type = 2; //类型 + optional int32 hight = 3; //高度 + optional int32 width = 4; //宽度 + optional int32 hp = 5; //生命 + optional float damage = 6; //伤害 + optional float damage_dia = 7; //伤害半径 + optional int32 drop = 8; //掉落 +} + message SafeArea { optional int32 id = 1; //id