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

📄 menu.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
						}
						else 
						{
							SMenu[i].nField[j].DragCount = 0;
						}
					}
				}
			}
		}
	}
	else 
	{
		LButtonCount = 0;
		if(g_nLButtonState==STATE_BUTTON_RELEASED) //付快胶啊 规陛 冻绢柳 惑怕衬?
		{
			bSoundOn = false;
			YouGotItemFlag = 0;	
			HandItemOn = false;
			int kkk = ItemDrop();
			LButtonDown=FALSE;

			for(x=MAX_MAIN;x>=0;x--)
			{
				i=mainmenu[x];
				if( mainmenu[x] == MN_MAININTERFACE && SkillStatus != SKILL_OFF ) continue;
				if( MenuFocus(i) )  continue;   //盔窍绰 皋春 窍唱俊父 付快胶 器目胶甫 敌促
				if(! SMenu[i].bActive) continue;
				for(j=0; j<SMenu[i].nFieldCount;j++)
				{
					SMenu[i].nField[j].DragCount = 0;
					if( !MouseDrag || SMenu[i].nField[j].fLButtonDown )
					{
						if( MouseInRectCheak(SMenu[i].x, SMenu[i].y, SMenu[i].nField[j].rCheakBox))
						{
							SMenu[i].nField[j].fCheakFlag=TRUE;
							DoButtonCheckOfMenu( i, j );
							f_ReturnOn = true;
						}						
					}
					else if( g_MouseItemType && CanMoveItemToMenu(SMenu[i].nField[j].nType))
					{
						if( MouseInRectCheak(SMenu[i].x, SMenu[i].y, SMenu[i].nField[j].rCheakBox))
						{
							SMenu[i].nField[j].fCheakFlag=TRUE;
							DoButtonCheckOfMenu( i, j );
							f_ReturnOn = true;
						}
					}
					SMenu[i].nField[j].fLButtonDown = false;
				}
				if( f_ReturnOn ) 
				{
					MouseDrag = FALSE;
					return;
				}
			}
			if( SMenu[MN_FACE].bActive )
			{
				//<< 031022 kyo 
				SMenu[MN_FACE].nField[21].fCheakFlag=TRUE;
				//DoButtonCheckOfMenu( MN_FACE, 8 );
				//>> 031022 kyo
				return;
			}
			MouseDrag = FALSE;
		}
	}	
	PutMouseItemCheck();  // 付快胶 靛贰弊 吝 冻绢 哆副锭
}


void MenuSetting()
{
	g_StartMenuOn = false;
	for(int x=0;x<MAX_MAIN;x++)  //老窜 葛电 皋春 备炼眉甸阑 厚劝己栏肺 汲沥
	{
		SMenu[mainmenu[x]].bActive=FALSE;
		SMenu[mainmenu[x]].Id = mainmenu[x];
	}
	for(x=0;x<MAX_SMALL;x++)
	{
		SMenu[smallmenu[x]].bActive=FALSE;
		SMenu[smallmenu[x]].Id = smallmenu[x];
	}
	LoadHangulEnglishFont( "./data/han.fnt", "./data/eng.fnt" );
	HangulOutputArea( 0, SCREEN_WIDTH-1, 0, SCREEN_HEIGHT-1);

	InitMenu();
	ChatMgr.Clear();//020704 lsw//沁带 措拳 昏力
	CurrentMsgMgr.Clear();//020704 lsw//目繁飘 皋技瘤 昏力
	SetChatTarget(CHATTYPE_NORMAL);//020705 lsw
	HotKeyMemory.Clear();

	//捞何盒篮 概春啊 贸澜 技泼 登绰 镑.( 肺弊牢老锭)
	g_cQuest.DeleteScriptTimer();		// 021025 kyo 肺变且锭 救瘤况柳 鸥捞赣,墨款磐 捞静搁 瘤款促. 
	g_cQuest.DeleteScriptCounter();		// 021025 kyo 
}


/**************************************************************************************/
//劝己拳等 皋春狼 备己夸家甸阑 荐青
//免仿阑 窍绰 何盒
/**************************************************************************************/
void MenuSubProcessType(SMENU *SubMenu )
{
	int i,j,k;
	int code;
	int lenght;	
	int LenghtTotal;
	int ItemX,ItemY;													//酒捞袍阑 颗辨锭 荤侩窍绰 眉农 困摹
	int nWeapon_Type;													//公扁 辆幅 魄窜阑 困茄 函荐 (公扁, 规菩, 秋镐, 癌渴)
	BOOL flag=TRUE; int & ability=nWeapon_Type;							// 林牢傍 瓷仿摹 免仿阑 困茄 烙矫 函荐

	int &iMainX		= SubMenu->x;//soto_030511
	int &iMainY		= SubMenu->y;//soto_030511
	
	static int nCursor_Flicker=0;   //濒冠捞绰 目辑甫 困茄 函荐

	i = SubMenu->Id;
	for(j=0;j<SubMenu->nFieldCount;j++)   //皋春俊 备己夸家甸阑 荐青秦扼
	{
		if( !SubMenu->bActive ) break;
		Hcolor( FONT_COLOR_NUMBER );
		SetHangulAlign( TA_LEFT );

		switch(SubMenu->nField[j].nType)
		{
		case FT_LOCALWAR_JOIN :			// LTS MENU		// LTS LOCALWAR		// LTS NEW LOCALWAR
			{
				if (j==0)			// 努赴茄芭甫 急琶茄促.
				{
					int Index=GetLocalWarMapMoveIndex();
					//				AddCurrentStatusMessage(255,255,0,"%d锅捞 急琶登菌嚼聪促.",GetLocalWarMapMoveIndex());
					Spr *s = GetSprOfMenu( SubMenu->nField[Index].nImageType, SubMenu->nField[Index].nRectImage );
					if( s )	PutCompressedImage( SubMenu->x+SubMenu->nField[Index].x+s->ox, SubMenu->y+SubMenu->nField[Index].y+s->oy, s);	// 搬拌籍 磺俺柳芭 
					DrawLocalWarDefeat(SubMenu->nField[j].nImageType,j,SubMenu->x,SubMenu->y);	// 搬拌籍 磺俺柳芭
				}
				
				if(SubMenu->nField[j].fRectMouse)
				{
					FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage, SubMenu->nField[j].nImageType );
					Spr *s = GetSprOfMenu( SubMenu->nField[j].nImageType, SubMenu->nField[j].nRectImage );
					if( s )	PutCompressedImage( SubMenu->x+SubMenu->nField[j].x+s->ox, SubMenu->y+SubMenu->nField[j].y+s->oy, s);		// 急琶等芭
					s=GetSprOfMenu( SubMenu->nField[j].nImageType, 8 );
					if (s) PutCompressedImage(SubMenu->x+335+s->ox,SubMenu->y+275+s->oy, s );		// 痢荐 
					if (SubMenu->nField[j].fLButtonDown) LocalWarMapMoveClick(j);
					DrawLocalWarJoinInterface(SubMenu->nField[j].nImageType,j,SubMenu->x,SubMenu->y);	// 搬拌籍 磺俺柳芭
					DrawLocalWarDefeat(SubMenu->nField[0].nImageType,0,SubMenu->x,SubMenu->y);	// 搬拌籍 磺俺柳芭
				}
				
				break;
			}
		case FT_NOMAL_PUT : if( SubMenu->nField[j].nImageNumber || SubMenu->nField[j].nImageType || SubMenu->Id == MN_SYSTEM_OPTION )
							{
								if( SubMenu->Id == MN_MAININTERFACE && j == 17 && SCharacterData.nLevel <= 8 )
								{
									static flag = 0;
									if( flag%24 < 12 )
									{
										FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j+1].nRectImage, SubMenu->nField[j+1].nImageType );
										Spr *s = GetSprOfMenu( SubMenu->nField[j+1].nImageType, SubMenu->nField[j+1].nRectImage );
										if( s )
										PutCompressedImageFX( SubMenu->x+SubMenu->nField[j].x+s->ox, SubMenu->y+SubMenu->nField[j].y+s->oy, s, 4, 2 );
									}
									else 
									{
										FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType );
									}
									flag++;
								}
								else
								{
									FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType );
									if( (SubMenu->Id == MN_ARIGEMENT && j==0 )|| (SubMenu->Id == MN_STATUS && j==6) || (SubMenu->Id == MN_ABILITY && j==2) )
									{
										static int stch=0;
										static int de=0;
										FieldTypeNomalPutFx(SubMenu->x+11, SubMenu->y+6, SubMenu->nField[j].x, SubMenu->nField[j].y, 801+SCharacterData.nCharacterData[ARIGEMENT],de, 2);
										if(stch > 15) de-=2;
										else de+=2;
										stch++;
										stch %= 32;
									}
								}
							}
							break;
		case FT_NOMAL_PUT_CENTER : { 
										Spr *s = GetSprOfMenu(SubMenu->nField[j].nImageType, SubMenu->nField[j].nImageNumber );
										if( !s ) break;
										Spr *main = GetSprOfMenu(SubMenu->nImageType, SubMenu->nImageNumber );
										if( !main ) break;
										PutCompressedImage(SubMenu->x+main->ox, SubMenu->y+SubMenu->nField[j].y+s->oy, s);

										break;
								   }

		case FT_SYSTEM_OPTION_SCROLL :
		case FT_HIDE_AUTO_PUT :	if(SubMenu->nField[j].fRectMouse)
								{
									FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage, SubMenu->nField[j].nImageType);
