📄 setcontrolgui.cpp
字号:
/********************************************************************
文件名: SETCONTROLGUI.cpp
Copyright (c)2004 红孩儿工作室
创建人 : 卞安
创建时间: 2004-5-18 12:33:30
版本: 1.0
类名: SetControlGui
说明:
显示设置游戏控制类/数据与键盘的交互的界面类
********************************************************************/
#include "SetControlGui.h"
#include "BASIC.h"
//---------------------------------------------------------------
/********************************************************************
函数名 : 构造函数
输入参数:
无
输出参数:
无
功能描述:
将指针设为NULL
全局变量: 无
调用模块: 无
********************************************************************/
SetControlGui::SetControlGui()
{
m_pFont1=NULL;
m_pFont2=NULL;
m_pFontkey=NULL;
m_pD3DDevice=NULL;
}
/********************************************************************
函数名 : 析构函数
输入参数: 无
输出参数: 无
功能描述:
删除指针并释放变量
全局变量: 无
调用模块: 无
********************************************************************/
SetControlGui::~SetControlGui()
{
SAFE_DELETE(m_pFont1);
SAFE_DELETE(m_pFont2);
SAFE_DELETE(m_pFontkey);
}
/********************************************************************
函数名 : init
输入参数:
_hWnd:主窗口
pd3dDevice:D3D设备
输出参数:
TRUE 成功
FALSE 失败
功能描述:初始化
将指针设为NULL
全局变量: 无
调用模块: 无
********************************************************************/
bool SetControlGui::init(HWND _hWnd,LPDIRECT3DDEVICE8 pd3dDevice)
{
m_x1=150;
m_x2=500;
m_y1=50;
m_y2=50;
m_selected1=0;
m_selected2=0;
m_hWnd=_hWnd;
m_pD3DDevice=pd3dDevice;
lstrcpy( m_strFont, _T("Arial Black") );
m_dwFontSize = 40;
m_pFont1= new CD3DFont( m_strFont, m_dwFontSize );
m_pFont1->InitDeviceObjects(m_pD3DDevice);
m_pFont1->RestoreDeviceObjects();
lstrcpy( m_strFont, _T("Arial") );
m_dwFontSize = 20;
m_pFont2= new CD3DFont( m_strFont, m_dwFontSize );
m_pFont2->InitDeviceObjects(m_pD3DDevice);
m_pFont2->RestoreDeviceObjects();
lstrcpy( m_strFont, _T("System") );
m_dwFontSize = 15;
m_pFontkey= new CD3DFont( m_strFont, m_dwFontSize );
m_pFontkey->InitDeviceObjects(m_pD3DDevice);
m_pFontkey->RestoreDeviceObjects();
m_SetControl.initKeyboard(_hWnd);
strcpy(m_info11,m_SetControl.DoKeyName(m_SetControl.m_control.iLeftKey));
strcpy(m_info12,m_SetControl.DoKeyName(m_SetControl.m_control.iRightKey));
strcpy(m_info13,m_SetControl.DoKeyName(m_SetControl.m_control.iUpKey));
strcpy(m_info14,m_SetControl.DoKeyName(m_SetControl.m_control.iDownKey));
strcpy(m_info15,m_SetControl.DoKeyName(m_SetControl.m_control.iEndKey));
strcpy(m_info21,m_SetControl.DoKeyName(m_SetControl.m_control2.iLeftKey));
strcpy(m_info22,m_SetControl.DoKeyName(m_SetControl.m_control2.iRightKey));
strcpy(m_info23,m_SetControl.DoKeyName(m_SetControl.m_control2.iUpKey));
strcpy(m_info24,m_SetControl.DoKeyName(m_SetControl.m_control2.iDownKey));
strcpy(m_info25,m_SetControl.DoKeyName(m_SetControl.m_control2.iEndKey));
return true;
}
void SetControlGui::Render()
{
m_pFont1->DrawText(m_x1-80,m_y1, D3DCOLOR_ARGB(255,255,255,255),"PLAYER1");
m_pFont1->DrawText(m_x2-80,m_y2, D3DCOLOR_ARGB(255,255,255,255),"PLAYER2");
m_pFont2->DrawText(m_x1-100,m_y1+180, D3DCOLOR_ARGB(255,255,255,0),"LEFT");
m_pFont2->DrawText(m_x1+100,m_y1+180, D3DCOLOR_ARGB(255,255,255,0),"RIGHT");
m_pFont2->DrawText(m_x1,m_y1+80, D3DCOLOR_ARGB(255,255,255,0),"ROTATE");
m_pFont2->DrawText(m_x1,m_y1+280, D3DCOLOR_ARGB(255,255,255,0),"DOWN");
m_pFont2->DrawText(m_x1,m_y1+380, D3DCOLOR_ARGB(255,255,255,0),"GO!");
//--------------键盘显示--------------------------------
if(m_updated1==1)
{
int t_ikey=m_SetControl.ProcessKBInput();
if(t_ikey!=0)
{
m_SetControl.m_control.SetLeftKey(t_ikey);
strcpy(m_info11,m_SetControl.DoKeyName(t_ikey));
}
m_pFontkey->DrawText(m_x1-50,m_y1+230, D3DCOLOR_ARGB(255,255,255,255),m_info11);
}
else
{
m_pFontkey->DrawText(m_x1-50,m_y1+230, D3DCOLOR_ARGB(150,255,0,0),m_info11);
}
if(m_updated1==2)
{
int t_ikey=m_SetControl.ProcessKBInput();
if(t_ikey!=0)
{
m_SetControl.m_control.SetRightKey(t_ikey);
strcpy(m_info12,m_SetControl.DoKeyName(t_ikey));
}
m_pFontkey->DrawText(m_x1+160,m_y1+230, D3DCOLOR_ARGB(255,255,255,255),m_info12);
}
else
{
m_pFontkey->DrawText(m_x1+160,m_y1+230, D3DCOLOR_ARGB(150,255,0,0),m_info12);
}
if(m_updated1==3)
{
int t_ikey=m_SetControl.ProcessKBInput();
if(t_ikey!=0)
{
m_SetControl.m_control.SetUpKey(t_ikey);
strcpy(m_info13,m_SetControl.DoKeyName(t_ikey));
}
m_pFontkey->DrawText(m_x1+30,m_y1+130, D3DCOLOR_ARGB(255,255,255,255),m_info13);
}
else
{
m_pFontkey->DrawText(m_x1+30,m_y1+130, D3DCOLOR_ARGB(150,255,0,0),m_info13);
}
if(m_updated1==4)
{
int t_ikey=m_SetControl.ProcessKBInput();
if(t_ikey!=0)
{
m_SetControl.m_control.SetDownKey(t_ikey);
strcpy(m_info14,m_SetControl.DoKeyName(t_ikey));
}
m_pFontkey->DrawText(m_x1+50,m_y1+330, D3DCOLOR_ARGB(255,255,255,255),m_info14);
}
else
{
m_pFontkey->DrawText(m_x1+50,m_y1+330, D3DCOLOR_ARGB(150,255,0,0),m_info14);
}
if(m_updated1==5)
{
int t_ikey=m_SetControl.ProcessKBInput();
if(t_ikey!=0)
{
m_SetControl.m_control.SetEndKey(t_ikey);
strcpy(m_info15,m_SetControl.DoKeyName(t_ikey));
}
m_pFontkey->DrawText(m_x1+40,m_y1+430, D3DCOLOR_ARGB(255,255,255,255),m_info15);
}
else
{
m_pFontkey->DrawText(m_x1+40,m_y1+430, D3DCOLOR_ARGB(150,255,0,0),m_info15);
}
switch(m_selected1)
{
case 1:
m_pFont2->DrawText(m_x1-100,m_y1+180, D3DCOLOR_ARGB(255,255,0,255),"LEFT");
break;
case 2:
m_pFont2->DrawText(m_x1+100,m_y1+180, D3DCOLOR_ARGB(255,255,0,255),"RIGHT");
break;
case 3:
m_pFont2->DrawText(m_x1,m_y1+80, D3DCOLOR_ARGB(255,255,0,255),"ROTATE");
break;
case 4:
m_pFont2->DrawText(m_x1,m_y1+280, D3DCOLOR_ARGB(255,255,0,255),"DOWN");
break;
case 5:
m_pFont2->DrawText(m_x1,m_y1+380, D3DCOLOR_ARGB(255,255,0,255),"GO!");
break;
}
m_pFont2->DrawText(m_x2-100,m_y2+180, D3DCOLOR_ARGB(255,255,255,0),"LEFT");
m_pFont2->DrawText(m_x2+100,m_y2+180, D3DCOLOR_ARGB(255,255,255,0),"RIGHT");
m_pFont2->DrawText(m_x2,m_y2+80, D3DCOLOR_ARGB(255,255,255,0),"ROTATE");
m_pFont2->DrawText(m_x2,m_y2+280, D3DCOLOR_ARGB(255,255,255,0),"DOWN");
m_pFont2->DrawText(m_x2,m_y2+380, D3DCOLOR_ARGB(255,255,255,0),"GO!");
//--------------键盘显示--------------------------------
if(m_updated2==1)
{
int t_ikey=m_SetControl.ProcessKBInput();
if(t_ikey!=0)
{
m_SetControl.m_control2.SetLeftKey(t_ikey);
strcpy(m_info21,m_SetControl.DoKeyName(t_ikey));
}
m_pFontkey->DrawText(m_x2-50,m_y2+230, D3DCOLOR_ARGB(255,255,255,255),m_info21);
}
else
{
m_pFontkey->DrawText(m_x2-50,m_y2+230, D3DCOLOR_ARGB(150,255,0,0),m_info21);
}
if(m_updated2==2)
{
int t_ikey=m_SetControl.ProcessKBInput();
if(t_ikey!=0)
{
m_SetControl.m_control2.SetRightKey(t_ikey);
strcpy(m_info22,m_SetControl.DoKeyName(t_ikey));
}
m_pFontkey->DrawText(m_x2+160,m_y2+230, D3DCOLOR_ARGB(255,255,255,255),m_info22);
}
else
{
m_pFontkey->DrawText(m_x2+160,m_y2+230, D3DCOLOR_ARGB(150,255,0,0),m_info22);
}
if(m_updated2==3)
{
int t_ikey=m_SetControl.ProcessKBInput();
if(t_ikey!=0)
{
m_SetControl.m_control2.SetUpKey(t_ikey);
strcpy(m_info23,m_SetControl.DoKeyName(t_ikey));
}
m_pFontkey->DrawText(m_x2+30,m_y2+130, D3DCOLOR_ARGB(255,255,255,255),m_info23);
}
else
{
m_pFontkey->DrawText(m_x2+30,m_y2+130, D3DCOLOR_ARGB(150,255,0,0),m_info23);
}
if(m_updated2==4)
{
int t_ikey=m_SetControl.ProcessKBInput();
if(t_ikey!=0)
{
m_SetControl.m_control2.SetDownKey(t_ikey);
strcpy(m_info24,m_SetControl.DoKeyName(t_ikey));
}
m_pFontkey->DrawText(m_x2+50,m_y2+330, D3DCOLOR_ARGB(255,255,255,255),m_info24);
}
else
{
m_pFontkey->DrawText(m_x2+50,m_y2+330, D3DCOLOR_ARGB(150,255,0,0),m_info24);
}
if(m_updated2==5)
{
int t_ikey=m_SetControl.ProcessKBInput();
if(t_ikey!=0)
{
m_SetControl.m_control2.SetEndKey(t_ikey);
strcpy(m_info25,m_SetControl.DoKeyName(t_ikey));
}
m_pFontkey->DrawText(m_x2+40,m_y2+430, D3DCOLOR_ARGB(255,255,255,255),m_info25);
}
else
{
m_pFontkey->DrawText(m_x2+40,m_y2+430, D3DCOLOR_ARGB(150,255,0,0),m_info25);
}
switch(m_selected2)
{
case 1:
m_pFont2->DrawText(m_x2-100,m_y2+180, D3DCOLOR_ARGB(255,255,0,255),"LEFT");
break;
case 2:
m_pFont2->DrawText(m_x2+100,m_y2+180, D3DCOLOR_ARGB(255,255,0,255),"RIGHT");
break;
case 3:
m_pFont2->DrawText(m_x2,m_y2+80, D3DCOLOR_ARGB(255,255,0,255),"ROTATE");
break;
case 4:
m_pFont2->DrawText(m_x2,m_y2+280, D3DCOLOR_ARGB(255,255,0,255),"DOWN");
break;
case 5:
m_pFont2->DrawText(m_x2,m_y2+380, D3DCOLOR_ARGB(255,255,0,255),"GO!");
break;
}
m_pFont2->DrawText(220,500, D3DCOLOR_ARGB(255,255,0,255)," 'ESC' TO MAIN MENU");
}
/********************************************************************
函数名 : CleanUp
输入参数: 无
输出参数: 无
功能描述: 释放指针
将指针设为NULL
全局变量: 无
调用模块: 无
********************************************************************/
void SetControlGui::CleanUp()
{
SAFE_DELETE(m_pFont1);
SAFE_DELETE(m_pFont2);
SAFE_DELETE(m_pFontkey);
}
/********************************************************************
函数名 : SelectKey
输入参数: _key 自定义更换的键索引
输出参数: 无
功能描述:
全局变量: 无
调用模块: 无
********************************************************************/
void SetControlGui::SelectKey(int _key)
{
m_selected2=0;
m_selected1=_key;
}
/********************************************************************
函数名 : SelectKey2
输入参数: _key 自定义更换的键索引
输出参数: 无
功能描述:
全局变量: 无
调用模块: 无
********************************************************************/
void SetControlGui::SelectKey2(int _key)
{
m_selected1=0;
m_selected2=_key;
}
/********************************************************************
函数名 : UpdateKey
输入参数: _key 自定义更换的键索引
输出参数: 无
功能描述: 更换键值
全局变量: 无
调用模块: 无
********************************************************************/
void SetControlGui::UpdateKey(int _key)
{
m_updated2=0;
m_updated1=_key;
}
/********************************************************************
函数名 : UpdateKey2
输入参数: _key 自定义更换的键索引
输出参数: 无
功能描述: 更换键值
全局变量: 无
调用模块: 无
********************************************************************/
void SetControlGui::UpdateKey2(int _key)
{
m_updated1=0;
m_updated2=_key;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -