?? mirgame.h
字號(hào):
// MirGame.h: interface for the CMirGame class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MIRGAME_H__C95390B9_4D2A_4493_917D_9AE1FF626D68__INCLUDED_)
#define AFX_MIRGAME_H__C95390B9_4D2A_4493_917D_9AE1FF626D68__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "mirmsg.h"
#include "mirsocket.h"
#include "mirminimap.h"
#include "mirgamemap.h"
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;
enum __SEX
{
MAN = 0,
WOMAN = 1,
};
enum __PROF
{
FIGHTER = 0,
MAGICMAN = 1,
TAOSHI = 2,
};
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,
};
enum __MSGCMD
{
};
enum __ERRINFO
{
ERR_LOGIN_OK,
ERR_LOGIN_WRONGPASSWORD,
ERR_LOGIN_NOTREGISTERED,
ERR_LOGIN_WRONGPASSWORDTHREETIMES,
ERR_MODIFYPASS_OK,
ERR_MODIFYPASS_WRONGPASSWORD,
ERR_REGNEWACCOUNT_OK,
ERR_REGNEWACCOUNT_NAMEUSED,
ERR_REGNEWACCOUNT_WRONGCHAR,
};
enum __ATTACKMODE
{
ATM_ALL, // 全體攻擊模式
ATM_PIECE, // 和平
ATM_GROUP, // 編組
ATM_GUILD, // 行會(huì)
ATM_ENEMY, // 敵我
};
enum __CHARSTATE
{
CST_NORMAL, // 正常狀態(tài)
CST_GREENPOISON = 1, // 綠毒
CST_REDPOISON = 2, // 紅毒
CST_PAUSED = 4, // 麻痹
CST_ACTING = 8, // 動(dòng)作中(等待#+GOOD或者#+FAIL)
};
enum __ACTION
{
ACT_STAND, // 站立,無(wú)動(dòng)作
ACT_WALK, // 走路
ACT_RUN, // 跑步
ACT_ATTACK, // 攻擊
ACT_SKILL, // 魔法技能攻擊
};
enum __DIRECTION
{
DIR_UP = 0,
DIR_UR = 1,
DIR_RT = 2,
DIR_DR = 3,
DIR_DN = 4,
DIR_DL = 5,
DIR_LT = 6,
DIR_UL = 7,
};
#define MSGQUEUELEN 1024
typedef char TMSGLINE[MSGLENGTH];
class CMsgQueue2
{
public:
CMsgQueue2()
{
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 )
{
int iNext = NextPos( m_iPut );
if( pMsg == NULL )
return 0;
if( iNext == m_iGet )
{
return 0;
}
strcpy( m_Msgs[m_iPut], pMsg );
m_iPut = iNext;
return 1;
};
int GetMsg( char * pMsg )
{
if( m_iGet == m_iPut )
return 0;
strcpy( pMsg, m_Msgs[m_iGet] );
// printf( "m_iPut = %d, m_iGet = %d\n", m_iPut, m_iGet );
m_iGet = NextPos( m_iGet );
return 1;
};
int Clear()
{
memset( (void*)m_Msgs, 0, sizeof( TMSGLINE ) * MSGQUEUELEN );
return 1;
};
private:
TMSGLINE m_Msgs[MSGQUEUELEN];
int m_iGet;
int m_iPut;
};
typedef char TSTRING[256];
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;
DWORD MessageProc( PVOID * p );
class CMirGame
{
public:
friend DWORD MessageProc( PVOID * p );
void Walk( int dir );
BOOL SelectChar( char * charname );
BOOL GetSelCharInfo( SELCHARINFO * pInfo );
BOOL EnterServer( char * ServerName );
BOOL Login( char * username, char * password );
BOOL OpenGateServer( char * ip );
int GetString( char * string );
public:
void LogToList( HWND hList, char * line );
void LogChat( char * line,... );
void LogSystem( char * line,... );
public:
BOOL EnterGame( int CharIndex );
BOOL CloseAll();
BOOL EnterSelCharServer();
BOOL CloseGateServer();
BOOL InitLogSystem( HWND hSysLog, HWND hChatLog, int MaxLine);
BOOL GetMsgInfo( SOCKET s );
BOOL GetMsg( MMSG * pMsg );
public:
BOOL RunThrough( int dir );
CMirMiniMap * GetMiniMap();
CMirGameMap * GetGameMap();
void SetCharacterPos( int x, int y );
void Turn( int dir );
void Run(int dir );
void HandleCommand( char * command );
BOOL CloseSelCharServer();
BOOL Logout();
BOOL Say( char * word, ...);
BOOL StartGame();
CMirGame();
virtual ~CMirGame();
private:
CMsgQueue2 m_MsgQueue;
DWORD m_dwGameState;
SOCKET m_sGate;
SOCKET m_sSelChar;
SOCKET m_sGame;
SELCHARINFO m_SelCharInfo;
BOOL m_bInGame;
char m_Account[32];
char m_SelCharIp[20];
char m_GameServerIp[20];
int m_SelCharPort;
int m_GameServerPort;
char m_SID[32];
private:
void ActionFail();
void ActionOk();
BOOL CanDoAction();
private:
int m_LeftHours;
HWND m_hSysLog;
HWND m_hChatLog;
TSTRING m_StringList[20];
int m_MaxLogLine;
char * m_tmpBuffer;
char * m_tmpBuffer2;
char * m_MsgLeftBuf;
ACTION_LAST m_LastAction;
CHARACTERINFO m_CharSelf;
CMirMsg m_MirMsg;
CMirSocket m_MirSocket;
CMirMiniMap m_MiniMap;
CMirGameMap m_GameMap;
};
#endif // !defined(AFX_MIRGAME_H__C95390B9_4D2A_4493_917D_9AE1FF626D68__INCLUDED_)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -