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

📄 ui_lgbk.cpp

📁 空战游戏flacon源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:

		callsign = ptr;
		ptr += (_tcslen(callsign) - 1);
		while(*ptr == ' ')
			ptr--;
		ptr++;
		*ptr = 0;

		if( _tcsicmp( UI_logbk.Callsign(),callsign ) )
		{
			_TCHAR orig[MAX_PATH];
			_TCHAR newfile[MAX_PATH];

			_stprintf(orig,_T("%s\\config\\%s.lbk"),FalconDataDirectory,UI_logbk.Callsign());
			_stprintf(newfile,_T("%s\\config\\%s.lbk"),FalconDataDirectory,callsign);
			_trename(orig,newfile);

			_stprintf(orig,_T("%s\\config\\%s.pop"),FalconDataDirectory,UI_logbk.OptionsFile());
			_stprintf(newfile,_T("%s\\config\\%s.pop"),FalconDataDirectory,callsign);
			_trename(orig,newfile);
			
			UI_logbk.SetOptionsFile(UI_logbk.Callsign());
			_stprintf(orig,_T("%s\\config\\%s.rul"),FalconDataDirectory,UI_logbk.Callsign());
			_stprintf(newfile,_T("%s\\config\\%s.rul"),FalconDataDirectory,callsign);
			_trename(orig,newfile);
		}
		UI_logbk.SetCallsign(callsign);

		ebox->Refresh();
		ebox->SetText(callsign);
		ebox->Refresh();

		C_Window *stpwin;
		stpwin = gMainHandler->FindWindow(SETUP_WIN);
		if(stpwin)
		{
			C_Button *button;
			button = (C_Button *)stpwin->FindControl(SET_LOGBOOK);
			if(button)
			{
				button->SetText(0,ebox->GetText());
				button->Refresh();
			}
		}
	}

	ebox=(C_EditBox *)win->FindControl(PILOT_LIST);
	if(ebox != NULL)
	{
		UI_logbk.SetName(ebox->GetText());
	}

	ebox=(C_EditBox *)win->FindControl(PASSWORD_LIST);
	if(ebox != NULL)
	{
		UI_logbk.SetPassword(ebox->GetText());
		ebox->SetText(_T(""));
		ebox->Refresh();
	}

	lbox=(C_ListBox *)win->FindControl(VOICE_CHOICE);
	if(lbox)
	{
		UI_logbk.SetVoice(static_cast<short>(lbox->GetTextID() - 1));
	}

	ebox=(C_EditBox *)win->FindControl(PERSONAL_TEXT);
	if(ebox)
	{
		UI_logbk.SetPersonal(ebox->GetText());
	}

	ebox=(C_EditBox *)win->FindControl(SQUADRON_NAME);
	if(ebox)
	{
		UI_logbk.SetSquadron(ebox->GetText());
	}

	text = (C_Text *)win->FindControl(COMMISSIONED_FIELD);
	if(text)
	{
		UI_logbk.SetCommissioned(text->GetText());
	}

	return TRUE;
}

void SaveLogBookCB(long ID,short hittype,C_Base *control)
{
	C_Window	*win;
	C_EditBox	*ebox;

	if(hittype != C_TYPE_LMOUSEUP)
		return;

	if(LogState & LB_OPPONENT || !(LogState & LB_EDITABLE))
	{
		CloseLogWindowCB(ID,hittype,control);
		return;
	}

	win=gMainHandler->FindWindow(LOG_WIN);
	if(win == NULL)
		return;


	ebox=(C_EditBox *)win->FindControl(PASSWORD_LIST);
	if(ebox != NULL)
	{
		if(!UI_logbk.CheckPassword(ebox->GetText()))
		{
			LogState &= ~LB_CHECKED;
			PasswordWindow(TXT_VERIFY_PASSWORD,TXT_VERIFY_PASS_MESSAGE,PasswordChangeVerifiedCB,CloseWindowCB);
			return;
		}
	}

	if(!SaveControlValues())
		return;
	
	LogState |= LB_REFRESH_PILOT;
	UI_logbk.SaveData();
	LogBook.LoadData(&UI_logbk.Pilot);

	CloseLogWindowCB(ID,hittype,control);
	
}

void CloseLogWindowCB(long ID,short hittype,C_Base *control)
{
	if(hittype != C_TYPE_LMOUSEUP)
		return;

	PlayerOptions.LoadOptions(LogBook.OptionsFile());
	LogState &= (LB_CHECKED|LB_LOADED_ONCE);
	CloseWindowCB(ID,hittype,control);
}

void HookupLBControls(long ID)
{
	C_Window *winme;
	C_Button *ctrl;
	C_ListBox *lbox;

	winme=gMainHandler->FindWindow(ID);

	if(winme == NULL)
		return;

	// Hook up IDs here

	
	// Hook up Close Button
	ctrl=(C_Button *)winme->FindControl(CLOSE_WINDOW);
	if(ctrl != NULL)
		ctrl->SetCallback(CloseWindowCB);

	ctrl=(C_Button *)winme->FindControl(LOG_NEW);
	if(ctrl != NULL)
		ctrl->SetCallback(NewLogbookCB);

	ctrl=(C_Button *)winme->FindControl(LOG_CLEAR);
	if(ctrl != NULL)
		ctrl->SetCallback(ClearLogBookCB);

	ctrl=(C_Button *)winme->FindControl(LOG_CANCEL);
	if(ctrl != NULL)
		ctrl->SetCallback(CloseLogWindowCB);

	ctrl=(C_Button *)winme->FindControl(LOG_OK);
	if(ctrl != NULL)
		ctrl->SetCallback(SaveLogBookCB);
/*
	ctrl=(C_Button *)winme->FindControl(LOG_LOAD);
	if(ctrl != NULL)
		ctrl->SetCallback(LoadLogBookCB);*/

	ctrl=(C_Button *)winme->FindControl(PATCH_PIC);
	if(ctrl != NULL)
		ctrl->SetCallback(ChangeImageCB);

	ctrl=(C_Button *)winme->FindControl(PILOT_PIC);
	if(ctrl != NULL)
		ctrl->SetCallback(ChangeImageCB);

	lbox=(C_ListBox *)winme->FindControl(LOGBOOK_LIST);
	if(lbox)
		lbox->SetCallback(LoadPilotCB);

// Help GUIDE thing
	ctrl=(C_Button*)winme->FindControl(UI_HELP_GUIDE);
	if(ctrl)
		ctrl->SetCallback(UI_Help_Guide_CB);

}
























