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

📄 menustart.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		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 + -