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_)