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

📄 menu.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
										else if( g_pointMouseY+(s->yl-GabY) > GAME_SCREEN_YSIZE )	moy = GAME_SCREEN_YSIZE - s->yl;
										else	moy = g_pointMouseY - GabY;

										Box_( Mapx+mox, Mapy+moy, s->xl, s->yl, RGB16(255,255,255) );
										if( GetSysInfo( SI_GAME_MAKE_MODE ) )
										{
											SetHangulAlign( TA_CENTER );
											Hcolor( 255, 255, 255 );
											Hprint2( 280, 80, g_DestBackBuf, "( %d, %d )", SubMenu->x, SubMenu->y );
										}
										SubMenu->nField[j].nShideNomalPlus = mox*1000 + moy;
									}

									if( SubMenu->nTemp && !LButtonDown )
									{
										SubMenu->x = SubMenu->nField[j].nShideNomalPlus / 1000;
										SubMenu->y = SubMenu->nField[j].nShideNomalPlus % 1000;
										SubMenu->nTemp = false;
										SubMenu->nField[j].nSHideNomalCount = 0;
										SubMenu->nField[j].nSHideNomalStart = 0;
										SubMenu->nField[j].nShideNomalPlus = 0;
									}
									break;
								}

		case FT_MENU_MOVE : {							// 皋春啊 框流牢促~~
								if( !SMenu[ MN_ITEM ].bActive ) 
								{
									SmallMenuClose();
									break;
								}
								if( SubMenu->nTemp && MouseDrag)
								{
									static int mox, moy;

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

									if( g_pointMouseX < 0 || g_pointMouseX > 320+GABX_SCREEN*2 || g_pointMouseY < 0 || g_pointMouseY > 352+GABY_SCREEN*2 ) 
									{
										Box_( Mapx+mox, Mapy+moy, spr[SubMenu->nImageNumber].xl, spr[SubMenu->nImageNumber].yl, RGB16(255,255,255) );
										break;
									}						

									if( g_pointMouseX - GabX < 0 )	mox = 0;
									else if( g_pointMouseX+(spr[SubMenu->nImageNumber].xl-GabX) > 320+GABX_SCREEN*2  )	mox = 320+GABX_SCREEN*2  - spr[SubMenu->nImageNumber].xl;
									else	mox = g_pointMouseX - GabX;
									
									if( g_pointMouseY - GabY < 0 )	moy = 0;
									else if( g_pointMouseY+(spr[SubMenu->nImageNumber].yl-GabY) > GAME_SCREEN_YSIZE )	moy = GAME_SCREEN_YSIZE - spr[SubMenu->nImageNumber].yl;
									else	moy = g_pointMouseY - GabY;

									Box_( Mapx+mox, Mapy+moy, spr[SubMenu->nImageNumber].xl, spr[SubMenu->nImageNumber].yl, RGB16(255,255,255) );
									if( GetSysInfo( SI_GAME_MAKE_MODE ) )
									{
										SetHangulAlign( TA_CENTER );
										Hcolor( 255, 255, 255 );
										Hprint2( 280, 80, g_DestBackBuf, "( %d, %d )", SubMenu->x, SubMenu->y );
									}
									SubMenu->nField[j].nShideNomalPlus = mox*1000 + moy;
								}

								if( SubMenu->nTemp && !LButtonDown )
								{
									SubMenu->x = SubMenu->nField[j].nShideNomalPlus / 1000;
									SubMenu->y = SubMenu->nField[j].nShideNomalPlus % 1000;
									SubMenu->nTemp = false;
									SubMenu->nField[j].nSHideNomalCount = 0;
									SubMenu->nField[j].nSHideNomalStart = 0;
									SubMenu->nField[j].nShideNomalPlus = 0;
								}
								break;
							}
		case FT_MENU_MOVE_DIRECT : 							// 皋春啊 框流牢促~~
							{
								if( !SubMenu->nTemp ) break;
								if( SubMenu->key != j ) break;
								if( IsRightWindowOpen() && g_pointMouseX > 321+GABX_SCREEN) break;
								if( IsLeftWindowOpen() && g_pointMouseX < 321  ) break;
								if( MouseDrag )
								{
									int move_right = SCREEN_WIDTH;
									int move_left = 0;
									bool is_right_on = IsRightWindowOpen();
									bool is_left_on = IsLeftWindowOpen();

									if( is_right_on && is_left_on ) break;
									else if( is_right_on ) move_right = 321+GABX_SCREEN;
									else if( is_left_on ) move_left = 321;

									static int mox, moy;

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

									if( g_pointMouseX < 0 || g_pointMouseX > SCREEN_WIDTH || g_pointMouseY < 0 || g_pointMouseY > GAME_SCREEN_YSIZE ) 
									{
										break;
									}

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

									if( g_pointMouseX - GabX < move_left )	mox = move_left;
									else if( g_pointMouseX+(s->xl-GabX) > move_right )	mox = move_right - s->xl;
									else	mox = g_pointMouseX - GabX;
									
									if( g_pointMouseY - GabY < 0 )	moy = 0;
									else if( g_pointMouseY+(s->yl-GabY) > GAME_SCREEN_YSIZE )	moy = GAME_SCREEN_YSIZE- s->yl;
									else	moy = g_pointMouseY - GabY;

									SubMenu->x = mox;
									SubMenu->y = moy;
									SubMenu->nField[j].nShideNomalPlus = mox*1000 + moy;
									//int ret = isCrashSmallMapByOther();
								}
								else 
								{
									SubMenu->nTemp = 0;
									SubMenu->nField[j].nShideNomalPlus = 0;
								}
								break;
							}

		case FT_HIDE_ISCROLL_AUTO_PUT :	if( ((SubMenu->nField[SubMenu->nField[j].nWillDo].nSHideNomalStart) + (SubMenu->nField[SubMenu->nField[j].nWillDo].nShideNomalPlus)) >= (SubMenu->nField[SubMenu->nField[j].nWillDo].nSHideNomalCount) )
										{
											FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType);
											break;
										}
										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);
										}
		case FT_HIDE_ISCROLL_PUT :	if(SubMenu->nField[j].fLButtonDown)
									{   //胶农费 瞪版快甫 积阿秦 固府 裹困甫 眉农秦 胶农费阑 秦急 救登搁 break茄促
//										if( ((SubMenu->nField[SubMenu->nField[j].nWillDo].nSHideNomalStart) + (SubMenu->nField[SubMenu->nField[j].nWillDo].nShideNomalPlus)) >= (SubMenu->nField[SubMenu->nField[j].nWillDo].nSHideNomalCount) )
//											break;
										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_DSCROLL_AUTO_PUT :	if( ((SubMenu->nField[SubMenu->nField[j].nWillDo].nSHideNomalStart) - (SubMenu->nField[SubMenu->nField[j].nWillDo].nShideNomalPlus)) < 0 )
										{
											FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType);
											break;
										}
										if(SubMenu->nField[j].fRectMouse)
										{
											if( SubMenu->Id == MN_ITEM ) PrintQuickKey( "PGUP" );
											FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage, SubMenu->nField[j].nImageType);
										}
		
		case FT_HIDE_DSCROLL_PUT :	 if(SubMenu->nField[j].fLButtonDown)
									 {
//										if( ((SubMenu->nField[SubMenu->nField[j].nWillDo].nSHideNomalStart) - (SubMenu->nField[SubMenu->nField[j].nWillDo].nShideNomalPlus)) < 0 )
//											break;
									 if( SubMenu->Id == MN_ITEM ) PrintQuickKey( "PGDN" );
										FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType);
									 }
									 break;

		case FT_PARTY : {
							if( !SubMenu->CheakType )
							{
								SubMenu->CheakType = 1;
								Kein_PutMessage( KM_INFO, kein_GetMenuString( 77 ) );
								Kein_PutMessage( KM_INFO, kein_GetMenuString( 126 ) );
								Kein_PutMessage( KM_INFO, kein_GetMenuString( 127 ) );
							}
							int para = SubMenu->nField[j].nWillDo;
							CharacterParty target={0,};

							switch( SubMenu->nTemp )
							{
								case PARTY :		target = SCharacterData.party[para]; break;
								case RELATION :		target = SCharacterData.relation[para]; break;
								case EMPLOYMENT :	target = SCharacterData.employment[para]; break;
							}
							
							if( *target.m_Name )
							{
								if( SubMenu->nField[j].fLButtonDown )
									PutCharImage( SubMenu->x+SubMenu->nField[j].x-30, SubMenu->y+SubMenu->nField[j].y-35, target.m_ImageNo, 6, FS_SMALL,2, target.m_Gender );
								else PutCharImage( SubMenu->x+SubMenu->nField[j].x-30, SubMenu->y+SubMenu->nField[j].y-35, target.m_ImageNo, 0, FS_SMALL, 0, target.m_Gender );
							}
							break;
						}

		case FT_PARTY_FACE: {
								CharacterParty leader={ 0, };
								int para = SubMenu->nField[j].nWillDo;

								FieldTypeNomalPut( SubMenu->x, SubMenu->y, 148, 110, 27, MAIN_ETC );		// 饭骇, str嘛绰 魄..

								switch( SubMenu->nTemp )
								{
									case PARTY :		leader = SCharacterData.party[para]; break;
									case RELATION :		leader = SCharacterData.relation[para]; break;
									case EMPLOYMENT :	leader = SCharacterData.employment[para]; break;
								}

								if( *leader.m_Name )
								{
									PutCharImage( SubMenu->x+SubMenu->nField[j].x-30, SubMenu->y+SubMenu->nField[j].y-35, leader.m_ImageNo, 0, FS_SMALL, 0, leader.m_Gender );
									SetHangulAlign( TA_RIGHT );
									if( !leader.m_Str )				// 0620 YGI
									{
										//Hprint2( SubMenu->x+275, SubMenu->y+115,g_DestBackBuf, "Unknown" );
									}
									else
									{
										//Hprint2( SubMenu->x+278, SubMenu->y+116,g_DestBackBuf, "%d", leader.m_Str );
										SetHangulAlign( TA_LEFT );
										//Hprint2( SubMenu->x+209, SubMenu->y+116,g_DestBackBuf, "%d", leader.m_Lv );
										//PutLvNameByColor( SubMenu->x+162, SubMenu->y+116, leader.m_Lv , leader.m_Class );		// 0811 YGI
									}
									
									Hcolor( FONT_COLOR_DEFAULT );
									SetHangulAlign( TA_CENTER );
									Hprint2( SubMenu->x+236, SubMenu->y+144, g_DestBackBuf, "%s", SHideNomal[HN_MAKECHARACTER_CLASS_TEXT][leader.m_Class].temp );

									Hcolor( FONT_COLOR_NAME );
									Hprint2( SubMenu->x+221, SubMenu->y+99 ,g_DestBackBuf, "%s", leader.m_Name );
								}
								
								// 颇萍肺 烹秦 掘绰 版氰摹 焊咯林扁
								// 2, 3, 4
								SubMenu->nField[2].nType = FT_PUT_BUTTON;
								SubMenu->nField[3].nType = FT_PUT_BUTTON;
								SubMenu->nField[4].nType = FT_PUT_BUTTON;

								switch( g_Menu_Variable.m_PartySelect )
								{
									case 0 :
									case PS_EXP :
										SubMenu->nField[2].nType = FT_NOMAL_PUT;
										break;

									case PS_TACTIC :
										SubMenu->nField[3].nType = FT_NOMAL_PUT;
										break;

									case PS_MAGIC_TAC :
										SubMenu->nField[4].nType = FT_NOMAL_PUT;
										break;
								}
								break;
							}
	
		case FT_LEVELUP_BUTTON : {
									static int ct=-1;
									ct++;
									if(ct > 20)
									{
										FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage);
										if(ct > 40)	ct = 0;
									}

									if(SubMenu->nField[j].fRectMouse) PrintQuickKey( "U" );
									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_LEVELUP :	
			{
				FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nSpecialWillDo,SubMenu->nField[j].nImageType);
				if(SubMenu->nField[j].fRectMouse)
				{
//								if( !bSoundOn ) { MP3( SN_TOUCH ); bSoundOn = true; }
					FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nRectImage,SubMenu->nField[j].nImageType);//020515 lsw
				}
				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);//020515 lsw
				}
			}break;

		case FT_FIRE :	y_delay++;
						if(y_delay==5)
						{
							cDiceCount++; // 促捞胶俊辑 墨款磐甫 眉农窍绰 函荐甫 捞侩
							y_delay=0;
						}
						if(cDiceCount==33) cDiceCount=0; //醚 33橇饭烙
						FieldTypeNomalPutFx(SubMenu->x,SubMenu->y,SubMenu->nField[j].x, SubMenu->nField[j].y-spr[cDiceCount+173].yl , cDiceCount+173, 15, 2 ); 
						break;

		case FT_GOD_INTRUDUCTION : {		//	脚傈 汲疙 免仿
										char *text;

										text ="";
										switch( SubMenu->nTemp )
										{
											case MN_GOD_EDELBLHOY : text = lan->OutputMessage(7,76); break;//010215 lsw
											case MN_GOD_TEFFERY : text = lan->OutputMessage(7,77); break;//010215 lsw
											case MN_GOD_LETTY : text = lan->OutputMessage(7,78); break;//010215 lsw
											case MN_GOD_OREM : text = kein_GetMenuString( 35 ); break;
											default : break;
										}

										if( !*text ) break;
										RectTextPut(SubMenu->x+SubMenu->nField[j].x,SubMenu->y+SubMenu->nField[j].y,SubMenu->nField[j].nRectImage, text); 
										break;
								   }
		case FT_GOD_MEETING :{
								char *text;
								text ="";
								int &count = SubMenu->nField[j].nSHideNomalStart;

								if( !SubMenu->CheakType )
								{
									SubMenu->CheakType = 1;
									count = 0;		// 胶农费阑 贸澜栏肺 倒妨 初绰促.
								}
								
								switch( SubMenu->nTemp )
								{
									case MN_GOD_EDELBLHOY : 
										{
											switch( count )
											{
												case 0:	text = lan->OutputMessage(7,79);break;//010215 lsw
												case 1: text = lan->OutputMessage(7,80); break;//010215 lsw
											}
											break;
										}	
									case MN_GOD_TEFFERY : 
										{
											switch( count )
											{
												case 0:	text = lan->OutputMessage(7,81);break;
												case 1: text = lan->OutputMessage(7,82); break;
											}
											break;
										}	
									case MN_GOD_LETTY : 
										{
											switch( count )
											{
												case 0:	text = lan->OutputMessage(7,83);break;//010215 lsw
												case 1: text = lan->OutputMessage(7,84); break;//010215 lsw
											}
											break;
										}	
									case MN_GOD_OREM :
										{
											switch( count )
											{
												case 0:	text = lan->OutputMessage(7,83);break;//010215 lsw
												case 1: text = lan->OutputMessage(7,84); break;//010215 lsw
											}
											break;
										}
									default : break;
								}


								if( !*text ) break;
								RectTextPut(SubMenu->x+SubMenu->nField[j].x,SubMenu->y+SubMenu->nField[j].y,SubMenu->nField[j].nRectImage, text); 
								break;
							}
		case FT_GOD_REGIST_OKCANCEL	: {
										char text[20]="";
										char text2[128];

										GetBelieveGodByMenu( SubMenu->nTemp, text );
										if( !*text ) break;

										sprintf( text2, lan->OutputMessage(7,85), text );//010215 lsw
										RectTextPut(SubMenu->x+SubMenu->nField[j].x,SubMenu->y+SubMenu->nField[j].y,SubMenu->nField[j].nRectImage, text2); 
										break;
									  }
		case FT_PREACH_NAME : 
			{// 捞抚 嘛绰 沫
				FieldTypeNomalPut(SubMenu->x, SubMenu->y, SubMenu->nField[j].x, SubMenu->nField[j].y, SubMenu->nField[j].nImageNumber, SubMenu->nField[j].nImageType );
				int &count = SubMenu->nField[j].nSHideNomalCount;
				char *name = SubMenu->nField[j].temp;
				SetFocus2(HWND_3);
				EWndMgr.GetTxt(HWND_3, name, 20);//021001 lsw
				if( count % 16 < 8 ) 
				{
					char name2[30];
					sprintf(name2, "%s_", name );
					RectTextPut(SubMenu->x+SubMenu->nField[j].x+7,SubMenu->y+SubMenu->nField[j].y+9,SubMenu->nField[j].nRectImage, name2);
				}
				else RectTextPut(SubMenu->x+SubMenu->nField[j].x+7,SubMenu->y+SubMenu->nField[j].y+9,SubMenu->nField[j].nRectImage, name);
				count++;
			}break;
		case FT_GOD_REGIST_ERROR : {
										char text[1024];
										char god[40];
										int belive = GetBelieveGodByMenu( SubMenu->nTemp, god );
										
										if( SCharacterData.believe_god == belive )
										{
											sprintf( text, lan->OutputMessage(7,86) );//010215 lsw
										}
										else sprintf( text, lan->OutputMessage(7,87), god );//010215 lsw
										
										RectTextPut(SubMenu->x+SubMenu->nField[j].x,SubMenu->y+SubMenu->nField[j].y,SubMenu->nField[j].nRectImage, text);
										break;
								   }
			//------------------------------------------
		case FT_PUBLIC_BBS : {
							

⌨️ 快捷键说明

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