/* menu.cpp 档案太大了,新功能写在这 */ #include "../systeminc/version.h" #include "../systeminc/system.h" #include "../systeminc/font.h" #include "../other/caryIme.h" #include "../systeminc/anim_tbl.h" #include "../systeminc/pc.h" #include "../systeminc/battleMenu.h" #include "../systeminc/battleProc.h" #include "../systeminc/lssproto_cli.h" #include "../systeminc/netmain.h" #include "../systeminc/loadsprbin.h" #include "../systeminc/savedata.h" #include "../systeminc/t_music.h" #include "../systeminc/menu.h" #include "../systeminc/tool.h" #include "../systeminc/map.h" #include "../systeminc/field.h" #include "../systeminc/pet_skillinfo.h" #include "../wgs/descrypt.h" #include "../systeminc/character.h" #ifdef _TALK_WINDOW #include "../systeminc/talkwindow.h" #endif #ifdef _NPC_ITEMUP void ShowItemup(int value, int x, int y) { char itemup_msg[256]=""; int sx=-50,sy=-20; int s = ((((value)&0xff000000)>>24)&0x000000ff);//攻 int t = ((((value)&0x00ff0000)>>16)&0x000000ff);//防 int d = ((((value)&0x0000ff00)>>8 )&0x000000ff);//敏 int h = ((value)&0x000000ff);//保留 if( s > 0 ){ sprintf_s( itemup_msg, "攻增加 %d", s); StockFontBuffer( x+sx , y+sy, FONT_PRIO_FRONT, FONT_PAL_WHITE, itemup_msg, 0 ); sy-=20; } if( t > 0 ){ sprintf_s( itemup_msg, "防增加 %d", t); StockFontBuffer( x+sx , y+sy, FONT_PRIO_FRONT, FONT_PAL_WHITE, itemup_msg, 0 ); sy-=20; } if( d > 0 ){ sprintf_s( itemup_msg, "敏增加 %d", d); StockFontBuffer( x+sx , y+sy, FONT_PRIO_FRONT, FONT_PAL_WHITE, itemup_msg, 0 ); sy-=20; } } #endif #ifdef _ITEM_COUNTDOWN void ShowCounttime(int sectime, int x, int y) { char buf[256]; int day; int hour; int min; if( sectime <= 0 ) return; if (sectime > 86400) { day = sectime / 86400; hour = (sectime / 3600) - (day * 24); min = (sectime / 60) - (day * 1440) - (hour * 60); sprintf_s( buf, "约%d天%d时%d分", day, hour, min); } else if( sectime > 3600 ){ hour = sectime/3600; min = (sectime/60)-(hour*60); sprintf_s( buf,"约%d时%d分",hour,min); }else if(sectime > 60 ){ min = sectime/60; sprintf_s( buf," 约%d分",min); }else{ sprintf_s( buf," 约1分"); } //StockFontBuffer( x-20 , y-20, FONT_PRIO_FRONT, FONT_PAL_WHITE, buf , 0 ); StockFontBuffer(x + 30 , y + 10, FONT_PRIO_FRONT, FONT_PAL_WHITE, buf , 0); } #endif #ifdef _PET_SKINS static int btnShowSkinWin = -2; static int btnShowSkinWinState = FALSE; ACTION *petActSkins = NULL; int originalPetSkin; void initPetSkinWin() { if (btnShowSkinWin != -2) { btnShowSkinWin = -2; btnShowSkinWinState = FALSE; if (petActSkins != NULL) { DeathAction(petActSkins); petActSkins = NULL; } } } void petChange(int graphNo) { if (petActSkins != NULL) { petActSkins->anim_chr_no = graphNo; } } void petSkinProc() { static int btnPrev; static int btnNext; static int btnPrevState; static int btnNextState; static int btnSkinSet; static int btnExit; static int x = 293, y = 120; btnShowSkinWin = StockDispBuffer(76, 290, DISP_PRIO_IME3, CG_PET_SKINS_SHOW_BTN + btnShowSkinWinState, 2); if (petActSkins == NULL && btnShowSkinWinState) { petActSkins = MakeAnimDisp(x + 65, y + 35, originalPetSkin, ANIM_DISP_PET); } if (HitDispNo == btnShowSkinWin){ extern void ShowBottomLineString(int iColor, LPSTR lpstr); ShowBottomLineString(FONT_PAL_WHITE, "更换宠物皮肤。"); if (mouse.onceState & MOUSE_LEFT_CRICK){ if (btnShowSkinWinState){ initPetSkinWin(); play_se(203, 320, 240); } else { play_se(202, 320, 240); btnShowSkinWinState = TRUE; } } } if (btnShowSkinWinState) { //上一个皮肤 if (HitDispNo == btnPrev){ if (mouse.onceState & MOUSE_LEFT_CRICK){ btnPrevState = TRUE; } } //下一个皮肤 if (HitDispNo == btnNext){ if (mouse.onceState & MOUSE_LEFT_CRICK){ btnNextState = TRUE; } } //设定皮肤 if (HitDispNo == btnSkinSet){ if (mouse.onceState & MOUSE_LEFT_CRICK){ } } //关闭预览 if (HitDispNo == btnExit){ if (mouse.onceState & MOUSE_LEFT_CRICK){ initPetSkinWin(); } } if (mouse.onceState & MOUSE_LEFT_CRICK_UP) { btnPrevState = FALSE; btnNextState = FALSE; } StockDispBuffer(358, 133, DISP_PRIO_MENU, CG_PET_SKINS_WIN, 0); btnPrev = StockDispBuffer(x, y, DISP_PRIO_IME3, CG_PET_SKINS_PREV_BTN + btnPrevState, 2); btnNext = StockDispBuffer(x + 132, y, DISP_PRIO_IME3, CG_PET_SKINS_NEXT_BTN + btnNextState, 2); btnSkinSet = StockDispBuffer(323, 246, DISP_PRIO_IME3, CG_PET_SKINS_SET, 2); btnExit = StockDispBuffer(395, 246, DISP_PRIO_IME3, 55252, 2); } } #endif void CloseMagicItemWin() { extern ACTION* pActMenuWnd2,*pActPet2; DeathAction(pActMenuWnd2); pActMenuWnd2 = NULL; // ???? DeathAction(pActPet2); pActPet2 = NULL; extern int ItemMixPetNo,itemNo; // ???????? ItemMixPetNo = -1; // ??????????? MenuToggleFlag ^= JOY_CTRL_I; // ?????????????????? if (MenuToggleFlag & JOY_CTRL_S){ MenuToggleFlag ^= JOY_CTRL_S; // CTRL + S ?? // ?????????? extern void DeathMenuAction(void); DeathMenuAction(); } // ???????? play_se(203, 320, 240); itemNo = -1; #ifdef _MONEYINPUT //Syu ADD 手动输入金钱量 extern bool Moneyflag ; GetKeyInputFocus(&MyChatBuffer); Moneyflag = false; #endif }