//									if( !bSoundOn ) { MP3( SN_TOUCH ); bSoundOn = true; }
								}
		case FT_HIDE_PUT :	 if(SubMenu->nField[j].fLButtonDown)
									FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType);
							 break;

		case FT_HIDE_WILLDO_AUTO_PUT_MAGIC :	if(SubMenu->nField[j].fRectMouse)
												{
//													if( !bSoundOn ) { MP3( SN_TOUCH ); bSoundOn = true; }
													if( SubMenu->nField[j].nSpecialWillDo == 100 ) PrintQuickKey( "PGUP" );
													else PrintQuickKey( "PGDN" );
												}
		case FT_HIDE_WILLDO_AUTO_PUT :	if(SubMenu->nField[j].fRectMouse)
										{
//											if( !bSoundOn ) { MP3( SN_TOUCH ); bSoundOn = true; }

											if(SubMenu->nField[j].nRectImage == 16 || SubMenu->nField[j].nRectImage == 23 || SubMenu->nField[j].nRectImage == 758)
											{
												static int tt;
												static int de =10;
												if( tt ) {	de ++;	if( de > 12 ) { tt = !tt; }	}
												else { de --; if( de < 3 ) { tt = !tt; } } 
												FieldTypeNomalPutFx(SubMenu->x,SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y , SubMenu->nField[j].nRectImage , de, 2 );
											}
											else FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage);
										}
		case FT_HIDE_WILLDO_PUT :		if(SubMenu->nField[j].fLButtonDown)
										{
											FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber);
										}
										break;

		case FT_PUT_BUTTON : 
			{
				int image1 = SubMenu->nField[j].nSHideNomalCount;	// 乞家 滚瓢
				int image2 = SubMenu->nField[j].nRectImage;			// 灌篮 滚瓢
				int image3 = SubMenu->nField[j].nImageNumber;		// 喘赴 滚瓢
				int image_type = SubMenu->nField[j].nImageType;		// 捞固瘤 鸥涝

				if(SubMenu->nField[j].fLButtonDown)
					FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, image3, image_type );
				else if( SubMenu->nField[j].fRectMouse)
					FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, image2, image_type );
				else
					FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, image1, image_type );

				break;
			 }

		case FT_BBS_GO :{
							int para = SubMenu->nField[SubMenu->nField[j].nSHideNomalStart].nSHideNomalStart+SubMenu->nField[j].nSHideNomalCount;
							if( !(*c_BbsTitle[para].m_Name) ) break;

							if( SubMenu->nField[j].fRectMouse )
							{
//								if( !bSoundOn ) { MP3( SN_TOUCH ); bSoundOn = true; }
								static int tt;
								static int de =10;
								if( tt ) {	de ++;	if( de > 12 ) { tt = !tt; }	}
								else { de --; if( de < 3 ) { tt = !tt; } } 
								FieldTypeNomalPutFx(SubMenu->x,SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y , SubMenu->nField[j].nRectImage, de, 2 );
							}
							int t = SubMenu->work;
							if( t )
							{
								static start = SubMenu->nField[SubMenu->nField[j].nSHideNomalStart].nSHideNomalStart;
								if( start != SubMenu->nField[SubMenu->nField[j].nSHideNomalStart].nSHideNomalStart )
								{
									SubMenu->work = 0;
									start = SubMenu->nField[SubMenu->nField[j].nSHideNomalStart].nSHideNomalStart;
									break;
								}
									
								FieldTypeNomalPut(SubMenu->x,SubMenu->y, SubMenu->nField[t].x, SubMenu->nField[t].y , SubMenu->nField[t].nImageNumber);
								para = SubMenu->nField[SubMenu->nField[t].nSHideNomalStart].nSHideNomalStart+SubMenu->nField[t].nSHideNomalCount;
								int date = SubMenu->nField[t].nShideNomalPlus;

								Hcolor( FONT_COLOR_NAME );
								Hprint2( SubMenu->x+SubMenu->nField[date].x, SubMenu->y+SubMenu->nField[date].y, g_DestBackBuf, "            %s", c_BbsTitle[para].m_Name);

								Hcolor( FONT_COLOR_NUMBER );
								Hprint2( SubMenu->x+SubMenu->nField[date].x, SubMenu->y+SubMenu->nField[date].y, g_DestBackBuf, "%04d/%02d/%02d", c_BbsTitle[para].m_Year, c_BbsTitle[para].m_Month, c_BbsTitle[para].m_Day );
							}
							break;
						}

		case FT_MAIN_MENU : {
								int &bLButtonDownOn = SubMenu->nField[j].nShideNomalPlus;

								if( (SubMenu->nField[j].RectCount > 5) && !bLButtonDownOn )
								{
									Hcolor( 0 );
									SetHangulAlign( TA_CENTER );
									switch( SubMenu->nField[j].nSpecialWillDo )
									{
										case SWD_MAININTERFACE_ITEM	 :	MenuButtonRightExplain( SubMenu->x+SubMenu->nField[j].x, SubMenu->y+SubMenu->nField[j].y, SubMenu->nField[j].nSHideNomalCount, "Item Inventory" );
																		PrintQuickKey( "S" );
																		break;
										case SWD_MAININTERFACE_MAGIC :	MenuButtonRightExplain( SubMenu->x+SubMenu->nField[j].x, SubMenu->y+SubMenu->nField[j].y, SubMenu->nField[j].nSHideNomalCount, "Magic Select" );
																		PrintQuickKey( "W" );
																		break;								
										case SWD_MAININTERFACE_PARTY :	MenuButtonLeftExplain( SubMenu->x+SubMenu->nField[j].x, SubMenu->y+SubMenu->nField[j].y, SubMenu->nField[j].nSHideNomalCount, "Party" );
																		PrintQuickKey( "Q" );
																		break;
										case SWD_MAININTERFACE_SKILL :	MenuButtonLeftExplain( SubMenu->x+SubMenu->nField[j].x, SubMenu->y+SubMenu->nField[j].y, SubMenu->nField[j].nSHideNomalCount, "SKILL" );
																		PrintQuickKey( "A" );
																		break;

										case SWD_MENU_OPEN : switch( SubMenu->nField[j].nWillDo )
															 {
																case MN_SYSTEM :	MenuButtonRightExplain( SubMenu->x+SubMenu->nField[j].x, SubMenu->y+SubMenu->nField[j].y, SubMenu->nField[j].nSHideNomalCount, "System Option" );
																					PrintQuickKey( "X" );
																					break;
															 }
															 break;
									}
								}
								else SubMenu->nField[j].nSHideNomalCount = 100;

								if( SubMenu->nField[j].fLButtonDown || SubMenu->nField[j].fCheakFlag ) bLButtonDownOn = true;
								if( !SubMenu->nField[j].fRectMouse ) bLButtonDownOn = false;

							}
		case FT_HIDE_SPECIAL_WILLDO_AUTO_PUT :{
												if(SubMenu->nField[j].fRectMouse)
												{
//													if( !bSoundOn ) { MP3( SN_TOUCH ); bSoundOn = true; }
													switch( SubMenu->nField[j].nSpecialWillDo )
													{
														case SWD_MAININTERFACE_STATUS : PrintQuickKey( "C" ); break;
														case SWD_INFO_FLAG_SET : PrintQuickKey( "M" ); break;
																				break;
													}												

													if( (SubMenu->nField[j].nImageType==DEFAULT_MENU) && ( SubMenu->nField[j].nRectImage == 16 || SubMenu->nField[j].nRectImage == 23 || SubMenu->nField[j].nRectImage == 758) )
													{
														static int tt;
														static int de =10;
														if( tt ) {	de ++;	if( de > 15 ) { tt = !tt; }	}
														else { de --; if( de < 7 ) { tt = !tt; } } 
														FieldTypeNomalPutFx(SubMenu->x,SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y , SubMenu->nField[j].nRectImage, de, 2 );
													}
													else FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage, SubMenu->nField[j].nImageType);
												}
											  }
		case FT_HIDE_SPECIAL_WILLDO_PUT :		
			if(SubMenu->nField[j].fLButtonDown)
			{
				FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType);
				if( (SubMenu->Id == MN_ARIGEMENT && j==1 )|| (SubMenu->Id == MN_STATUS && j==7) || (SubMenu->Id == MN_ABILITY && j==3) )
				{
					static int stch=0;
					static int de=0;
					FieldTypeNomalPutFx(SubMenu->x+11, SubMenu->y+6, SubMenu->nField[j].x, SubMenu->nField[j].y, 801+SCharacterData.nCharacterData[ARIGEMENT],de, 2);
					if(stch > 15) de-=2;
					else de+=2;
					stch++;
					stch %= 32;
				}
			}break;
		case FT_MAKE_RARE_MORE://011013 lsw
		case FT_RARE_GROUP_SCROLL://011014 lsw 
		//011004 lsw >
		case FT_SHOW_SPECIAL_WILLDO_AUTO_PUT :
			{
					if(SubMenu->nField[j].fRectMouse)
					{
						if(SubMenu->nField[j].fLButtonDown)//滚瓢 努腐 捞亥飘
						{
							FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage, SubMenu->nField[j].nImageType );
						}
						else
						{
							FieldTypeNomalPut   (SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y , SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType );
							FieldTypeNomalPutFx3(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y , SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType, 3, 2 );
						}
					}
					else
					{
						FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType );
					}					
			}
			break;
		//011004 lsw <
		case FT_MENU_MOVE_DEFAULT : 
								{							// 皋春啊 框流牢促~~
									if( SubMenu->nTemp && MouseDrag)
									{
										static int mox, moy;

										int &GabX = SubMenu->nField[j].nSHideNomalCount;
										int &GabY = SubMenu->nField[j].nSHideNomalStart;

										Spr *s = GetSprOfMenu( SubMenu->nImageType, SubMenu->nImageNumber );
										if( !s ) return;

										if( g_pointMouseX < 0 || g_pointMouseX > GAME_SCREEN_XSIZE || g_pointMouseY < 0 || g_pointMouseY > GAME_SCREEN_YSIZE ) 
										{
											Box_( Mapx+mox, Mapy+moy, s->xl, s->yl, RGB16(255,255,255) );
											break;
										}						

										if( g_pointMouseX - GabX < 0 )	mox = 0;
										else if( g_pointMouseX+(s->xl-GabX) > GAME_SCREEN_XSIZE )	mox = GAME_SCREEN_XSIZE - s->xl;
										else	mox = g_pointMouseX - GabX;
										
										if( g_pointMouseY - GabY < 0 )	moy = 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -