www.gusucode.com > VC++游戏圣剑英雄传2双刃剑源程序+开发文档-源码程序 > VC++游戏圣剑英雄传2双刃剑源程序+开发文档-源码程序\code\source\MENU\System.cpp
//Download by http://www.NewXing.com //******************************************** // 顶级菜单 相关函数 // 创建于2000年7月09日 //******************************************** #include "..\gamelib\goldpoint2.h" #include "..\interface\interface2.h" #include "..\main.h" #include "..\map.h" #include "..\role.h" #include "..\message.h" #include "menu_inc.h" CSystem::CSystem() { Button = NULL; m_lSelect = 0; } CSystem::~CSystem() { _DELETE_ARRAY( Button ); } //读取 void CSystem::LoadSystemIni(char *filename, char *index) { CIniSet Ini(filename); char* strFile = Ini.ReadText(index, "WindowFile"); char* strIndex = Ini.ReadText(index, "WindowIndex"); LoadWindowIni(strFile, strIndex); _FREE(strFile); _FREE(strIndex); ButtonNum=Ini.ReadInt(index, "ButtonNum"); Button=new CCButton[ButtonNum]; //初始化按钮 for(int i=0; i<ButtonNum; i++) { strFile = Ini.ReadText(index, i); strIndex = Ini.ReadData(index,i); Button[i].LoadIni(strFile, strIndex); _FREE(strFile); _FREE(strIndex); Button[i].x+=dialogx; Button[i].y+=dialogy; } dialogx-=32; dialogy-=32; dialogw+=64; dialogh+=64; } //------------------------------------ //显示 void CSystem::ShowSystem(LPDIRECTDRAWSURFACE surf, bool bShowWindow) { ShowWindow(surf, bShowWindow); //显示窗口 for(int i=0; i<ButtonNum; i++) { Button[i].CheckLoop(surf); //按键测试 } } //菜单循环 int CSystem::DoMenu(LPDIRECTDRAWSURFACE& surf, bool bShowWindow) { ShowWindow(surf, bShowWindow); //显示窗口 bool b[20]; int bHigh=-1; for(int i=0; i<ButtonNum; i++) { // 高亮显示当前选择的按钮 if( i == m_lSelect ) { bHigh = 1; } else { bHigh = -1; } // 检测 int r = Button[i].CheckLoop(surf, bHigh); if( r==1 ) { b[i]=true; } else { b[i]=false; } // 高亮 if( r==2 ) { m_lSelect = i; } } if( b[0] || A_UP && m_lSelect == 0 ) //Load { CMenu::Sound_Click.Play(); if( CMenu::LoadSave.DoMenu(surf, true, 180, 100) ) return 1; else CMenu::ReInitMenu(); } if( b[1] || A_UP && m_lSelect == 1 ) //Save { CMenu::Sound_Click.Play(); if( CMenu::LoadSave.DoMenu(surf, false, 180, 100) ) return 2; CMenu::ReInitMenu(); } if( b[2] || A_UP && m_lSelect == 2 ) //exit { CMenu::Sound_Click.Play(); Message.ClearAllMessage(); //清空消息队列 bControl = true; return 3; } // 下一个 if( DOWN_DOWN ) { m_lSelect++; CMenu::Sound_Change.Play(); if( m_lSelect > 2 ) m_lSelect = 0; //循环 } // 上一个 if( UP_DOWN ) { m_lSelect--; CMenu::Sound_Change.Play(); if( m_lSelect < 0 ) m_lSelect = 2; } return 0; }