⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.h

📁 这是一个服务端/客户端模式的小型网络游戏
💻 H
字号:
#ifndef _CLIENT_H_
#define _CLIENT_H_

// # of message to allocate for message queue
#define NUM_MESSAGES       1024

// Types of messages
#define MSG_CREATE_PLAYER     1
#define MSG_PLAYER_INFO       2
#define MSG_DESTROY_PLAYER    3
#define MSG_STATE_CHANGE      4
#define MSG_SPELL_CHANGE	  5
#define MSG_ATTACK_CHANGE	  6
#define MSG_ROUTINE_CHANGE	  7
#define MSG_ALTER_EFFECT	  8	  
#define MSG_INIT_FILE		  9	  
#define MSG_RELIVE_CHANGE	  10
#define MSG_ITEM_CHANGE		  11
#define MSG_ASSIGNID        256

// Types of messages
#define MSG_FAILED     1
#define MSG_MISSED     2
#define MSG_DODGED	  3
#define MSG_ALTERHP	  4


#define MSG_ICS			1
#define MSG_CHARACTER	2


class cApp;

// The message header structure used in all messages
typedef struct {
  long  Type;             // Type of message (MSG_*)
  long  Size;             // Size of data to send
  union{
  DPNID PlayerID;         // Player performing action
  long ID;
  };
} sMessageHeader;

// The message queue message structure
typedef struct {
  sMessageHeader Header;  // Message header

  char Data[512];        // Message data
} sMessage;


// The message queue message structure
typedef struct {
  sMessageHeader Header;  // Message header
  long FileSize;
  char FileType;

  char Data[500];         // Message data
} sFileMessage;

// Request a player DPNID from server message
typedef struct {
  sMessageHeader Header;  // Message header
} sAssignPlayerIDMessage;

// Create a player message
typedef struct {
  sMessageHeader Header;  // Message header

  float XPos, YPos, ZPos; // Create player coordinates
  float Direction;        // Direction of player
  long  Definition;       
  long Type;
  long AI;
  long Action;
  char Name[32];
} sCreatePlayerMessage;

// Request player information message
typedef struct {
  sMessageHeader Header;  // Message header

  DPNID PlayerID;         // Which player to request
} sRequestPlayerInfoMessage;

// Destroy a player message
typedef struct {
  sMessageHeader Header;  // Message header
} sDestroyPlayerMessage;

// Change in state message
typedef struct {
  sMessageHeader Header;  // Message header

  long  Action;            // State message (STATE_*)
  union{
  float Direction;        // Player facing direction
  long AttackerDpnid; // Spell target coords
  };

} sStateChangeMessage;

// Change in state message
typedef struct {
  sMessageHeader Header;  // Message header

  long  Experience;            // State message (STATE_*)

} sReliveChangeMessage;


// Change in state message
typedef struct {
  sMessageHeader Header;  // Message header

  float XPos, YPos, ZPos; // Player coordinates
  float Direction;        // Player facing direction

  long  Time;               // Time of last state update
} sRoutineChangeMessage;

// Change in spell message
typedef struct {
  sMessageHeader Header;  // Message header

  long SpellNum, SpellTarget; // Player coordinates
  float TargetX, TargetY, TargetZ; // Spell target coords
  //float Direction;        // Player facing direction

} sSpellChangeMessage;

// Change in spell message
typedef struct {
  sMessageHeader Header;  // Message header

  long  VictimDpnid;            // State message (STATE_*)
 // long AttackerDpnid; // Spell target coords

  //float  Direction;          // Latency value of connection
} sAttackChangeMessage;


// Change in spell message
typedef struct {
	sMessageHeader Header;  // Message header
	
	long EffectType;
	long HealthPoints;
	long ManaPoints;

	long  VictimDpnid;            // State message (STATE_*)
 long  AlterHPAmount;	
} sAlterEffectMessage;


// Change in spell message
typedef struct {
	sMessageHeader Header;  // Message header
	
	long ItemNum;
	BOOL IsAdd;
	long TargetDpnid;
} sItemChangeMessage;

///////////////////////////////////////////////////////////
// Proc Message
///////////////////////////////////////////////////////////


// The message queue message structure
typedef struct {
  sMessageHeader Header;  // Message header
  long  Time; 
} sTimeMessage;

// Request a player DPNID from server message
typedef struct {
  sMessageHeader Header;  // Message header
} sAssignPlayerIDProcMessage;

// Create a player message
typedef struct {
  sMessageHeader Header;  // Message header

  float XPos, YPos, ZPos; // Create player coordinates
  float Direction;        // Direction of player
  long  Definition;       
  long  Type;
  long  AI;
  long Action;
  char Name[32];
} sCreatePlayerProcMessage;

// The message queue message structure
typedef struct {
  sMessageHeader Header;  // Message header
  long FileSize;
  char FileType;

  char Data[500];         // Message data
} sFileProcMessage;


// Destroy a player message
typedef struct {
  sMessageHeader Header;  // Message header
} sDestroyPlayerProcMessage;

// Change in state message
typedef struct {
  sMessageHeader Header;  // Message header
  long  Time;               // Time of last state update

  long  Action;            // State message (STATE_*)
  union{
  float Direction;        // Player facing direction
  long AttackerID; // Spell target coords
  };
} sStateChangeProcMessage;

// Change in state message
typedef struct {
  sMessageHeader Header;  // Message header

  float XPos, YPos, ZPos; // Player coordinates
  float Direction;        // Player facing direction

} sRoutineChangeProcMessage;

// Change in spell message
typedef struct {
  sMessageHeader Header;  // Message header
  long  Time;               // Time of last state update

  long SpellNum, SpellTarget; // Player coordinates
  float TargetX, TargetY, TargetZ; // Spell target coords
 // float Direction;        // Player facing direction

} sSpellChangeProcMessage;


// Change in state message
typedef struct {
  sMessageHeader Header;  // Message header

  long  Experience;            // State message (STATE_*)

} sReliveChangeProcMessage;

// Change in spell message
typedef struct {
  sMessageHeader Header;  // Message header
  long  Time;               // Time of last state update

  long  VictimID;            // State message (STATE_*)
 // long AttackerDpnid; // Spell target coords

  //float  Direction;          // Latency value of connection
} sAttackChangeProcMessage;


// Change in spell message
typedef struct {
	sMessageHeader Header;  // Message header
	long  Time;               // Time of last state update
	
	long EffectType;
	long HealthPoints;
	long ManaPoints;
	long  VictimID;            // State message (STATE_*)

	 long  AlterHPAmount;
	
} sAlterEffectProcMessage;


///////////////////////////////////////////////////////////
// Client class definition
///////////////////////////////////////////////////////////
class cClient : public cNetworkClient
{
  private:
    BOOL ConnectComplete(DPNMSG_CONNECT_COMPLETE *Msg);
    BOOL Receive(DPNMSG_RECEIVE *Msg);
  public:
	cApp *m_App;
	BOOL m_Connected;  // Connection status
    BOOL SetData(cApp *App);
	cClient(){
	  m_Connected = FALSE;
	}
};




struct evenDpnidPlayer
{
    DPNID value;
	
    evenDpnidPlayer(const DPNID& val){
		value = val;
	}
	
    bool operator()(const sMessage& p) const{
		return  p.Header.PlayerID == value;
	}
	
};


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -