📄 m_gameserver.h
字号:
#ifndef GAMECITY_NETWORK_H
#include <string>
#include <mysql.h>
#define GAMECITY_NETWORK_H
//自定义消息数据
#define V_MSG_SYSLEVEL 34
#define V_MSG_USERLEVEL 35
#define V_MSG_NONE 33
#define MSG_SAY 33
#define SUB_MSG_SAYALL 33
#define SUB_MSG_SAYONE 34
#define SUB_MSG_SYSTEM 35
#define MSG_JOIN 34
#define MSG_LEAVE 35
#define SUB_MSG_LEAVE_ASK 33
#define SUB_MSG_LEAVE_OK 34
#define MSG_ROOM 36
#define MSG_ROOM_CREATE 33
#define MSG_ROOM_CREATE_OK 34
#define MSG_ROOM_CREATE_FAIL 35
#define MSG_ROOM_JOIN 36
#define MSG_ROOM_JOIN_OK 37
#define MSG_ROOM_JOIN_FAIL 38
#define MSG_ROOM_PLAYREADY 39
#define MSG_ROOM_GOPLAY 40
#define MSG_ROOM_ALL 41
#define MSG_ROOM_LEAVE 42
#define MSG_ROOM_PLAYER_LEAVE 43
#define MSG_ROOM_USER_CHANGE 44
#define MSG_ROOM_SWAPSLOT 45
#define MSG_ROOM_CHANGE 46
#define MSG_PLAY 37
#define MSG_PLAY_LEAVE 33
#define MSG_USERLOG 38
#define SUB_MSG_USER_ENTER 33
#define SUB_MSG_USER_DOWN 34
#define SUB_MSG_USER_UP 35
#define SUB_MSG_USER_QUIT 36
#define SUB_MSG_USER_ALL 37
#define SUB_MSG_USER_LOGIN 38
#define SUB_MSG_USER_ERROR1 39
#define SUB_MSG_LOGIN_ASK 40
#define SUB_MSG_LOGIN_PASS 41
#define SUB_MSG_LOGIN_NO 42
#define MSG_MOVE 39
#define SUB_MSG_MOVE_ME 33
#define SUB_MSG_MOVE_OTHER 34
#define NONE -1
#define ERROR -1
#define SocketBuf_MAX 4096
using namespace std;
class GamePlayerStatus {
public:
enum Status {Empty,Free,Room,Playing};
};
class GameServerStatus {
public:
enum Status {Empty,Waiting,Playing,End};
};
class BaseGamePlayer {
public:
int m_user_id;
unsigned int m_fd;
char m_name[20];
int m_room_id;
int m_sex;
int m_pos_x,m_pos_y;
int m_player_status,m_face_id,m_body_id;
int x1,x2,y1,y2;
string m_SocketBuf;
bool m_ReadyFlag;
GamePlayerStatus::Status m_status; //玩家状态
BaseGamePlayer(void);
virtual void init(unsigned int id,char *p_name)=0;
virtual void GetPlayerStatus(char *buf) =0 ;
virtual void clear(void)=0;
virtual void SetData(unsigned int fd,char *ext)=0;
void AddSocketBuf(char *);
int test_XY( int d_x,int d_y);
int SetXY(int u_x,int u_y);
};
class GamePlayer : public BaseGamePlayer { //玩家用户类
public:
GamePlayer(void);
void init(unsigned int id,char *p_name);
void GetPlayerStatus(char *buf);
void clear(void);
void SetData(unsigned int fd,char *ext);
};
class GameServer { //游戏规则类
public:
GameServerStatus::Status m_status;
BaseGamePlayer **m_GamePlayer;
int min_player;
int max_player;
int cur_player;
int m_room_id;
bool m_CanPlayFlag,m_TimeFlag;
int Players[500]; //玩家下标 0 为创建者
char room_name[40];
char room_passwd[40];
GameServer(void);
int GetPlayerSlot(int player_id);
void GetStatus(char *buf);
void Game_init(int room_id,int max); //原始初始化
void send_all(char *,int);
void send_all2(char *,int);
void send_playerlist(void);
int join(int player_id);
int leave(int player_id);
void play_change_slot(int player_id,int new_slot);
void GetAllPlayer(char *buf);
void PlayerReady(int player_id);
virtual void process(int player_id,char p_msg2,char p_msg3,char *p_data);
virtual void time_process(void);
void Round_init(void); //每局初始化
void Round_start(void) {} //每局初始化
void Round_process(void) {} //每局初始化
void Round_end(void) {} //每局初始化
virtual void Round_exit(void); //每局初始化
void Game_exit(void) ; //结束
};
class GameRoomServer { //游戏大厅类
private:
public:
int Max_GameServer;
int Max_GamePlayer;
int OnlinePlayer;
time_t up_time;
char My_version[20];
//通信变量部份
char p_level,p_msg1,p_msg2,p_msg3,p_data[1024];
GameServer *m_GameServer[100];
BaseGamePlayer *m_GamePlayer[1024];
GameRoomServer(void);
int FindGameServer(GameServerStatus::Status status);
int CreateGameServer(int player_id,char *param);
int JoinGameServer(int room_id,int player_id);
int LeaveGameServer(int room_id,int player_id);
int DeleteGameServer(int id);
int PlayerJoin(char *name,char *passwd);
int PlayerExit(char *name);
int CheckPlayerExist(char *name);
virtual int CheckPlayerLogin(const char *u_name,const char *u_pass,const char *u_ext) { return 0; }
//virtual int SavePlayerInfo(int player_id,const char *name)=0;
//int SavePlayerInfo(int player_id,const char *name);
int GetNewGamePlayer(void);
void GetAllPlayer(char *buf);
void ShowAllGame(void);
int FindPlayer_BySocket(unsigned int fd);
//信息处理
void process(Socket *socket, const char *data);
virtual void my_process(char p_msg1,char p_msg2,char p_msg3,char *p_data,int player_id,int server_n);
virtual void time_process(void);
void send_cmd_all (char p_level,char p_msg1,char p_msg2,char *msg,unsigned int filter_socket);
int SendAll(void);
};
class DataSQL {
public:
MYSQL mysql;
MYSQL_RES *result;
MYSQL_ROW row;
int num_rows,error_no;
char error_str[1024];
DataSQL(void);
int ConnectDB(const char *host,const char *user,const char *pass,const char *db);
int Query(const char *sql);
int DoQuery(const char *sql);
void FreeResult(void);
int GetData(void);
int CheckConnect(void);
};
void send_cmd_msg(char *buf,char p_level,char p_msg1,char p_msg2,char *p_data);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -