www.pudn.com > XmudOSr.rar > MainScreen.h


// MainScreen.h: interface for the CMainScreen class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_MAINSCREEN_H__BEFA2100_5F8C_11D3_BA84_0000E8A021D8__INCLUDED_) 
#define AFX_MAINSCREEN_H__BEFA2100_5F8C_11D3_BA84_0000E8A021D8__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "DragBar.h" 
 
int  GetStrWidth(CString str, BOOL bUseMessageFont); 
 
enum FirstFDState 
{ 
	SHOWEQUIP = 1,  //装备 
	SHOWSKILL,      //技能 
	SHOWCHANNEL,    //频道 
	SHOWCHANNELUSER,//玩家 
	SHOWNPCSKILL,   //NPC技能 
	SHOWNPCEQUIP,   //NPC装备 
	SHOWFRIEND,     //好友名单 
	SHOWALLONLINEUSERS, //线上名单 
	// Nuke +1 
	SHOWNPCASK,//询问的关键字 
	SHOWRENTEQUIP,  // 
}; 
 
typedef struct tagOldMsg 
{ 
	CString szAsk; 
	CString szDaZuo; 
	CString szTuNa; 
	CString szYunGong; 
	CString szUse; 
	CString szLook; 
	CString szGive; 
	CString szGive2; 
	CString szGet; 
	CString szDrop; 
	CString szArm; 
	CString szUnArm; 
	CString szPractice; 
	CString szFormat; 
	CString szAssign; 
	CString szCancel; 
 
	CString szTell; 
	CString szLearn; 
//	CString szEat; 
//	CString szDrink; 
	CString szEmote; 
	CString szMusic; 
	CString szMapping; 
	CString szMapping2; 
	tagOldMsg() 
	{ 
		szMusic = "MusicOFF"; 
	} 
}TOldMsg; 
 
class CMainScreen   
{ 
public://系统总的信息区 
	RECT rcMainSurfaceSource;//全屏资源 
	enum MouseInField {//鼠标当前所在区域 
		FieldUnknown, 
		_3DField, 
		FirstField, 
		SecondField, 
		SysUseField, 
		UserUseField, 
		InputMsgField, 
		TalkMessField, 
		ClearScreenField 
	}nMouseWorkField;//变量,工作的区域 
 
	//鼠标功能设定说明: 鼠标状态值能为下面介绍的几种之一, 
	//    当用户按下鼠标左键后,右键即没反映,反之也一样. 
	//    当处于拖动状态时,只有松键才有作用 
	enum MouseState {//鼠标当前状态 
		MouseNone, 
		LButtonDown, 
		RButtonDown, 
		LButtonDrag, 
		RButtonDrag 
	}nMouseState;   
 
	//屏幕第一滚动条区(上边) 
	RECT rcFirstField; 
	//屏幕第二滚动条区(下边) 
	RECT rcSecondField; 
	//功能区一(系统功能,武功、装备等) 
	RECT rcSysUseField; 
	//功能区二(用户功能,练功、拜师等) 
	RECT rcUserUseField;	 
	//命令输入框区 
	RECT rcInputMsgField; 
	//对话信息区 
	RECT rcTalkMessField; 
	//3d信息区 
	RECT rc3DField; 
 
	BOOL bClearScreen;//清除窗口按钮 
	BOOL bClearScrRed;//鼠标是否在上边 
	RECT rcClearScreen; 
	RECT rcClearScreenDownSource; 
	RECT rcClearScreenOnSource; 
 
public://第一滚动条区数据//mFirstFD 
	struct FIRSTFIELD  
  { 
		BOOL bReDraw[2];			//是否要重画 
		int nShowState;			//第一区显示的状态,(装备?技能?频道?玩家?) 
 
		RECT rcBars[8];			//各条信息条位置(最多8条信息) 
		RECT rcRectBarSour;		//线条框资源位置 
		CDragBar mDragBar;		//拖动条 
		FIRSTFIELD():mDragBar(8,189,189,202,363){};//初始化拖动条 
		void ResetCount(); 
	}mFirstFD; 
 
public://第二滚动条区数据//mSecondFD 
//second button 
#define SNB_WIDTH	58 
#define SNB_HEIGHT	21 
//emote type 
#define EMT_HAVE_TARGET 0x1 
#define EMT_HAVE_NONAME 0x2 
#define EMT_HAVE_SELF   0x4 
#define EMT_SHOW_CHINESE 1 
#define EMT_SHOW_ENGLISH 0 
//emote kind 
#define ETK_smile	1 
#define ETK_angry	2 
#define ETK_cry		3 
#define ETK_other	4 
	typedef struct tagEmote 
	{ 
		int nKind;//种类,如哭,笑... 
		CString szCEmote; 
		CString szEmote; 
		int nType;//有哪几种用法 
		tagEmote() 
		{ 
			szCEmote = ""; 
			szEmote = ""; 
			nType = 0; 
		} 
	}TEmote;//一条emote的结构 
 
	struct SECONDFIELD  
  { 
		BOOL bReDraw[2];			//是否要重画 
		int nEmoteCount;		//emote的个数 
		int nShowState;			//显示的状态,(英文,中文) 
		int nKindState;			//种类状态,如哭笑 
		int nSelect;			//当前区域哪一条记录是被选中的 
		CString szEmote;		//当前的一条emote及它的类型 
		int nType; 
 
		CString szEndEmote;		//最后一条emote的名字 
		RECT rcGreenUp;			//绿色按钮资源位置 
		RECT rcGreenDown;		//绿色按钮按下 
		CDragBar mDragBar;		//拖动条 
		SECONDFIELD():mDragBar(9,189,371,202,562){};//初始化拖动条 
	}mSecondFD; 
 
	CList listAllEmote; 
	CList listCurEmote; 
public://系统功能区数据//mSysFD 
	enum WHATSYSDOWN  
  { 
		BtnNone, 
    BtnCommunicate, 
		BtnAdventure, 
    BtnPractice, 
    BtnBasicSkill, 
    BtnOrganize, 
    BtnFamily, 
    BtnEmotion, 
		BtnOption, 
    BtnHintShow, 
    BtnHintHide 
	}; 
	struct SYSUSEFIELD  
  { 
		enum WHATSYSDOWN whatBtnDown;//按下了那一个按钮 
     BOOL bHintNameReDraw[2]; 
    DWORD LastBtnMove; 
    DWORD LastBtnTick; 
    DWORD ThisBtnMove; 
    DWORD BtnMoveStatus; 
    RECT rcCommunicate; //频道按钮 
    RECT rcCommunicateDownSource; 
		RECT rcAdventure;   //冒险按钮 
		RECT rcAdventureDownSource; 
    RECT rcPractice;    //武术按钮 
    RECT rcPracticeDownSource; 
    RECT rcBasicSkill;  //道具按钮 
    RECT rcBasicSkillDownSource; 
    RECT rcOrganize;    //组织按钮 
    RECT rcOrganizeDownSource; 
    RECT rcFamily;      //门派按钮 
    RECT rcFamilyDownSource; 
    RECT rcEmotion;     //表情按钮 
    RECT rcEmotionDownSource; 
		RECT rcOption;      //系统按钮 
		RECT rcOptionDownSource;//按下的图象资源位置 
		RECT rcHintNameField;   //说明图示原始 
		RECT rcHintNameSource;  //说明图示图示 
    RECT rcTemp; 
    RECT rcSource; 
    RECT rcBackup; 
	}mSysFD; 
/* 
	enum WHATSYSDOWN  
  { 
		BtnNone, 
		BtnAdventure, 
		BtnWugong, 
		BtnEquip, 
		BtnHappyface, 
		BtnAngryface, 
		BtnBuleface, 
		BtnOtherface, 
		BtnOption 
	}; 
	struct SYSUSEFIELD  
  { 
		enum WHATSYSDOWN whatBtnDown;//按下了那一个按钮 
		RECT rcAdventure;//冒险按钮 
		RECT rcAdventureDownSource;//按下的图象资源位置 
		RECT rcWugong;//武功按钮 
		RECT rcWugongDownSource; 
		RECT rcEquip;//装备按钮 
		RECT rcEquipDownSource; 
		RECT rcHappyface;//高兴表情 
		RECT rcHappyfaceDownSource; 
		RECT rcAngryface;//愤怒表情 
		RECT rcAngryfaceDownSource; 
		RECT rcBuleface;//忧伤表情 
		RECT rcBulefaceDownSource; 
		RECT rcOthereface;//其他表情 
		RECT rcOtherefaceDownSource; 
		RECT rcOption;//系统按钮 
		RECT rcOptionDownSource; 
	}mSysFD; 
*/ 
public://用户功能区数据//mUserFD 
 
//User field Button Status 
#define UBS_communicate 0x100 //通讯指令 
#define UBS_adventure   0x200 //冒险指令 
#define UBS_practice    0x300 //武术指令 
#define UBS_basicskill  0x400 //道具指令 
#define UBS_organize    0x500 //组织指令 
#define UBS_family      0x600 //门派指令 
#define UBS_emotion     0x700 //表情指令 
#define UBS_system      0x800 //系统指令 
 
/* 
//User field Button Status 
#define UBS_brave   0x100 //冒险指令 
#define UBS_skill   0x200 //武功指令 
#define UBS_goods   0x300 //物品指令 
#define UBS_system  0x400 //系统指令 
*/ 
//按钮状态 
#define UB_mousenone	0 
#define UB_mouseon		1 
#define UB_mousedown	2 
 
//UB UserButton 
#define UB_none		-1		//没有 
 
#define UB_joinchannel    (UBS_communicate|0)   //新闻频道 
#define UB_channel        (UBS_communicate|1)   //查看频道 
#define UB_talk           (UBS_communicate|2)   //频道交谈 
#define UB_shout          (UBS_communicate|3)   //直接大喊 
#define UB_tell           (UBS_communicate|4)   //传送耳语 
#define UB_who_l          (UBS_communicate|5)   //线上名单 
#define UB_who            (UBS_communicate|6)   //频道名单 
#define UB_leavechannel   (UBS_communicate|7)   //离开频道 
 
#define UB_ask            (UBS_adventure|0)     //询问NPC 
#define UB_look           (UBS_adventure|1)     //查看NPC 
#define UB_apprentice     (UBS_adventure|2)     //拜师 
#define UB_skill          (UBS_adventure|3)     //师父技能 
#define UB_drill          (UBS_adventure|4)     //切磋 
 
#define UB_fight          (UBS_practice|0)      //切磋 
#define UB_kill           (UBS_practice|1)      //死斗 
#define UB_dazuo          (UBS_practice|2)      //打坐 
#define UB_tuna           (UBS_practice|3)      //吐纳 
#define UB_yungong        (UBS_practice|4)      //运功 
#define UB_mapping        (UBS_practice|5)      //配置武功 
#define UB_escape         (UBS_practice|6)      //逃跑 
#define UB_restart        (UBS_practice|7)      //  活 
#define UB_suicide		  (UBS_practice|8)		//自杀    ANDY_NEW 2001.3.1	 
 
#define UB_use            (UBS_basicskill|0)    //使用 
#define UB_watch          (UBS_basicskill|1)    //查看 
#define UB_give           (UBS_basicskill|2)    //给与 
#define UB_get            (UBS_basicskill|3)    //拿取 
#define UB_drop           (UBS_basicskill|4)    //丢弃 
#define UB_arm            (UBS_basicskill|5)    //装备 
#define UB_unarm          (UBS_basicskill|6)    //解除装备 
#define UB_practice       (UBS_basicskill|7)    //练习 
 
#define UB_jointeam       (UBS_organize|0)      //组队 
#define UB_leaveteam      (UBS_organize|1)      //离队 
#define UB_who_t          (UBS_organize|2)      //队伍名称 
#define UB_format         (UBS_organize|3)      //组阵 
#define UB_unformat       (UBS_organize|4)      //中止组阵 
 
#define UB_assign         (UBS_family|0)        //任命 
#define UB_cancel         (UBS_family|1)        //解除任命 
#define UB_newleader      (UBS_family|2)        //掌门移交 
#define UB_newfamily      (UBS_family|3)        //创立门派 
#define UB_newnpc         (UBS_family|4)        //创造NPC 
#define UB_setskill       (UBS_family|5)        //设定武功 
 
#define UB_cheer          (UBS_emotion|0)       //喜 
#define UB_angry          (UBS_emotion|1)       //怒 
#define UB_sadness        (UBS_emotion|2)       //哀 
#define UB_happy          (UBS_emotion|3)       //乐 
/* 
#define UB_apprentice     (UBS_brave|0)         //拜师 
#define UB_skill          (UBS_brave|1)         //技能 
#define UB_shout          (UBS_brave|2)         //大喊 
#define UB_talk           (UBS_brave|3)         //说话 
#define UB_tell           (UBS_brave|4)         //告诉 
#define UB_ask            (UBS_brave|5)         //询问 
#define UB_online         (UBS_brave|6)         //在线 
#define UB_channel        (UBS_brave|7)         //频道 
 
#define UB_give           (UBS_goods|0)         //给与 
#define UB_get            (UBS_goods|1)         //拿取 
#define UB_union          (UBS_goods|2)         //组合 
#define UB_eat            (UBS_goods|3)         //吃 
#define UB_drink          (UBS_goods|4)         //喝 
 
#define UB_yungong        (UBS_skill|0)         //运功 
#define UB_dazuo          (UBS_skill|1)         //打坐 
#define UB_tuna           (UBS_skill|2)         //吐纳 
#define UB_practice       (UBS_skill|3)         //练习 
#define UB_kill           (UBS_skill|4)         //攻击 
#define UB_fangqi         (UBS_skill|5)         //放弃 
*/ 
#define UB_stop           (UBS_system|0)        //终止 
#define UB_music          (UBS_system|1)        //音乐 
#define UB_addlight       (UBS_system|2)        //增亮 
#define UB_sublight       (UBS_system|3)        //减暗 
#define UB_switchport     (UBS_system|4)        //音源设定 
#define UB_acceptfight    (UBS_system|5)        //接受切搓 
#define UB_rejectfight    (UBS_system|6)        //拒绝切搓 
 
#define UB_XSPACE	48      //按钮间隔 
#define UB_HEIGHT	37		  //高度 
#define UB_COUNT	9       //一共有多少按钮 
#define UB_XDRAG	3       //鼠标在水平方向移动多少算是拖动 
#define UB_DRAGBARLEN 770 //拖动条的长度 
#define UB_SPACELEN 455   //可存放空间长度 
 
	struct USERUSEFIELD  
  { 
		BOOL bReDraw[2];          //是否要重画 
 
		int nWhatBtnDown;         //按下了那一个按钮 
		int nStatus;              //这个按钮现在的状态 
 
		int nSysStatus;           //当前状态 
		int nCount[UB_COUNT];     //个数 
		RECT rcOrgBtn[UB_COUNT];  //各个状态原始位置 
 
		RECT rcBtns[UB_COUNT];    //按钮们的位置 
	}mUserFD; 
 
public://3D信息区 
	BOOL bSelectOne;//选种某人 
	RECT rcSelectOnePos;//显示选种的某人位置 
	char szSelectOneName[32]; 
	CString szSelectEName; 
 
	BOOL bFaceSomeOne[2];//是否面对某人 
	RECT rcFaceSomeOne;//显示信息的位置 
	CString szFaceShowMsg;//显示某人的见面语 
	CString szFaceSomeCName;//面对人物的名称 
 
	RECT rcMapTitleInfo;//地图的信息头(地图短信息) 
public://命令输入框区 
	int nMouseDownPos;	//鼠标点在字串中的位置 
	BOOL bChangeInputMsg[2];//是否重新画输入条中的数据 
public://对话信息区 
	struct TALKMESSFIELD  
  { 
		BOOL bReDraw[2];			//是否要重画 
		CDragBar mDragBar;		//拖动条 
		TALKMESSFIELD():mDragBar(9,780,419,793,562){};//初始化拖动条 
	}mTalkFD; 
public://玩家信息区 
	BOOL bDrawPlayInfo[2];//重新画玩家数据 
	RECT rcNumberSource; 
	RECT rcPlayName; 
	RECT rcPlayNickName; 
	RECT rcPlaySex; 
	RECT rcPlayShen; 
 
	POINT posPlayAge; 
	POINT posPlayExp; 
	POINT posPlayGold; 
	POINT posPlaySeliver; 
	POINT posPlayCoin; 
	POINT posPlayStr; 
	POINT posPlayInt; 
	POINT posPlayCon; 
	POINT posPlayDex; 
	POINT posPlayQianNeng; 
	POINT posPlayShen; 
	POINT posPlayEffNeili; 
	POINT posPlayMaxNeili; 
	POINT posPlayAddNeili; 
	POINT posPlayEffJinli; 
	POINT posPlayMaxJinli; 
	POINT posPlayAddJinli; 
	POINT posPlayEffJingshen; 
	POINT posPlayMaxJingshen; 
	POINT posPlayEffQili; 
	POINT posPlayMaxQili; 
	POINT posPlayEffFood; 
	POINT posPlayMaxFood; 
	POINT posPlayEffDrink; 
	POINT posPlayMaxDrink; 
	POINT posPlayKillNpc; 
	POINT posPlayKillPlay; 
public://各种鼠标事件 
	void GameMainOnLButtonDown(POINT Pos); 
	void GameMainOnLButtonUp(POINT Pos); 
	void GameMainOnLButtonDblClk(POINT Pos); 
	void GameMainOnRButtonDown(POINT Pos); 
	void GameMainOnRButtonUp(POINT Pos); 
	void GameMainOnMouseMove(POINT Pos); 
	void SysUseLButtonDown(POINT Pos); 
	void SysUseLButtonUp(POINT Pos); 
	void SysUseMouseMove(POINT Pos); 
	void SysUseRButtonDown(POINT Pos); 
	void UserUseLButtonDown(POINT Pos); 
	void UserUseLButtonUp(POINT Pos); 
	void UserUseMouseMove(POINT Pos); 
	void UserUseRButtonDown(POINT Pos); 
	void FirstFieldLButtonDown(POINT Pos); 
	void FirstFieldLButtonUp(POINT Pos); 
	void SecondFieldLButtonDown(POINT Pos); 
	void SecondFieldLButtonUp(POINT Pos); 
	void InputMsgFieldLButtonDown(POINT Pos); 
	void UserFDDraw(); 
	void UserBtnMake(); 
	void UserBtnMake(int nStatus); 
	int  UserOnWhatBtn(POINT Pos); 
	void GetStateEmote(); 
	void GetStateEmote(int nState); 
	void ShowIconMenu(); 
 
public: 
	HRESULT Draw2DMainScreen(); 
	HRESULT DrawChangeMapScreen(); 
	HRESULT DisplaySelfMessage(int nScroll = 0); 
	HRESULT Display3DMessage(); 
	HRESULT Clear3DMessage(); 
 
	BOOL PrepareMainScreen(); 
	void PrepareNewMapInfo(); 
	void DrawMsgBar(LPRECT lpRect); 
	void DrawSecondField(); 
	void DrawPlayInfo(); 
	void DrawCursor(); 
	void DrawOneField(); 
	void FillANum(int n, int nMax, POINT *lpPoint, char Color); 
	void ShowQuickMsg(int nIndex); 
	void DoClickOneFieldFunction(int nIndex);//选种第一区鼠标有键盘按下的指令 
 
	CMainScreen(); 
	virtual ~CMainScreen(); 
}; 
 
#endif // !defined(AFX_MAINSCREEN_H__BEFA2100_5F8C_11D3_BA84_0000E8A021D8__INCLUDED_)