完善模式协议

This commit is contained in:
aozhiwei 2020-07-22 17:04:29 +08:00
parent ad43e3a120
commit db9a820e6b
8 changed files with 38 additions and 24 deletions

View File

@ -278,6 +278,18 @@ enum ObjectSyncFlags_e
kOsfIsDead = 0, kOsfIsDead = 0,
}; };
enum RoomMode_e
{
kChiJiMode = 0,
kZombieMode = 1
};
enum RaceType_e
{
kHumanRace = 1,
kZombieRace = 2
};
const char* const PROJ_NAME_FMT = "game%d_gameserver"; const char* const PROJ_NAME_FMT = "game%d_gameserver";
const char* const PROJ_ROOT_FMT = "/data/logs/%s"; const char* const PROJ_ROOT_FMT = "/data/logs/%s";

View File

@ -277,6 +277,7 @@ class Human : public MoveableEntity
void SetLastCollisionDoor(Entity* door) { last_collision_door_ = door; } void SetLastCollisionDoor(Entity* door) { last_collision_door_ = door; }
ObjectSyncFlags* GetObjectSyncFlags(int obj_uniid); ObjectSyncFlags* GetObjectSyncFlags(int obj_uniid);
void _UpdateMove(int speed); void _UpdateMove(int speed);
RaceType_e GetRace() { return race_; }
protected: protected:
void _InternalUpdateMove(float speed); void _InternalUpdateMove(float speed);
@ -355,6 +356,7 @@ protected:
MetaData::Skill* skill_meta_ = nullptr; MetaData::Skill* skill_meta_ = nullptr;
private: private:
RaceType_e race_ = kHumanRace;
CircleCollider* self_collider_ = nullptr; CircleCollider* self_collider_ = nullptr;
long long last_sync_gas_frameno = 0; long long last_sync_gas_frameno = 0;
std::list<Buff> buff_list_; std::list<Buff> buff_list_;

View File

