📄 mirgame.h
字号:
// MirGame.h: interface for the CMirGame class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MIRGAME_H__B9B8E71E_3F47_45C0_957C_C19D2AD7BE38__INCLUDED_)
#define AFX_MIRGAME_H__B9B8E71E_3F47_45C0_957C_C19D2AD7BE38__INCLUDED_
#include "MirSocket.h" // Added by ClassView
#include "MirMsg.h"
//#include "MirGameMap.h"
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define MIRVERSION "<mir152>"
#define BUFFERLENGTH 4096
enum _action
{
ACTION_STAND,
ACTION_WALK,
ACTION_ATTACK,
ACTION_RUN,
ACTION_TRUN,
ACTION_RUNTHROUGH,
};
typedef struct
{
int x;
int y;
int dir;
int action;
}ACTION_LAST;
typedef struct
{
DWORD dwGold;
WORD wCmd;
BYTE bProf;
BYTE bHair;
BYTE bSex;
BYTE bOO;
WORD wUnknow;
BYTE bLevel;
BYTE bunknow;
BYTE ACHi;
BYTE ACLow;
BYTE MACHi;
BYTE MACLow;
BYTE DCHi;
BYTE DCLow;
BYTE MCHi;
BYTE MCLow;
BYTE SCHi;
BYTE SCLow;
WORD Hp;
WORD Mp;
WORD MaxHp;
WORD MaxMp;
DWORD dwUnknow;
DWORD Exp;
DWORD MaxExp;
WORD BagWeight;
WORD MaxBagWeight;
BYTE BodyWeight;
BYTE MaxBodyWeight;
BYTE HandWeight;
BYTE MaxHandWeight;
}MMSGSETCHARINFO;
enum __GAMESTATE
{
MGS_NOCONNECTION,
MGS_GATECONNECTED,
MGS_WAITINGCHECKINFO,
MGS_MAKECLIENTINFO,
MGS_WAITINGCHECKPASS,
MGS_CLIENTCHECKPASSED,
MGS_MODIFYPASSWORDWAIT,
MGS_REGNEWACCOUNTWAIT,
MGS_LOGINWAITING,
MGS_SELECTSERVER,
MGS_WAITFORSELCHARADDRESS,
MGS_GOTSELCHARADDRESS,
MGS_SELCHARCONNECTED,
MGS_WAITFORSELCHARVERIFY,
MGS_WAITFORSELCHAR,
MGS_WAITFORGAMESERVERADDRESS,
MGS_GAMESERVERCONNECTED,
MGS_WAITFORGAMESERVERVERIFY,
MGS_WAITFORENTERGAME,
MGS_ENTEREDGAME,
};
typedef struct
{
char Name[64];
int prof;
int sex;
int level;
int hair;
}CHARBASEINFO;
typedef struct
{
CHARBASEINFO Chars[2];
int CharCount;
int ActiveChar;
}SELCHARINFO;
typedef struct
{
int min;
int max;
}MAXMININFO;
typedef struct
{
int low;
int hi;
}LOWHIINFO;
typedef struct
{
DWORD dwServerId;
char Name[64];
int prof;
int sex;
int level;
int hair;
int pos_x;
int pos_y;
LOWHIINFO AC;
LOWHIINFO MAC;
LOWHIINFO DC;
LOWHIINFO MC;
LOWHIINFO SC;
MAXMININFO HandWeight;
MAXMININFO BodyWeight;
MAXMININFO BagWeight;
MAXMININFO Hp;
MAXMININFO Mp;
MAXMININFO Exp;
int Zhunque;
int Minjie;
int MagicAgainst;
int PoisonAgainst;
int PoisonRecover;
int HpRecover;
int MpRecover;
}CHARACTERINFO;
#define MSGQUEUELEN 1024
typedef char TMSGLINE[MSGLENGTH];
class CMsgQueue2
{
private:
CCriticalSection*pCS;
public:
CMsgQueue2()
{
pCS=new CCriticalSection();
m_iGet = 0;
m_iPut = 0;
Clear();
};
virtual ~CMsgQueue2()
{
Clear();
};
int NextPos( int now )
{
now++;
if( now >= MSGQUEUELEN )
now = 0;
return now;
}
int PutMsg( char * pMsg )
{
//pCS->Lock();
int iNext = NextPos( m_iPut );
if(pMsg!=NULL)
if(iNext!=m_iGet)
{
strcpy( m_Msgs[m_iPut], pMsg );
m_iPut = iNext;
//pCS->Unlock();
return 1;
}
//pCS->Unlock();
return 0;
};
int GetMsg( char * pMsg )
{
//pCS->Lock();
if( m_iGet == m_iPut )
{
//pCS->Unlock();
return 0;
}
strcpy( pMsg, m_Msgs[m_iGet] );
m_iGet = NextPos( m_iGet );
//pCS->Unlock();
return 1;
};
int Clear()
{
//pCS->Lock();
memset( (void*)m_Msgs, 0, sizeof( TMSGLINE ) * MSGQUEUELEN );
//pCS->Unlock();
return 1;
};
private:
TMSGLINE m_Msgs[MSGQUEUELEN];
int m_iGet;
int m_iPut;
};
class CMirGame
{
public:
void Walk(int dir);
BOOL Say(CString s);
void Run(int dir);
BOOL m_bInWorld;
DWORD GameLoop();
friend DWORD MessageProc( PVOID * p );
BOOL BeginGame(CString ServerName,CString ServerIP,CString Account,CString Password,int Character);
BOOL Logout();
CMirGame();
virtual ~CMirGame();
protected:
BOOL CanDoAction();
void SetCharacterPos(int x, int y);
void LogSystem(LPCTSTR line);
BOOL m_bInGame;
BOOL CloseSelCharServer();
BOOL EnterGame(int CharIndex);
int GetString(char*string);
BOOL EnterServer(LPCTSTR ServerName);
BOOL EnterSelCharServer();
BOOL Login(LPCTSTR username,LPCTSTR password);
BOOL OpenGataServer(LPCTSTR ServerIP);
BOOL CloseGateServer();
BOOL StartGame();
BOOL GetMsg(MMSG*pMsg);
void ActionFail();
void ActionOk();
CString m_StringList[20];
SOCKET m_sGate;
SOCKET m_sSelChar;
SOCKET m_sGame;
DWORD m_dwGameState;
CMirMsg m_MirMsg;
CMirSocket m_MirSocket;
CHARACTERINFO m_CharSelf;
SELCHARINFO m_SelCharInfo;
int m_SelCharPort;
CString m_SelCharIP;
int m_Character;
CString m_ServerName;
CString m_ServerIP;
CString m_Account;
CString m_Password;
CString m_SID;
ACTION_LAST m_LastAction;
CMsgQueue2 m_MsgQueue;
//CMirGameMap m_GameMap;
char*tmpBuffer;
char*tmpBuffer2;
};
#endif // !defined(AFX_MIRGAME_H__B9B8E71E_3F47_45C0_957C_C19D2AD7BE38__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -