📄 mainapp.cpp
字号:
{
case MAIN_START:
{
g_GameState=GS_RUN;
GUIShow(MAIN_WINDOW, false);
GUIShow(TOOL_WINDOW, true);
player.LoadPlayer(true);
}
break;
case MAIN_CREDIT:
{
g_GameState = GS_CREDIT;
lua_pushnumber(g_pLuastate, g_GlobalTime);
lua_setglobal(g_pLuastate, "LastTime");
lua_pushnumber(g_pLuastate, 0);
lua_setglobal(g_pLuastate, "GlobalFlag");
GUIShow(MAIN_WINDOW, false);
}
break;
case MAIN_LOAD:
{
g_GameState=GS_RUN;
GUIShow(MAIN_WINDOW, false);
GUIShow(TOOL_WINDOW, true);
player.LoadPlayer(false);
}
break;
case TEMP_LOAD:
{
g_GameState=GS_RUN;
GUIShow(TEMP_WINDOW, false);
GUIShow(TOOL_WINDOW, true);
player.LoadPlayer(false);
}
break;
case TEMP_SAVE:
{
g_GameState=GS_RUN;
GUIShow(TEMP_WINDOW, false);
GUIShow(TOOL_WINDOW, true);
player.SavePlayer();
}
break;
case TEMP_CONTINUE:
{
g_GameState=GS_RUN;
GUIShow(TEMP_WINDOW, false);
GUIShow(TOOL_WINDOW, true);
}
break;
case MAIN_QUIT: ::PostQuitMessage(0); break;
case TEMP_MAINMENU:
{
GUIShow(TEMP_WINDOW, false);
GUIShow(MAIN_WINDOW, true);
g_GameState = GS_MENU;
}
break;
case TEMP_QUIT:
{
GUIShow(TEMP_WINDOW, false);
GUIShow(WARN_WINDOW, true);
GStatic *pStatic = (GStatic*)GetGUI(WARN_INFO);
if(pStatic)
{
pStatic->SetCaption("是否要退出游戏?");
g_WarningState = 0;
}
}
break;
case EDIT_QUIT:
{
GUIShow(WARN_WINDOW, true);
GStatic *pStatic = (GStatic*)GetGUI(WARN_INFO);
if(pStatic)
{
pStatic->SetCaption("是否保存对物体的修改?");
g_WarningState = 1;
}
}
break;
case WARN_YES:
{
if(g_WarningState)
{
scene.SaveScene();
g_NodeAdjust.CloseEditor();
GUIShow(WARN_WINDOW, false);
}
else
{
::PostQuitMessage(0);
}
}
break;
case WARN_NO:
{
if(g_WarningState)
{
g_NodeAdjust.CloseEditor();
GUIShow(WARN_WINDOW, false);
}
else
{
GUIShow(WARN_WINDOW, false);
GUIShow(TEMP_WINDOW, true);
}
}
break;
case TEMP_OPTION:
{
g_GameState=GS_TEMPOPTION;
GUIShow(TEMP_WINDOW, false);
GUIShow(OPTION_WINDOW);
g_Option.LoadCurrent();
}
break;
case MAIN_OPTION:
{
g_GameState=GS_MAINOPTION;
GUIShow(MAIN_WINDOW, false);
GUIShow(OPTION_WINDOW);
g_Option.LoadCurrent();
}
break;
case OPTION_OK:
{
if(g_GameState==GS_MAINOPTION)
{
g_GameState=GS_MENU;
GUIShow(MAIN_WINDOW);
}
if(g_GameState==GS_TEMPOPTION)
{
g_GameState=GS_PAUSE;
GUIShow(TEMP_WINDOW);
}
GUIShow(OPTION_WINDOW, false);
g_Option.SaveValue();
}
break;
case OPTION_DEFAULT:
{
g_Option.LoadDefault();
}
break;
case EQUIP_BTN_OK:
{
player.OutEquip();
((CoolListBox*)GetGUI(EQUIP_LIST1))->SelectItem(0);
GUIShow(EQUIP_LIST2, false);
}
break;
case EQUIP_BTN_LOAD:
{
player.GetChar()->LoadEquipment(true);
CoolListBox *pBox = (CoolListBox*)GetGUI(EQUIP_LIST1);
if(pBox) pBox->SelectItem(0);
GUIShow(EQUIP_LIST2, false);
}
break;
case EQUIP_BTN_SAVE:player.GetChar()->SaveEquipment(); break;
case EDIT_INPUT: g_NodeAdjust.SetInput(true); break;
case EDIT_SAVE: g_NodeAdjust.SaveNode(); break;
case EDIT_MOVEOBJECT:
{
D3DXVECTOR3 pos;
g_NodeAdjust.GetNodePosition(&pos);
float height = g_Hmap.GetHeight(&pos);
pos.y = height;
player.GetChar()->SetPosition(pos);
player.TurnTo(0.0f);
}
break;
case EDIT_MOVEPLAYER:
{
D3DXVECTOR3 pos = player.GetChar()->GetDerivedPos();
g_NodeAdjust.SetNodePosition(pos);
}
break;
case EDIT_SAVEALL: scene.SaveScene(); break;
case INPUT_YES: ((CNumberInputBox*)GetGUI(INPUT_EDIT))->PostValue(); break;
case INPUT_NO: g_NodeAdjust.SetInput(false); break;
case TOOL_CONSOLE: command.OpenConsole(); break;
case TOOL_RIDE: player.NextRider(); break;
case TOOL_RUN: player.WalkRun(); break;
case TOOL_MENU:
{
if(g_GameState==GS_RUN)
{
g_GameState=GS_PAUSE;
GUIShow(TEMP_WINDOW);
GUIShow(TOOL_WINDOW, false);
}
else if(g_GameState==GS_PAUSE)
{
g_GameState=GS_RUN;
GUIShow(TEMP_WINDOW, false);
GUIShow(TOOL_WINDOW, true);
}
}
break;
case TOOL_EDITOR:
{
if(IsGUIVisual(EDIT_WINDOW))g_NodeAdjust.CloseEditor();
else g_NodeAdjust.OpenEditor();
}
break;
case TOOL_ROLE:
{
if(IsGUIVisual(EQUIP_WINDOW))
{
player.OutEquip();
((CoolListBox*)GetGUI(EQUIP_LIST1))->SelectItem(0);
GUIShow(EQUIP_LIST2, false);
}
else
{
player.InEquip();
}
}
break;
case TOOL_CAMERA:
{
if(player.GetCamera()==CT_MODELVIEW)
player.SetCamera(CT_FREEVIEW);
else
player.SetCamera(CT_MODELVIEW);
}
break;
}
}
if(msg.m_dwType==MSG_SYS_GUI && msg.m_dwParam1==GUI_VALUE_CHANGE)
{
switch(msg.m_dwSource)
{
case INPUT_EDIT:
{
g_NodeAdjust.SetValue(*(float*)&msg.m_dwParam2);
g_NodeAdjust.SetInput(false);
}
break;
case EQUIP_LIST1:
{
int SelectItem = msg.m_dwParam2;
if(SelectItem==ES_UNUSED || SelectItem==ES_NECK ||
SelectItem==ES_TABARD || SelectItem==ES_QUIVER)
{
GUIShow(EQUIP_LIST2, false);
}
else
{
GUIShow(EQUIP_LIST2, true);
CoolListBox *pBox = (CoolListBox*)GetGUI(EQUIP_LIST2);
if(pBox)
{
pBox->RemoveAllItems();
if(msg.m_dwParam2<ES_EQUITBASE)
{
CIniFile ItemFile("Config\\Item.ini");
char szInfo[256];
ItemFile.ReadString("Main", SelectItem, szInfo);
int num = ItemFile.GetContinueData(szInfo);
for(int i=0; i<num; i++)
{
char szItem[256];
ItemFile.ReadString(szInfo, i, szItem);
pBox->AddItem(szItem, NULL);
}
}
else
{
CSVFile csv("Picture\\Item.csv");
pBox->AddItem("<NONE>", NULL);
int num = player.GetChar()->GetEquipmentMax(SelectItem);
for(int i=0; i<num; i++)
{
int slot = SelectItem;
if(SelectItem==ES_HAND_LEFT) slot = ES_HAND_RIGHT;
int index = csv.GetRecordIndex(0, CSV_SLOT, slot, i);
char szName[256];
csv.ReadString(index, CSV_NAME, szName);
pBox->AddItem(szName, NULL);
}
}
int value = player.GetChar()->GetEquipmentValue(SelectItem);
pBox->SelectItem(value);
}
}
}
break;
case EQUIP_LIST2:
{
int select_2 = msg.m_dwParam2;
int select_1;
CoolListBox *pBox = (CoolListBox*)GetGUI(EQUIP_LIST1);
if(pBox)
{
select_1 = pBox->GetSelectedIndex();
}
player.GetChar()->SetEquipmentValue(select_1, select_2);
}
break;
case EDIT_LIST:
{
CoolListBox *pBox = (CoolListBox*)GetGUI(EDIT_LIST);
if(pBox)
{
GNode* pNode = g_NodeManager.GetNode((pBox->GetSelectedItem())->strText);
g_NodeAdjust.SetNode(NULL);
g_NodeAdjust.SetNode(pNode);
}
}
break;
case OPTION_SLI_BRIGHTNESS: g_Brightness = (BYTE)(50-msg.m_dwParam2); break;
case OPTION_SLI_DISTANCE: g_Hmap.SetViewDistance(msg.m_dwParam2); break;
case OPTION_SLI_FOG: SetFog(2000-msg.m_dwParam2); break;
case OPTION_SLI_SENSITI: player.SetSensitivity(msg.m_dwParam2*0.001f); break;
case OPTION_CHE_SCREEN:
{
bool IsWindow = g_pGraphics->IsWindowed();
if((IsWindow && msg.m_dwParam2) || (!IsWindow && !msg.m_dwParam2))
{
g_pGraphics->ToggleScreen();
}
}
break;
}
}
if(msg.m_dwType==MSG_SYS_GUI && msg.m_dwParam1==GUI_MOUSE_OVER)
{
switch(msg.m_dwSource)
{
case TOOL_ROLE:
case TOOL_CONSOLE:
case TOOL_EDITOR:
case TOOL_RIDE:
case TOOL_RUN:
case TOOL_MENU:
case TOOL_HELP:
case TOOL_CAMERA:
{
CIniFile hint("Config\\Hint.ini");
char szCaption[256];
char szInfo[4096];
char szAppend[1024];
char szIndex[256];
sprintf(szIndex, "Hint_%d", msg.m_dwSource);
hint.ReadString(szIndex, "szCaption", szCaption);
hint.ReadString(szIndex, "szInfo", szInfo);
hint.ReadString(szIndex, "szAppend", szAppend);
int linecount = hint.ReadInt(szIndex, "Line", 50);
g_Info.SetLineCount(linecount);
g_Info.ShowInfo(msg.m_dwSource, szCaption, szInfo, szAppend);
}
break;
}
}
if(msg.m_dwType==MSG_SYS_GUI && msg.m_dwParam1==GUI_LOST_FOCUS)
{
switch(msg.m_dwSource)
{
case TOOL_ROLE:
case TOOL_CONSOLE:
case TOOL_EDITOR:
case TOOL_RIDE:
case TOOL_RUN:
case TOOL_MENU:
case TOOL_HELP:
case TOOL_CAMERA:
{
g_Info.FadeOut(msg.m_dwSource);
}
break;
}
}
}
}
void CMainApp::OnSystemKey(void)
{
if(g_stInputInfo.KeyValue == DIK_ESCAPE)
{
if(g_GameState==GS_MENU) { ::PostQuitMessage(0); }
else if(g_GameState==GS_RUN)
{
g_GameState=GS_PAUSE;
GUIShow(TEMP_WINDOW);
GUIShow(TOOL_WINDOW, false);
}
else if(g_GameState==GS_PAUSE)
{
g_GameState=GS_RUN;
GUIShow(TEMP_WINDOW, false);
GUIShow(TOOL_WINDOW, true);
}
}
if(g_stInputInfo.KeyValue == DIK_F11)
{
SYSTEMTIME tm;
::GetSystemTime(&tm);
char szFile[256];
sprintf(szFile, "Snap\\%d_%d_%d_%d_%d.bmp", tm.wYear, tm.wMonth, tm.wDay, tm.wHour, tm.wMinute);
g_pGraphics->SnapToFile(szFile);
}
if(g_stInputInfo.KeyValue==DIK_F9)
{
if(IsGUIVisual(EQUIP_WINDOW))
{
player.OutEquip();
((CoolListBox*)GetGUI(EQUIP_LIST1))->SelectItem(0);
GUIShow(EQUIP_LIST2, false);
}
else
{
player.InEquip();
}
}
if(g_stInputInfo.KeyValue==DIK_F8)
{
if(IsGUIVisual(EDIT_WINDOW))g_NodeAdjust.CloseEditor();
else g_NodeAdjust.OpenEditor();
}
if(g_stInputInfo.KeyValue==DIK_F7)
{
player.NextRider();
}
if(g_stInputInfo.KeyValue==DIK_F4)
{
command.OpenConsole();
}
if(g_stInputInfo.KeyValue==DIK_TAB)
{
if(player.GetCamera()==CT_MODELVIEW)
player.SetCamera(CT_FREEVIEW);
else
player.SetCamera(CT_MODELVIEW);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -