www.pudn.com > 3D_OnlineGame_Humen.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_)