merge dev3
This commit is contained in:
commit
04c0fe79e2
@ -34,13 +34,14 @@ void MapMgr::Init()
|
||||
MAP_GRID_WIDTH);
|
||||
CreateThings();
|
||||
a8::UdpLog::Instance()->Info
|
||||
("current_uniid:%d loots:%d spawn_points:%d "
|
||||
("current_uniid:%d loots:%d mini_room_spawn_points:%d normal_room_spawn_points:%d "
|
||||
"building_num:%d obstalce_num:%d obstacle0_num:%d "
|
||||
"obstacle1_num:%d obstacle2_num:%d",
|
||||
{
|
||||
current_uniid_,
|
||||
loots_.size(),
|
||||
spawn_points_.size(),
|
||||
mini_room_spawn_points_.size(),
|
||||
normal_room_spawn_points_.size(),
|
||||
building_num_,
|
||||
obstacle_num_,
|
||||
obstacle0_num_,
|
||||
@ -66,7 +67,8 @@ void MapMgr::AttachRoom(Room* room, RoomInitInfo& init_info)
|
||||
init_info.map_meta = map_meta_;
|
||||
init_info.grid_service = grid_service_;
|
||||
init_info.map_service = map_service_;
|
||||
init_info.spawn_points = &spawn_points_;
|
||||
init_info.mini_room_spawn_points = &mini_room_spawn_points_;
|
||||
init_info.normal_room_spawn_points = &normal_room_spawn_points_;
|
||||
init_info.level0room_born_point_meta = level0room_born_point_;
|
||||
init_info.level1room_born_point_meta = level1room_born_point_;
|
||||
init_info.loots = &loots_;
|
||||
@ -99,11 +101,23 @@ void MapMgr::CreateThings()
|
||||
break;
|
||||
case kMOT_SpawnPoint:
|
||||
{
|
||||
std::string point_name = thing_tpl.i->name();
|
||||
//pointxxx
|
||||
if (point_name.size() < 6) {
|
||||
abort();
|
||||
}
|
||||
std::string name_part = point_name.substr(0, 5);
|
||||
std::string id_part = point_name.substr(5, point_name.size() - 5);
|
||||
int point_id = a8::XValue(id_part);
|
||||
if (spawn_points_hash.find(thing_tpl.i->name()) !=
|
||||
spawn_points_hash.end()) {
|
||||
abort();
|
||||
}
|
||||
spawn_points_.push_back(&thing_tpl);
|
||||
if (point_id <= 100) {
|
||||
normal_room_spawn_points_.push_back(&thing_tpl);
|
||||
} else {
|
||||
mini_room_spawn_points_.push_back(&thing_tpl);
|
||||
}
|
||||
spawn_points_hash[thing_tpl.i->name()] = &thing_tpl;
|
||||
}
|
||||
break;
|
||||
@ -116,10 +130,12 @@ void MapMgr::CreateThings()
|
||||
if (spawn_points_hash.find(MetaMgr::Instance()->newbie_born_point) !=
|
||||
spawn_points_hash.end()) {
|
||||
level0room_born_point_ = spawn_points_hash[MetaMgr::Instance()->newbie_born_point];
|
||||
mini_room_spawn_points_.push_back(level0room_born_point_);
|
||||
}
|
||||
if (spawn_points_hash.find(MetaMgr::Instance()->level1room_born_point) !=
|
||||
spawn_points_hash.end()) {
|
||||
level1room_born_point_ = spawn_points_hash[MetaMgr::Instance()->level1room_born_point];
|
||||
mini_room_spawn_points_.push_back(level1room_born_point_);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,8 @@ class MapMgr : public a8::Singleton<MapMgr>
|
||||
MetaData::Map* map_meta_ = nullptr;
|
||||
MapService* map_service_ = nullptr;
|
||||
GridService* grid_service_ = nullptr;
|
||||
std::vector<MetaData::MapTplThing*> spawn_points_;
|
||||
std::vector<MetaData::MapTplThing*> mini_room_spawn_points_;
|
||||
std::vector<MetaData::MapTplThing*> normal_room_spawn_points_;
|
||||
MetaData::MapTplThing* level0room_born_point_ = nullptr;
|
||||
MetaData::MapTplThing* level1room_born_point_ = nullptr;
|
||||
std::vector<MetaData::MapTplThing*> loots_;
|
||||
|
@ -26,7 +26,9 @@
|
||||
#include "entityfactory.h"
|
||||
#include "perfmonitor.h"
|
||||
|
||||
const int ROOM_MAX_PLAYER_NUM = 40;
|
||||
const size_t NORMAL_ROOM_MAX_PLAYER_NUM = 40;
|
||||
const size_t MINI_ROOM_MAX_PLAYER_NUM = 20;
|
||||
|
||||
const int SHUA_RANGE = 580;
|
||||
|
||||
static long long RoomXGetTickCount(void* context)
|
||||
@ -51,7 +53,8 @@ void Room::InitData(RoomInitInfo& init_info)
|
||||
grid_service = init_info.grid_service;
|
||||
map_service = init_info.map_service;
|
||||
map_meta_ = init_info.map_meta;
|
||||
spawn_points_ = init_info.spawn_points;
|
||||
mini_room_spawn_points_ = init_info.mini_room_spawn_points;
|
||||
normal_room_spawn_points_ = init_info.normal_room_spawn_points;
|
||||
level0room_born_point_meta_ = init_info.level0room_born_point_meta;
|
||||
level1room_born_point_meta_ = init_info.level1room_born_point_meta;
|
||||
loots_ = init_info.loots;
|
||||
@ -261,7 +264,7 @@ void Room::ShowAndroid(Human* target, int num)
|
||||
void Room::CreateAndroid(int robot_num)
|
||||
{
|
||||
for (int i = 0; i < robot_num; ++i) {
|
||||
if (human_hash_.size() >= ROOM_MAX_PLAYER_NUM) {
|
||||
if (human_hash_.size() >= GetRoomMaxPlayerNum()) {
|
||||
return;
|
||||
}
|
||||
MetaData::Robot* robot_meta = MetaMgr::Instance()->RandRobot(refreshed_robot_set_);
|
||||
@ -667,7 +670,7 @@ bool Room::CanJoin(const std::string& accountid, RoomType_e self_room_type)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return GetPlayerNum() < ROOM_MAX_PLAYER_NUM;
|
||||
return GetPlayerNum() < (int)GetRoomMaxPlayerNum();
|
||||
}
|
||||
|
||||
void Room::OnPlayerOffline(Player* hum)
|
||||
@ -881,8 +884,13 @@ 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);
|
||||
if (IsMiniRoom()) {
|
||||
gas_data_.old_area_meta = MetaMgr::Instance()->GetSafeArea(60001);
|
||||
gas_data_.new_area_meta = MetaMgr::Instance()->GetSafeArea(60002);
|
||||
} else {
|
||||
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,
|
||||
@ -898,8 +906,8 @@ void Room::UpdateGasInactive()
|
||||
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());
|
||||
if (human_hash_.size() < GetRoomMaxPlayerNum()) {
|
||||
CreateAndroid(GetRoomMaxPlayerNum() - human_hash_.size());
|
||||
NotifyUiUpdate();
|
||||
}
|
||||
CombineTeam();
|
||||
@ -1545,10 +1553,16 @@ BornPoint* Room::GetBornPoint(int point_uniid)
|
||||
|
||||
void Room::CreateSpawnPoints()
|
||||
{
|
||||
if (!spawn_points_ || spawn_points_->empty()) {
|
||||
const std::vector<MetaData::MapTplThing*>* spawn_points = nullptr;
|
||||
if (IsMiniRoom()) {
|
||||
spawn_points = mini_room_spawn_points_;
|
||||
} else {
|
||||
spawn_points = normal_room_spawn_points_;
|
||||
}
|
||||
if (!spawn_points || spawn_points->empty()) {
|
||||
abort();
|
||||
}
|
||||
for (auto& thing_tpl : *spawn_points_) {
|
||||
for (auto& thing_tpl : *spawn_points) {
|
||||
int uniid = AllocUniid();
|
||||
BornPoint born_point;
|
||||
born_point.thing_tpl = thing_tpl;
|
||||
@ -1688,7 +1702,7 @@ void Room::SecondRandPoint()
|
||||
#endif
|
||||
if (room_type_ == RT_NewBrid || room_type_ == RT_MidBrid) {
|
||||
std::vector<Human*> tmp_humans;
|
||||
tmp_humans.reserve(ROOM_MAX_PLAYER_NUM);
|
||||
tmp_humans.reserve(GetRoomMaxPlayerNum());
|
||||
for (auto& pair : human_hash_) {
|
||||
if (pair.second->IsAndroid() &&
|
||||
a8::HasBitFlag(pair.second->status, HS_Disable) &&
|
||||
@ -2405,7 +2419,7 @@ void Room::AddPlayerPostProc(Player* hum)
|
||||
}
|
||||
}
|
||||
}
|
||||
while (human_hash_.size() > ROOM_MAX_PLAYER_NUM) {
|
||||
while (human_hash_.size() > GetRoomMaxPlayerNum()) {
|
||||
RandRemoveAndroid();
|
||||
}
|
||||
#ifdef DEBUG
|
||||
@ -2831,3 +2845,20 @@ void Room::ShuaLastGas()
|
||||
CheckPartObjects();
|
||||
#endif
|
||||
}
|
||||
|
||||
bool Room::IsMiniRoom()
|
||||
{
|
||||
return
|
||||
GetRoomType() == RT_NewBrid ||
|
||||
GetRoomType() == RT_MidBrid ||
|
||||
GetRoomType() == RT_OldBrid1;
|
||||
}
|
||||
|
||||
size_t Room::GetRoomMaxPlayerNum()
|
||||
{
|
||||
if (IsMiniRoom()) {
|
||||
return MINI_ROOM_MAX_PLAYER_NUM;
|
||||
} else {
|
||||
return NORMAL_ROOM_MAX_PLAYER_NUM;
|
||||
}
|
||||
}
|
||||
|
@ -196,6 +196,8 @@ private:
|
||||
void CheckShowHand();
|
||||
void ShowHand();
|
||||
void ShuaLastGas();
|
||||
bool IsMiniRoom();
|
||||
size_t GetRoomMaxPlayerNum();
|
||||
|
||||
#ifdef DEBUG
|
||||
void InitDebugInfo();
|
||||
@ -208,7 +210,8 @@ private:
|
||||
const MetaData::Map* map_meta_ = nullptr;
|
||||
std::string map_tpl_name_;
|
||||
RoomType_e room_type_ = RT_NewBrid;
|
||||
const std::vector<MetaData::MapTplThing*>* spawn_points_ = nullptr;
|
||||
const std::vector<MetaData::MapTplThing*>* mini_room_spawn_points_ = nullptr;
|
||||
const std::vector<MetaData::MapTplThing*>* normal_room_spawn_points_ = nullptr;
|
||||
const MetaData::MapTplThing* level0room_born_point_meta_ = nullptr;
|
||||
const MetaData::MapTplThing* level1room_born_point_meta_ = nullptr;
|
||||
const std::vector<MetaData::MapTplThing*>* loots_ = nullptr;
|
||||
|
@ -159,7 +159,8 @@ struct RoomInitInfo
|
||||
std::string map_tpl_name;
|
||||
GridService* grid_service = nullptr;
|
||||
MapService* map_service = nullptr;
|
||||
const std::vector<MetaData::MapTplThing*>* spawn_points = nullptr;
|
||||
const std::vector<MetaData::MapTplThing*>* mini_room_spawn_points = nullptr;
|
||||
const std::vector<MetaData::MapTplThing*>* normal_room_spawn_points = nullptr;
|
||||
const MetaData::MapTplThing* level0room_born_point_meta = nullptr;
|
||||
const MetaData::MapTplThing* level1room_born_point_meta = nullptr;
|
||||
const std::vector<MetaData::MapTplThing*>* loots = nullptr;
|
||||
|
Loading…
x
Reference in New Issue
Block a user