@ -45,6 +45,7 @@ Room::~Room()
void Room::InitData(RoomInitInfo& init_info) void Room::InitData(RoomInitInfo& init_info)
{ {
room_idx_ = init_info.room_idx; room_idx_ = init_info.room_idx;
room_mode_ = init_info.room_mode;
room_uuid_ = init_info.room_uuid; room_uuid_ = init_info.room_uuid;
room_type_ = init_info.room_type; room_type_ = init_info.room_type;
creator_game_times_ = init_info.creator_game_times; creator_game_times_ = init_info.creator_game_times;

View File

@ -207,6 +207,7 @@ private:
private: private:
int room_idx_ = 0; int room_idx_ = 0;
RoomMode_e room_mode_ = kChiJiMode;
long long room_uuid_ = 0; long long room_uuid_ = 0;
const MetaData::Map* map_meta_ = nullptr; const MetaData::Map* map_meta_ = nullptr;
std::string map_tpl_name_; std::string map_tpl_name_;

View File

@ -130,8 +130,7 @@ void RoomMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg)
Room* room = GetJoinableRoom(msg, Room* room = GetJoinableRoom(msg,
self_room_type, self_room_type,
game_times, game_times,
register_time, register_time
msg.force_entry_newbie_room()
); );
if (!room) { if (!room) {
JoinErrorHandle(msg, 3, hdr.socket_handle); JoinErrorHandle(msg, 3, hdr.socket_handle);
@ -166,8 +165,7 @@ int RoomMgr::OverRoomNum()
Room* RoomMgr::GetJoinableRoom(const cs::CMJoin& msg, Room* RoomMgr::GetJoinableRoom(const cs::CMJoin& msg,
const RoomType_e self_room_type, const RoomType_e self_room_type,
int game_times, int game_times,
int creator_register_time, int creator_register_time
bool force_entry_newbie_room
) )
{ {
std::vector<std::vector<Room*>> group_rooms; std::vector<std::vector<Room*>> group_rooms;
@ -188,16 +186,16 @@ Room* RoomMgr::GetJoinableRoom(const cs::CMJoin& msg,
return group_rooms[self_room_type][rand() % group_rooms[self_room_type].size()]; return group_rooms[self_room_type][rand() % group_rooms[self_room_type].size()];
} }
if (self_room_type == RT_NewBrid) { if (self_room_type == RT_NewBrid) {
return CreateRoom(self_room_type, return CreateRoom(msg,
self_room_type,
game_times, game_times,
creator_register_time, creator_register_time);
force_entry_newbie_room);
} }
if (self_room_type == RT_MidBrid) { if (self_room_type == RT_MidBrid) {
return CreateRoom(self_room_type, return CreateRoom(msg,
self_room_type,
game_times, game_times,
creator_register_time, creator_register_time);
force_entry_newbie_room);
} }
for (int i = 0; i < RT_Max; ++i) { for (int i = 0; i < RT_Max; ++i) {
for (Room* room : group_rooms[i]) { for (Room* room : group_rooms[i]) {
@ -206,10 +204,10 @@ Room* RoomMgr::GetJoinableRoom(const cs::CMJoin& msg,
} }
} }
} }
return CreateRoom(self_room_type, return CreateRoom(msg,
self_room_type,
game_times, game_times,
creator_register_time, creator_register_time);
force_entry_newbie_room);
} }
Room* RoomMgr::GetRoomByUuid(long long room_uuid) Room* RoomMgr::GetRoomByUuid(long long room_uuid)
@ -382,10 +380,10 @@ int RoomMgr::AllocRoomIdx()
return current_room_idx_; return current_room_idx_;
} }
Room* RoomMgr::CreateRoom(RoomType_e room_type, Room* RoomMgr::CreateRoom(const cs::CMJoin& msg,
RoomType_e room_type,
int game_times, int game_times,
int creator_register_time, int creator_register_time)
bool force_entry_newbie_room)
{ {
int room_idx = AllocRoomIdx(); int room_idx = AllocRoomIdx();
if (room_idx < 1) { if (room_idx < 1) {
@ -398,7 +396,7 @@ Room* RoomMgr::CreateRoom(RoomType_e room_type,
init_info.room_type = room_type; init_info.room_type = room_type;
init_info.creator_game_times = game_times; init_info.creator_game_times = game_times;
init_info.creator_register_time = creator_register_time; init_info.creator_register_time = creator_register_time;
init_info.force_entry_newbie_room = force_entry_newbie_room; init_info.force_entry_newbie_room = msg.force_entry_newbie_room();
if (GetRoomByUuid(init_info.room_uuid)) { if (GetRoomByUuid(init_info.room_uuid)) {
abort(); abort();
} }

View File

@ -36,17 +36,16 @@ class RoomMgr : public a8::Singleton<RoomMgr>
Room* GetJoinableRoom(const cs::CMJoin& msg, Room* GetJoinableRoom(const cs::CMJoin& msg,
const RoomType_e self_room_type, const RoomType_e self_room_type,
int game_times, int game_times,
int creator_register_time, int creator_register_time);
bool force_entry_newbie_room);
void ReportServerState(int instance_id, const std::string& host, int port); void ReportServerState(int instance_id, const std::string& host, int port);
void FreeOverRoom(long long room_uuid); void FreeOverRoom(long long room_uuid);
bool IsLimitJoin(); bool IsLimitJoin();
int AllocRoomIdx(); int AllocRoomIdx();
Room* CreateRoom(RoomType_e room_type, Room* CreateRoom(const cs::CMJoin& msg,
RoomType_e room_type,
int game_times, int game_times,
int creator_register_time, int creator_register_time);
bool force_entry_newbie_room);
void JoinErrorHandle(const cs::CMJoin& msg, int error_code, int socket_handle); void JoinErrorHandle(const cs::CMJoin& msg, int error_code, int socket_handle);
private: private:

View File

@ -151,6 +151,7 @@ class Building;
struct RoomInitInfo struct RoomInitInfo
{ {
int room_idx = 0; int room_idx = 0;
RoomMode_e room_mode = kChiJiMode;
long long room_uuid = 0; long long room_uuid = 0;
RoomType_e room_type = RT_NewBrid; RoomType_e room_type = RT_NewBrid;
int creator_game_times = 0; int creator_game_times = 0;

View File

@ -698,6 +698,7 @@ message MFPosition
optional int32 obj_uniid = 1; //id optional int32 obj_uniid = 1; //id
optional MFVec2 pos = 2; // optional MFVec2 pos = 2; //
optional MFVec2 dir = 3; // optional MFVec2 dir = 3; //
optional int32 race = 4; //1: 2:
} }
//end mfmsg //end mfmsg
@ -910,8 +911,7 @@ message SMUpdate
// //
repeated int32 revive_objids = 41; // repeated int32 revive_objids = 41; //
repeated MFTuple dead_objs = 42; //values[0]:objid values[1]: repeated MFTuple dead_objs = 42; //values[0]:objid values[1]:
repeated MFPosition zombie_positions = 43; // repeated MFPosition object_positions = 43; //,part_objects则可能不发,part_objects里的左边更新小地图
repeated MFPosition human_positions = 44; //
optional int32 game_left_time = 45; //(, ) optional int32 game_left_time = 45; //(, )
} }