www.gusucode.com > VC++游戏圣剑英雄传2双刃剑源程序+开发文档-源码程序 > VC++游戏圣剑英雄传2双刃剑源程序+开发文档-源码程序\code\source\MENU\Menutop.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 "menu_inc.h" CMenuTop::CMenuTop() { Button = NULL; } CMenuTop::~CMenuTop() { _DELETE_ARRAY( Button ); } //读取 void CMenuTop::LoadMenuTopIni(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); MoneyX=Ini.ReadInt(index, "MoneyX")+dialogx; MoneyY=Ini.ReadInt(index, "MoneyY")+dialogy; ButtonNum=Ini.ReadInt(index, "ButtonNum"); Button=new CCButton[ButtonNum]; //初始化按钮 char* strTemp; for(int i=0; i<ButtonNum; i++) { strTemp = Ini.ReadText(index, i); char * str = Ini.ReadData(index,i); Button[i].LoadIni(strTemp, str); _FREE(strTemp); _FREE(str); Button[i].x+=dialogx; Button[i].y+=dialogy; } dialogx-=32; dialogy-=32; dialogw+=64; dialogh+=64; } //------------------------------------ //显示 void CMenuTop::ShowMenuTop(LPDIRECTDRAWSURFACE surf, bool bShowWindow) { for(int i=0; i<ButtonNum; i++) { if( i==CMenu::SelectItem ) Button[i].CheckLoop(surf, 2); else Button[i].CheckLoop(surf); } //阴影显示文字 DWORD c=Font.GetColor(); Font.SetColor(0); Font.PrintText(surf, dialogx+MoneyX+1, dialogy+MoneyY+1, "钱:%6d", role[0].Propertiy.Money); Font.SetColor(c); Font.PrintText(surf, dialogx+MoneyX, dialogy+MoneyY, "钱:<c4>%6d</c>", role[0].Propertiy.Money); } //菜单循环 void CMenuTop::DoMenu(LPDIRECTDRAWSURFACE surf, bool bShowWindow) { bool b[20]; //选择状态数组 int bHigh; for(int i=0; i<ButtonNum; i++) { if( i==CMenu::SelectItem ) bHigh=2; else bHigh=-1; if( Button[i].CheckLoop(surf, bHigh)==1 ) { CMenu::Sound_Click.Play(); //音效 b[i]=true; } else b[i]=false; } //阴影显示 DWORD c=Font.GetColor(); Font.SetColor(0); Font.PrintText(surf, dialogx+MoneyX+1, dialogy+MoneyY+1, "钱:%6d", role[0].Propertiy.Money); Font.SetColor(c); Font.PrintText(surf, dialogx+MoneyX, dialogy+MoneyY, "钱:<c4>%6d</c>", role[0].Propertiy.Money); for(i=0; i<ButtonNum; i++) if( b[i] || key==(unsigned int)DIK_1+i ) //键盘数字键控制 { CMenu::Sound_Click.Play(); //音效 CMenu::SelectItem=i; CMenu::ReInitMenu(); return; } if( Key.KeyDown( DIK_LCONTROL ) && LEFT_DOWN ) //方向键控制 { CMenu::Sound_Click.Play(); //音效 CMenu::SelectItem--; if( CMenu::SelectItem<0 ) CMenu::SelectItem=ButtonNum-1; //循环 CMenu::ReInitMenu(); } if( Key.KeyDown( DIK_LCONTROL ) && RIGHT_DOWN ) { CMenu::Sound_Click.Play(); //音效 CMenu::SelectItem++; if( CMenu::SelectItem>ButtonNum-1 ) CMenu::SelectItem=0; CMenu::ReInitMenu(); } if( key==DIK_TAB || joystick== DIJ_4 ) { CMenu::Sound_Click.Play(); //音效 CMenu::SelectItem++; if( CMenu::SelectItem>ButtonNum-1 ) CMenu::SelectItem=0; CMenu::ReInitMenu(); } }