void DisplayLogbook(LB_PILOT *Pilot,IMAGE_RSC *Photo,IMAGE_RSC *Patch,BOOL EditFlag)
{
	C_EditBox *ebox;
	C_Window *win;
	C_Button *button;
	C_Text *text;
	C_ListBox *lbox;
	_TCHAR buf[MAX_PATH];

	win=gMainHandler->FindWindow(LOG_WIN);
	if(win)
	{
		if(EditFlag)
		{
			button=(C_Button *)win->FindControl(LOG_NEW);
			if(button)
				button->SetFlagBitOff(C_BIT_INVISIBLE);

			button=(C_Button *)win->FindControl(LOG_CLEAR);
			if(button != NULL)
				button->SetFlagBitOff(C_BIT_INVISIBLE);

			button=(C_Button *)win->FindControl(LOG_CANCEL);
			if(button != NULL)
				button->SetFlagBitOff(C_BIT_INVISIBLE);

			button=(C_Button *)win->FindControl(LOG_OK);
			if(button != NULL)
				button->SetFlagBitOff(C_BIT_INVISIBLE);

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

			button=(C_Button *)win->FindControl(LOG_CLEAR);
			if(button != NULL)
				button->SetFlagBitOn(C_BIT_INVISIBLE);

			button=(C_Button *)win->FindControl(LOG_CANCEL);
			if(button != NULL)
				button->SetFlagBitOn(C_BIT_INVISIBLE);

			button=(C_Button *)win->FindControl(LOG_OK);
			if(button != NULL)
				button->SetFlagBitOn(C_BIT_INVISIBLE);

			button=(C_Button *)win->FindControl(CLOSE_WINDOW);
			if(button != NULL)
				button->SetFlagBitOff(C_BIT_INVISIBLE);
		}

		button = (C_Button *)win->FindControl(PATCH_PIC);
		if(button)
		{
			if(EditFlag)
				button->SetFlagBitOn(C_BIT_ENABLED);
			else
				button->SetFlagBitOff(C_BIT_ENABLED);

			button->SetImage(C_STATE_0,Patch);
			button->SetImage(C_STATE_1,Patch);
			button->SetImage(C_STATE_DISABLED,Patch);
		}

		button = (C_Button *)win->FindControl(PILOT_PIC);
		if(button)
		{
			if(EditFlag)
				button->SetFlagBitOn(C_BIT_ENABLED);
			else
				button->SetFlagBitOff(C_BIT_ENABLED);

			button->SetImage(C_STATE_0,Photo);
			button->SetImage(C_STATE_1,Photo);
			button->SetImage(C_STATE_DISABLED,Photo);
		}


		ebox=(C_EditBox *)win->FindControl(PASSWORD_LIST);
		if(ebox)
		{
			if(EditFlag)
				ebox->SetFlagBitOn(C_BIT_ENABLED);
			else
				ebox->SetFlagBitOff(C_BIT_ENABLED);
			ebox->SetText(Pilot->Password);
		}

		ebox=(C_EditBox *)win->FindControl(PILOT_LIST);
		if(ebox)
		{
			if(EditFlag)
				ebox->SetFlagBitOn(C_BIT_ENABLED);
			else
				ebox->SetFlagBitOff(C_BIT_ENABLED);

			ebox->SetText(Pilot->Name);
		}

		ebox=(C_EditBox *)win->FindControl(CALLSIGN_LIST);
		if(ebox)
		{
			if(EditFlag)
				ebox->SetFlagBitOn(C_BIT_ENABLED);
			else
				ebox->SetFlagBitOff(C_BIT_ENABLED);

			ebox->SetText(Pilot->Callsign);
		}

		lbox=(C_ListBox *)win->FindControl(LOGBOOK_LIST);
		if(lbox)
		{
			if(EditFlag)
			{
				_stprintf(buf,_T("%s\\config\\*.lbk"),FalconDataDirectory);
				GetPilotList( win, buf, NULL, lbox, TRUE, TRUE );

				ebox=(C_EditBox *)win->FindControl(CALLSIGN_LIST); // just for good measure
				if(ebox)
					SetPilot(ebox->GetText(),lbox);
				
				lbox->SetCallback(ChoosePilotCB);
				lbox->SetFlagBitOn(C_BIT_ENABLED);
			}
			else
				lbox->SetFlagBitOff(C_BIT_ENABLED);
		}

		lbox=(C_ListBox *)win->FindControl(VOICE_CHOICE);
		if(lbox)
		{
			if(EditFlag)
				lbox->SetFlagBitOn(C_BIT_ENABLED);
			else
				lbox->SetFlagBitOff(C_BIT_ENABLED);

			lbox->SetValue(Pilot->voice+1);
		}

		ebox=(C_EditBox *)win->FindControl(PERSONAL_TEXT);
		if(ebox)
		{
			if(EditFlag)
				ebox->SetFlagBitOn(C_BIT_ENABLED);
			else
				ebox->SetFlagBitOff(C_BIT_ENABLED);

			ebox->SetText(Pilot->Personal);
		}

		ebox=(C_EditBox *)win->FindControl(SQUADRON_NAME);
		if(ebox)
		{
			if(EditFlag)
				ebox->SetFlagBitOn(C_BIT_ENABLED);
			else
				ebox->SetFlagBitOff(C_BIT_ENABLED);

			ebox->SetText(Pilot->Squadron);
		}

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

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

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

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

		text = (C_Text *)win->FindControl(FRAGRATIO_FIELD);
		if(text)
		{
			int kills = Pilot->Campaign.Kills;
			int killed = Pilot->Campaign.Killed;
			_stprintf(buf,"%2d/%2d",kills,killed);
			text->SetText(buf);
		} 

		DF_STATS *dgft = &Pilot->Dogfight;

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

		text = (C_Text *)win->FindControl(DF_WON_LOST_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%2d/%2d"),dgft->MatchesWon,dgft->MatchesLost);
			text->SetText(buf);
		}
		//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);
		}
		//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);
		}
		//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);
		}

		CAMP_STATS *camp = &Pilot->Campaign;

		//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);
		}

		//CAMP_MISS_FIELD
		text = (C_Text *)win->FindControl(CAMP_MISS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%4d"),camp->Missions);
			text->SetText(buf);
		}
		//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);
		}
		//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);
		}
		//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 = (C_Text *)win->FindControl(CAMP_AA_KILLS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%4d"),camp->Kills);
			text->SetText(buf);
		}

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

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

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

		text = (C_Text *)win->FindControl(CAMP_DEATHS_FIELD);
		if(text)
		{
			_stprintf(buf,_T("%4d"),camp->Killed);
			text->SetText(buf);
		}
		//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(Pilot->Medals[i])
			{
				button = (C_Button *)win->FindControl(CurrMedal);
				if(button)
				{
					AwardDevices(win, CurrMedal, static_cast<uchar>(i), 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();
	}
}

⌨️ 快捷键说明

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