-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnetsession.h
101 lines (77 loc) · 2.37 KB
/
netsession.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//-----------------------------------------------------------------------------
// File: netSession
// Desc: net session
// Auth: Lyp
// Date: 2003/11/13
//
// Copyright (c) 1985-2003 CTCRST Entertainment All rights reserved.
//-----------------------------------------------------------------------------
#ifndef _BC_NETSESSION_H_
#define _BC_NETSESSION_H_
#pragma once
class CMsgList;
class CWinTcp;
class CApp;
#include "gDefine.h"
#define BC_MAX_GAME_MSG 128
#pragma pack(push)
#pragma pack(1)
//-----------------------------------------------------------------------------
// game msg
//-----------------------------------------------------------------------------
struct GameMsg
{
DWORD dwCmd;
DWORD dwTick;
BYTE byPlayerInput[MAX_PLAYER];
BYTE byComputer;
bool bValid;
bool bActivePlayer;
};
#pragma pack(pop)
#define GT_NET_CMD_TICK 0xffff1234 // 游戏命令
#define GT_NET_CMD_PLAYER 0x00000001 // 玩家命令
#define GT_NET_CMD_REQ_WORLD_INFO 0xffff0001 // 向主机发出申请初始化信息
#define GT_NET_CMD_WORLD_INFO 0xffff0002 // 向主机发出申请初始化信息
#define GT_NET_CMD_CUT_LINE 0xffff0004 // 断线
#define GT_NET_CMD_SYNC 0xffff0005 // 同步信息
#define GT_NET_CMD_SYNC_END 0xffff0006 // 结束发送同步信息
//-----------------------------------------------------------------------------
// 会话接口
//-----------------------------------------------------------------------------
class CSession
{
public:
BOOL Init(bool bServer);
void Destroy();
bool Update();
void SendCutLineMsg();
int GetReadyMsgNum();
CSession(CApp* pApp);
~CSession();
private:
DWORD m_dwLatency;
bool m_bServer;
CApp* m_pApp;
CWinTcp* m_pWinTcp;
CWinTcp* m_pSync;
bool m_bClientInitialized; // 客户端是否已经初始化
bool m_bRequireWorldInfoSended;
bool m_bClientPlayerActived;
DWORD m_dwWorldInfoSendTick;
DWORD m_dwLastGameTick;
DWORD m_dwGameTick;
// 组织好的游戏信息
CMsgList* m_pGameMsg;
// 未组织的游戏信息
int m_nMaxUncomposeGameMsg;
int m_nUncomposeGameMsg;
GameMsg m_UncomposeArray[BC_MAX_GAME_MSG*2]; // 哈西表
void SendLatencyCmd();
void SendWorldInfo(DWORD dwReceiverID);
void SetWorldInfo(BYTE* pNetMsg);
void ComposeAndSendGameMsg(DWORD dwGameTick);
bool AddUncomposeMsg(BYTE* pMsg);
void DelUncomposeMsg(int nIndex);
};
#endif // _BC_NETSESSION_H_