⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainapp.cpp

📁 3D游戏展示程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			{
			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 + -