?? menustart.cpp
字號:
PlayListAutoSounds( n, 0, 0, ing );
}
}
/*********************************竊薦 家膠*******************************************/
void PutImageCenter(int mx, int my, int x, int y, int nImageNumber) // 吝埃藹欄肺 弊覆 免仿, 鞘靛父 免仿 啊瓷. 皋春綽 救蹬夸..
{
if( !spr[nImageNumber].img )
{
LoadSmallMenuImage( nImageNumber );
}
PutCompressedImage(mx+x, my+y, &spr[nImageNumber]);
}
void FieldTypeNomalPut(int mx, int my, int x,int y,int nImageNumber, int type)
{
Spr *s;
s = GetSprOfMenu( type, nImageNumber );
if( s ) PutCompressedImage(mx+x+s->ox, my+y+s->oy, s);
}
//010910 lsw
void FieldTypeNomalPutFx3(int mx, int my, int x,int y,int nImageNumber, int type , int t, int j)
{
Spr *s = GetSprOfMenu( type, nImageNumber );
if( s )
{
PutCompressedImageFX(mx+x+s->ox, my+y+s->oy, s, t, j);
// PutCompressedImage(mx+x+s->ox, my+y+s->oy, s);
}
}
void FieldTypeNomalPutFx(int mx, int my, int x,int y,int nImageNumber, int t, int j)
{
if( nImageNumber >= 10000 )
{
FieldTypeNomalPutFx2(mx, my, x, y, nImageNumber-10000, t, j );
return;
}
if( !spr[nImageNumber].img )
{
LoadSmallMenuImage( nImageNumber );
}
PutCompressedImageFX(mx+x+spr[nImageNumber].ox, my+y+spr[nImageNumber].oy, &spr[nImageNumber], t, j);
}
//acer7
void FieldTypeTextPut(int mx,int my,int x,int y,char *temp)
{
int i=0;
int lenght=0;
int code;
while( temp[i] != '\0' )
{
code = temp[i];
if( temp[i]==' ' || (temp[i] >='A' && temp[i] <='Z') )
{
if(code==32) lenght+=4;
else
{
code=code-'A'; // A綽 0鍋撈促.
Spr *s= &spr_alphabet[code];
PutCompressedImage( mx+x+lenght+s->ox, my+y+s->oy, s );
lenght+=s->xl;
}
}
i++;
}
}
//鞘夸茄 皋春 撈固瘤 單撈鷗甫 皋葛府俊 肺靛
void LoadMenuData( int nNum )
{
FILE *fp;
char temp[40];
int i=0;
DWORD Off=0;
DWORD size;
sprintf( temp, "./data/%s", "SysMenu.dat" );
fp = Fopen( temp, "rb" );
if( fp == NULL ) return;
while(1)
{
if(aMenuImageNumber[nNum][i] == 9999)
break;
if( aMenuImageNumber[nNum][i] > MAX_SYSDAT )
{
sprintf( temp, "./data/plus%03d.csp", aMenuImageNumber[nNum][i]-MAX_SYSDAT );
LoadSpriteOnlyOne( &spr[aMenuImageNumber[nNum][i]], temp );
}
else
{
if( spr[ aMenuImageNumber[nNum][i]].img )
{
int a = 0;
}
else
{
fseek(fp, 4 * aMenuImageNumber[nNum][i] + 2, SEEK_SET);
fread( &Off, sizeof( DWORD ), 1, fp);
fseek(fp, Off, SEEK_SET);
fread( &size, sizeof( DWORD ), 1, fp);
fread( &spr[ aMenuImageNumber[nNum][i] ].xl, sizeof( short ), 1, fp);
fread( &spr[ aMenuImageNumber[nNum][i] ].yl, sizeof( short ), 1, fp);
fread( &spr[ aMenuImageNumber[nNum][i] ].ox, sizeof( short ), 1, fp);
fread( &spr[ aMenuImageNumber[nNum][i] ].oy, sizeof( short ), 1, fp);
fread( &spr[ aMenuImageNumber[nNum][i] ].size, sizeof( unsigned int ), 1, fp);
MemAlloc(spr[ aMenuImageNumber[nNum][i] ].img,spr[ aMenuImageNumber[nNum][i] ].size);
fread( spr[ aMenuImageNumber[nNum][i] ].img, spr[ aMenuImageNumber[nNum][i] ].size, 1, fp);
convert565to555( &spr[ aMenuImageNumber[nNum][i]] );
}
}
dw_TotalImageSize += spr[ aMenuImageNumber[nNum][i] ].size;
i++;
}
fclose(fp);
}
//鞘夸 絕綽 皋春 撈固瘤 皋葛府甫 館券
void FreeMenuData( int nNum )
{
int i=0;
while(1)
{
if(aMenuImageNumber[nNum][i] == 9999)
break;
if( spr[aMenuImageNumber[nNum][i]].img )
{
MemFree( spr[aMenuImageNumber[nNum][i]].img );
dw_TotalImageSize -= spr[aMenuImageNumber[nNum][i]].size;
}
spr[aMenuImageNumber[nNum][i]].img = NULL;
i++;
}
}
//函版矯 int GetRectTextLine闌 嘎 苗 臨 薦 樂絹具 欽聰促
//######################################################################################
//######################################################################################
void kein_TextPut(int x, int y, char *sSource) // " ` "撈 樂闌 版快狼 免仿
{
int i=0, count[20], j=1; // \n狼 俺薦甫 備秦輯 弊 困摹甫 歷厘茄促.
int start=0;
count[0]=0;
// Hcolor( FONT_COLOR_DEFAULT );
while((unsigned int)i < strlen(sSource))
{
if((*(sSource + i))=='`') { count[j]=i; j++; }
i++;
}
count[j]=i; // 付瘤阜 貿府
char temp[500];
if(j==1) Hprint(x, y, g_DestBackBuf, sSource);
else
{
for(i=1;i<=j;i++)
{
start=count[i-1];
memset(temp,' ',500);
memcpy(temp,(start)?sSource+start+1:sSource,count[i]-count[i-1]-1);
Hprint(x,y+(i-1)*15, g_DestBackBuf,temp);
}
}
}
//############################# 臂揪啊 棟坷弗單夸~ ##########################
void MoveTextPut(int x, int y, char *sSource, int type) // 促 棟坷福絆 唱輯狼 貿府啊 鞘夸
{
int i=0, count[20], j=1;
int start=0;
int row;
char temp[1000];
int y_source = y;
static int delay = 0;
static int skip_count = 0;
static int skip = 0;
static int y_plus=y;
if( type )
{
delay = 0;
skip_count = 0;
skip = 0;
y_plus=y_source;
move_text_flag = 0;
}
count[0]=0;
while((unsigned int)i < strlen(sSource))
{
if((*(sSource + i))=='`') { count[j]=i; j++; }
i++;
}
count[j]=i; // 付瘤阜 貿府
row = j;
if(j > 20) j = 20; // 20臨 撈惑籃 貿府竅瘤 臼綽促.
y = y_plus;
delay++;
static int limits = 4;
if( delay > limits )
{
y--;
delay = 0;
skip_count++;
if( y+skip*20 < 140 /*y_source - (FONTSIZE_+skip)*(skip+1)*/)
{
skip++;
if(j < row ) j++;
}
}
y_plus = y;
// HangulOutputArea( 100, 450, 200, 400 );
if(j==1) Hprint(x, y, g_DestBackBuf, sSource);
else
{
for(i=1;i<=j;i++)
{
start=count[i-1];
memset(temp,' ',1000);
memcpy(temp,(start)?sSource+start+1:sSource,count[i]-count[i-1]-1);
if( i > skip )
{
if( y+(i-1)*20 < 420 ) Hprint(x,y+(i-1)*20, g_DestBackBuf, temp);
}
}
}
switch(SpaceBarPress())
{
case '0' : break;
case 'r' : delay = 0;
skip_count = 0;
skip = 0;
y_plus=y_source;
break;
case 'p' : limits++; break;
case 'm' : limits--; break;
}
Hprint2(5 , 40 , g_DestBackBuf,"%d", limits);
// HangulOutputArea( 0, 639, 0, 479 );
}
//############################## MENU CALL ####################################//
void CallMenu(int Menu, int x, int y, BOOL bMenuFocus)
{
SMenu[Menu].bActive = TRUE;
SMenu[Menu].x=x+GABX_SCREEN;
SMenu[Menu].y=y;
if(bMenuFocus) y_MenuFocus = Menu;
MP3( SN_MENU_OPEN );
SoundOn = false;
SetChatMode(CM_COMMAND,true);//021001 lsw //牢磐其撈膠 哆擱 公煉扒 盲潑芒 摧綽促
EWndMgr.ClearAllTxt();//021001 lsw
}
void CallMenu( int Menu, int temp, bool is_focus )
{
if(Menu == MN_MERCHANT_FIND)
{
// ::AddCurrentStatusMessage(255,0,0,"酒流 惑牢酒撈袍 備澇籃 登瘤 臼嚼聰促.");
// return; //soto-030511 眠啊..烙矯 惑牢八禍 輛豐饒 瘤況具 竊.
}
SetChatMode(CM_COMMAND,true);//021001 lsw //牢磐其撈膠 哆擱 公煉扒 盲潑芒 摧綽促
EWndMgr.ClearAllTxt();//021001 lsw
if( SMenu[Menu].bActive ) return;
SoundOn = false;
SMenu[Menu].bActive = TRUE;
SMenu[Menu].nTemp = temp;
switch( Menu )
{
case MN_YESNO :
case MN_LEVELUP :
case MN_STATUS :
case MN_ABILITY :
case MN_ITEM :
case MN_ARIGEMENT : MP3( SN_MENU_OPEN); break;
case MN_PARTY_FACE1 :
case MN_PARTY_FACE2 :
case MN_PARTY_FACE3 :
case MN_PARTY_FACE4 :
case MN_PARTY_FACE5 :
case MN_PARTY_FACE6 :
case MN_AWAKE : break;
case MN_GOD_EDELBLHOY :
case MN_GOD_TEFFERY :
case MN_GOD_OREM :
case MN_GOD_LETTY : MP3( SN_MENU_OPEN ); break;
case MN_DISTANCE_TABLE :
case MN_STORE_SIGN : MP3( SN_MENU_OPEN ); break;
case MN_DIVIDE_ITEM : MP3( SN_BOX_OPEN ); break;
case MN_ITEM_EXPLAN :
case MN_MAGICBOOK :
case MN_OKCANCEL_MESSAGEBOX :
case MN_OK_MESSAGEBOX :
case MN_MAGIC_BOOK :
case MN_LEARN_MAGIC_BOOK :
case MN_MEM_BOOK :
case MN_SMALL_MAP :
case MN_TIME_DISPLAY_MENU :
case MN_QUICK_MAGIC_SCROLL :
case MN_QUICK_MAGIC_PLUS :
case MN_TIME_DISPLAY_ON_OFF :
case MN_START_MAP :
case MN_QUICK_SKILL :
case MN_HUNTER_MAIN :
case MN_HUNTER_REGIST :
case MN_HUNTER_LIST :
case MN_QUEST :
case MN_FAME :
case MN_QUEST_INDEX :
case MN_RELATION :
case MN_MAN_TO_MAN :
default : MP3( SN_MENU_OPEN ); break;
}
if( is_focus ) y_MenuFocus = Menu;
}
//################################################################################//
void CallItemMessageBox( int menu, int item_num, char *source )
{
y_MenuFocus = MN_ITEM_MESSAGEBOX;
SMenu[MN_ITEM_MESSAGEBOX].nTemp = menu;
SMenu[MN_ITEM_MESSAGEBOX].bActive = true;
SMenu[MN_ITEM_MESSAGEBOX].nField[1].nWillDo = item_num;
strcpy(SMenu[MN_ITEM_MESSAGEBOX].nField[1].temp, source);
MP3( SN_MENU_OPEN );
}
void CallOkCancelMessageBox( int menu, int x, int y, const char *source, bool ok_cancel, int param ) // ok父 樂綽 扒瘤 ok_cancel撈 樂綽 皋矯瘤 冠膠牢瘤甫 急琶, menu綽 齲免茄 皋春甫 持綽促
{
x +=GABX_SCREEN;
if( ok_cancel )
{
if( g_StartMenuOn )
SMenu[MN_OKCANCEL_MESSAGEBOX].nTemp = menu;
else SMenu[MN_OKCANCEL_MESSAGEBOX].nTemp = y_MenuFocus;
y_MenuFocus = MN_OKCANCEL_MESSAGEBOX;
SMenu[MN_OKCANCEL_MESSAGEBOX].bActive = true;
SMenu[MN_OKCANCEL_MESSAGEBOX].x = x;
SMenu[MN_OKCANCEL_MESSAGEBOX].y = y;
strcpy(SMenu[MN_OKCANCEL_MESSAGEBOX].nField[4].temp, source);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -