📄 ui_lgbk.cpp
字号:
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 + -