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

📄 ui_lgbk.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
				button->SetFlagBitOn(C_BIT_INVISIBLE);
			else
				button->SetFlagBitOff(C_BIT_INVISIBLE);
		}

		button=(C_Button *)win->FindControl(LOG_NEW);
		if(button != NULL)
		{
			if(LogState & LB_OPPONENT)
				button->SetFlagBitOn(C_BIT_INVISIBLE);
			else
				button->SetFlagBitOff(C_BIT_INVISIBLE);
		}

		button=(C_Button *)win->FindControl(LOG_CLEAR);
		if(button != NULL)
		{
			if(LogState & LB_OPPONENT)
				button->SetFlagBitOn(C_BIT_INVISIBLE);
			else
				button->SetFlagBitOff(C_BIT_INVISIBLE);
		}

		button=(C_Button *)win->FindControl(LOG_CANCEL);
		if(button != NULL)
		{
			if(LogState & LB_OPPONENT)
				button->SetFlagBitOn(C_BIT_INVISIBLE);
			else
				button->SetFlagBitOff(C_BIT_INVISIBLE);
		}


		button = (C_Button *)win->FindControl(PATCH_PIC);
		if(button)
		{
			if(!(LogState & LB_EDITABLE)||LogState & LB_OPPONENT)
				button->SetFlagBitOff(C_BIT_ENABLED);
			else
				button->SetFlagBitOn(C_BIT_ENABLED);

			if(Patch)
			{
				_TCHAR buf[MAX_PATH];
				_stprintf(buf,_T("%s\\patches\\%s.tga"),FalconDataDirectory,Patch);
				SetImage(PATCH_PIC, buf, CurPatch);
			}
			else if(*(UI_logbk.GetPatch()) != 0)
			{
				_TCHAR buf[MAX_PATH];
				_stprintf(buf,_T("%s\\patches\\%s.tga"),FalconDataDirectory,UI_logbk.GetPatch());
				SetImage(PATCH_PIC, buf, CurPatch);
			}
			else
			{
				imageID = NOPATCH;
				if(UI_logbk.GetPatchResource())
					imageID = UI_logbk.GetPatchResource();

				button->SetImage(C_STATE_0,imageID);
				button->SetImage(C_STATE_1,imageID);
				button->SetImage(C_STATE_SELECTED,imageID);
				button->SetImage(C_STATE_DISABLED,imageID);
				button->Refresh();
				CurPatch = 0;
			}
		}

		button = (C_Button *)win->FindControl(PILOT_PIC);
		if(button)
		{
			if(!(LogState & LB_EDITABLE)||LogState & LB_OPPONENT)
				button->SetFlagBitOff(C_BIT_ENABLED);
			else
				button->SetFlagBitOn(C_BIT_ENABLED);

			if(Picture)
			{
				button->SetImage(C_STATE_0,Picture);
				button->SetImage(C_STATE_1,Picture);
				button->SetImage(C_STATE_SELECTED,Picture);
				button->SetImage(C_STATE_DISABLED,Picture);
				button->Refresh();
			}
			else if(*(UI_logbk.GetPicture()) != 0)
			{
				_TCHAR buf[MAX_PATH];
				_stprintf(buf,_T("%s\\pictures\\%s.tga"),FalconDataDirectory,UI_logbk.GetPicture());
				SetImage(PILOT_PIC, buf,CurPic);
			}
			else
			{
				imageID = NOFACE;
				if(UI_logbk.GetPictureResource())
					imageID = UI_logbk.GetPictureResource();

				button->SetImage(C_STATE_0,imageID);
				button->SetImage(C_STATE_1,imageID);
				button->SetImage(C_STATE_SELECTED,imageID);
				button->SetImage(C_STATE_DISABLED,imageID);
				button->Refresh();
				CurPic = 0;
			}
		}


		ebox=(C_EditBox *)win->FindControl(PASSWORD_LIST);
		if(ebox)
		{
			if(!(LogState & LB_EDITABLE)||LogState & LB_OPPONENT)
				ebox->SetFlagBitOff(C_BIT_ENABLED);
			else
				ebox->SetFlagBitOn(C_BIT_ENABLED);
			
			_TCHAR Pwd[PASSWORD_LEN+1];

			if(UI_logbk.GetPassword(Pwd))
				ebox->SetText(Pwd);
			else
				ebox->SetText(_T(""));
			ebox->Refresh();
		}

		
		

		ebox=(C_EditBox *)win->FindControl(PILOT_LIST);
		if(ebox)
		{
			if(!(LogState & LB_EDITABLE)||LogState & LB_OPPONENT)
				ebox->SetFlagBitOff(C_BIT_ENABLED);
			else
				ebox->SetFlagBitOn(C_BIT_ENABLED);

			ebox->SetText(UI_logbk.Name());
			ebox->Refresh();
		}

		ebox=(C_EditBox *)win->FindControl(CALLSIGN_LIST);
		if(ebox)
		{
			if(!(LogState & LB_EDITABLE)||LogState & LB_OPPONENT)
				ebox->SetFlagBitOff(C_BIT_ENABLED);
			else
				ebox->SetFlagBitOn(C_BIT_ENABLED);

			ebox->SetText(UI_logbk.Callsign());
			ebox->Refresh();
		}

		if(LogState & LB_REFRESH_PILOT)
		{
			lbox=(C_ListBox *)win->FindControl(LOGBOOK_LIST);
			if(lbox)
			{
				_TCHAR buf[MAX_PATH];
				_stprintf(buf,_T("%s\\config\\*.lbk"),FalconDataDirectory);
				GetPilotList( win, buf, NULL, lbox, TRUE, TRUE );
				if(ebox)
					SetPilot(ebox->GetText(),lbox);
				LogState &= ~LB_REFRESH_PILOT;
			}
		}

		lbox=(C_ListBox *)win->FindControl(VOICE_CHOICE);
		if(lbox)
		{
			lbox->SetValue(UI_logbk.Voice() + 1);
		}

		ebox=(C_EditBox *)win->FindControl(PERSONAL_TEXT);
		if(ebox)
		{
			if(!(LogState & LB_EDITABLE)||LogState & LB_OPPONENT)
				ebox->SetFlagBitOff(C_BIT_ENABLED);
			else
				ebox->SetFlagBitOn(C_BIT_ENABLED);

			ebox->SetText(UI_logbk.Personal());
			ebox->Refresh();
		}

		ebox=(C_EditBox *)win->FindControl(SQUADRON_NAME);
		if(ebox)
		{
			if(!(LogState & LB_EDITABLE)||LogState & LB_OPPONENT)
				ebox->SetFlagBitOff(C_BIT_ENABLED);
			else
				ebox->SetFlagBitOn(C_BIT_ENABLED);

			ebox->SetText(UI_logbk.Squadron());
			ebox->Refresh();
		}

		button = (C_Button *)win->FindControl(50095);//RANKS value was changed
		if(button)
		{
			button->SetState(static_cast<short>(UI_logbk.Rank()));
			button->SetHelpText(gFullRanksTxt[UI_logbk.Rank()]);
			button->Refresh();
		}

		text = (C_Text *)win->FindControl(COMMISSIONED_FIELD);
		if(text)
		{
			text->SetText(UI_logbk.Commissioned());
			text->Refresh();
		}

		_TCHAR buf[15];

		text = (C_Text *)win->FindControl(HOURS_FIELD);
		if(text)
		{
			_stprintf(buf,"%4.1f",UI_logbk.FlightHours());
			Uni_Float(buf);
			text->SetText(buf);
			text->Refresh();
		}

		text = (C_Text *)win->FindControl(ACE_FIELD);
		if(text)
		{
			_stprintf(buf,"%1.3f",UI_logbk.AceFactor());
			Uni_Float(buf);
			text->SetText(buf);
			text->Refresh();
		}

		text = (C_Text *)win->FindControl(FRAGRATIO_FIELD);
		if(text)
		{
			int kills = UI_logbk.TotalKills();
			int killed = UI_logbk.TotalKilled();
			_stprintf(buf,"%2d/%2d",kills,killed);
			text->SetText(buf);
			text->Refresh();
		} 

		DF_STATS *dgft = UI_logbk.GetDogfight();

		text = (C_Text *)win->FindControl(DF_MATCH_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%3d"),dgft->MatchesWon + dgft->MatchesLost);
			text->SetText(buf);
			text->Refresh();
		}

		text = (C_Text *)win->FindControl(DF_WON_LOST_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%2d/%2d"),dgft->MatchesWon,dgft->MatchesLost);
			text->SetText(buf);
			text->Refresh();
		}
		//DF_MATCH_VSHUMANS_FIELD
		text = (C_Text *)win->FindControl(DF_MATCH_VSHUMANS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%2d/%2d"),dgft->MatchesWonVHum,dgft->MatchesLostVHum);
			text->SetText(buf);
			text->Refresh();
		}
		//DF_KILL_FIELD
		text = (C_Text *)win->FindControl(DF_KILL_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%2d/%2d"),dgft->Kills,dgft->Killed);
			text->SetText(buf);
			text->Refresh();
		}
		//DF_H2H_FIELD
		//DF_VS_FIELD
		text = (C_Text *)win->FindControl(DF_VS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%2d/%2d"),dgft->HumanKills,dgft->KilledByHuman);
			text->SetText(buf);
			text->Refresh();
		}

		CAMP_STATS *camp = UI_logbk.GetCampaign();

		//CAMP_CAMPAIGNS_FIELD
		text = (C_Text *)win->FindControl(CAMP_CAMPAIGNS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%d/%d/%d"),camp->GamesWon,camp->GamesLost,camp->GamesTied);
			text->SetText(buf);
			text->Refresh();
		}

		//CAMP_MISS_FIELD
		text = (C_Text *)win->FindControl(CAMP_MISS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%4d"),camp->Missions);
			text->SetText(buf);
			text->Refresh();
		}
		//CAMP_RATING_FIELD
		text = (C_Text *)win->FindControl(CAMP_RATING_FIELD);
		if(text)
		{
			if(camp->Missions)
				_stprintf(buf,_T("%2.3f"),(double)camp->TotalMissionScore/camp->Missions);
			else
				_stprintf(buf,"0");
			Uni_Float(buf);
			text->SetText(buf);
			text->Refresh();
		}
		//CAMP_KILL_FIELD
		text = (C_Text *)win->FindControl(CAMP_KILL_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%2d/%2d"),camp->Kills,camp->Killed);
			text->SetText(buf);
			text->Refresh();
		}
		//CAMP_VS_FIELD
		text = (C_Text *)win->FindControl(CAMP_VS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%2d/%2d"),camp->HumanKills,camp->KilledByHuman);
			text->SetText(buf);
			text->Refresh();
		}

		text = (C_Text *)win->FindControl(CAMP_AA_KILLS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%4d"),camp->Kills);
			text->SetText(buf);
			text->Refresh();
		}

		text = (C_Text *)win->FindControl(CAMP_AG_KILLS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%4d"),camp->AirToGround);
			text->SetText(buf);
			text->Refresh();
		}

		text = (C_Text *)win->FindControl(CAMP_STATIC_KILLS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%4d"),camp->Static);
			text->SetText(buf);
			text->Refresh();
		}

		text = (C_Text *)win->FindControl(CAMP_NAVAL_KILLS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%4d"),camp->Naval);
			text->SetText(buf);
			text->Refresh();
		}

		text = (C_Text *)win->FindControl(CAMP_DEATHS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%4d"),camp->Killed);
			text->SetText(buf);
			text->Refresh();
		}
		//MEDALS_AFC
		//MEDALS_AM
		//MEDALS_DFC
		//MEDALS_SS
		//MEDALS_KC
		int i;
		//need to also do stars and oakleafs for multiple medals
		int CurrMedal = MEDALS_AFC;
		for(i = 0; i < NUM_MEDALS ;i++)
		{
			if(UI_logbk.Pilot.Medals[i])
			{
				button = (C_Button *)win->FindControl(CurrMedal);
				if(button)
				{
					AwardDevices(win, CurrMedal, static_cast<uchar>(i), UI_logbk.Pilot.Medals[i]);
					button->SetFlagBitOff(C_BIT_INVISIBLE);
					button->SetState(static_cast<short>(i));
					button->SetHelpText(gStringMgr->AddText(button->GetLabel(static_cast<short>(i))));
					button->Refresh();
					CurrMedal++;
				}
			}
			
		}

		for(i = CurrMedal;i<NUM_MEDALS + MEDALS_AFC ;i++)
		{
			button = (C_Button *)win->FindControl(i);
			if(button)
			{
				AwardDevices(win, i, 0, 0);
				button->SetFlagBitOn(C_BIT_INVISIBLE);
				button->Refresh();
			}
		}
	win->RefreshWindow();
	}
}

//ID is the control which needs devices,
//Medal is which medal(so we know what kind of devices to use)
//Number is how times it has been awarded
void AwardDevices(C_Window *win,long ID, uchar Medal, uchar Number)
{
	if(!win)
		return;

	int Awarded = 0;
	int OakOrStar = DEV_OAK;

	if(Medal == KOREA_CAMPAIGN)
		OakOrStar = DEV_STAR;

	C_Button *button;
														
	int first_dev;
	int device = (ID - MEDALS_AFC)*4 + MEDALS_AFC_DEVICE_1; 
	first_dev = device;

	if(Number > 0)
		Awarded++;
	
	while(Number - Awarded > 4)
	{
		button = (C_Button *)win->FindControl(device++);
		if(button)
		{
			button->SetFlagBitOff(C_BIT_INVISIBLE);
			if(OakOrStar == DEV_OAK)
			{
				button->SetState(1);
				button->Refresh();
			}
			else
			{
				button->SetState(3);
				button->Refresh();
			}
			button->SetHelpText(gStringMgr->AddText("5"));

		}

		Awarded += 5;
	}

	if(Number > 9)
	{
		button = (C_Button *)win->FindControl(device++);
		if(button)
		{
			button->SetFlagBitOff(C_BIT_INVISIBLE);
			if(OakOrStar == DEV_OAK)
			{
				button->SetState(1);
				button->Refresh();
			}
			else
			{
				button->SetState(3);
				button->Refresh();
			}
			button->SetHelpText(gStringMgr->AddText("5"));
		}

	}
	else
	{
		while(Number - Awarded)
		{
			
			button = (C_Button *)win->FindControl(device++);
			if(button)
			{
				button->SetFlagBitOff(C_BIT_INVISIBLE);
				if(OakOrStar == DEV_OAK)
				{
					button->SetState(0);
					button->Refresh();
				}
				else
				{
					button->SetState(2);
					button->Refresh();
				}
				button->SetHelpText(gStringMgr->AddText("1"));
			}
			Awarded++;
		}
	}

	while( (device - first_dev) < 4)
	{
		button = (C_Button *)win->FindControl(device++);
		if(button)
		{
			button->SetFlagBitOn(C_BIT_INVISIBLE);
			button->Refresh();
		}
	}
}


void LoadTGACB(long,short hittype,C_Base *control)
{
	C_EditBox * ebox;
	_TCHAR fname[MAX_PATH];
	long imageID;

	if(hittype != C_TYPE_LMOUSEUP)
		return;

	gMainHandler->HideWindow(control->Parent_);

	ebox=(C_EditBox*)control->Parent_->FindControl(FILE_NAME);
	if(ebox)
	{
		_tcscpy(fname,ebox->GetText());
		for(unsigned long i=0;i<_tcslen(fname);i++)
			if(fname[i] == '.')
				fname[i]=0;

		if(fname[0] == 0)
			return;

		_TCHAR buf[MAX_PATH];

		if(CurControl == PATCH_PIC)
		{
			imageID=CurPatch;
			_stprintf(buf,_T("%s\\patches\\%s.tga"),FalconDataDirectory,fname);
		}
		else
		{
			imageID=CurPic;
			_stprintf(buf,_T("%s\\pictures\\%s.tga"),FalconDataDirectory,fname);
		}

		if(SetImage(CurControl,buf, imageID))
		{
			if(CurControl==PATCH_PIC)
			{
				UI_logbk.SetPatch(fname);
				UI_logbk.SetSquadron(fname);

				C_Window *win;
				win = gMainHandler->FindWindow(LOG_WIN);
				if(win)
				{
					ebox=(C_EditBox*)win->FindControl(SQUADRON_NAME);
					if(ebox)
					{
						ebox->SetText(fname);
						ebox->Refresh();
					}
				}
			}
			else if(CurControl == PILOT_PIC)
				UI_logbk.SetPicture(fname);
		}
	}
}

void LoadVirtualTGACB(long,short hittype,C_Base *control)
{
	C_EditBox * ebox;
	_TCHAR fname[MAX_PATH];
	long imageID;
	C_Resmgr *res;

	if(hittype != C_TYPE_LMOUSEUP)
		return;

⌨️ 快捷键说明

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