📄 cpselect.cpp
字号:
switch(TEMP_Settings.SAMSkill)
{
case 1:
lb->SetValue(CADET_LEVEL);
break;
case 2:
lb->SetValue(ROOKIE_LEVEL);
break;
case 3:
lb->SetValue(VETERAN_LEVEL);
break;
case 4:
lb->SetValue(ACE_LEVEL);
break;
default:
lb->SetValue(RECRUIT_LEVEL);
break;
}
lb->Refresh();
}
sldr=(C_Slider *)win->FindControl(BAR_1_SCROLL);
if(sldr)
{
sldr->Refresh();
val=((sldr->GetSliderMax()-sldr->GetSliderMin()) * TEMP_Settings.AirForces)/4;
sldr->SetSliderPos(val+sldr->GetSliderMin());
sldr->Refresh();
}
sldr=(C_Slider *)win->FindControl(BAR_2_SCROLL);
if(sldr)
{
sldr->Refresh();
val=((sldr->GetSliderMax()-sldr->GetSliderMin()) * TEMP_Settings.AirDefenses)/4;
sldr->SetSliderPos(val+sldr->GetSliderMin());
sldr->Refresh();
}
sldr=(C_Slider *)win->FindControl(BAR_3_SCROLL);
if(sldr)
{
sldr->Refresh();
val=((sldr->GetSliderMax()-sldr->GetSliderMin()) * TEMP_Settings.GroundForces)/4;
sldr->SetSliderPos(val+sldr->GetSliderMin());
sldr->Refresh();
}
sldr=(C_Slider *)win->FindControl(BAR_4_SCROLL);
if(sldr)
{
sldr->Refresh();
val=((sldr->GetSliderMax()-sldr->GetSliderMin()) * TEMP_Settings.NavalForces)/4;
sldr->SetSliderPos(val+sldr->GetSliderMin());
sldr->Refresh();
}
}
}
void CopySettingsToTemp (void)
{
if(!CampSelMode)
{
TEMP_Settings.PilotSkill=static_cast<uchar>(PlayerOptions.CampaignEnemyAirExperience());
TEMP_Settings.SAMSkill=static_cast<uchar>(PlayerOptions.CampaignEnemyGroundExperience());
TEMP_Settings.AirForces=static_cast<uchar>(PlayerOptions.CampaignAirRatio());
TEMP_Settings.AirDefenses=static_cast<uchar>(PlayerOptions.CampaignAirDefenseRatio());
TEMP_Settings.GroundForces=static_cast<uchar>(PlayerOptions.CampaignGroundRatio());
TEMP_Settings.NavalForces=static_cast<uchar>(PlayerOptions.CampaignNavalRatio());
}
else
{
TEMP_Settings.PilotSkill=TheCampaign.EnemyAirExp;
TEMP_Settings.SAMSkill=TheCampaign.EnemyADExp;
TEMP_Settings.AirForces=static_cast<uchar>(TheCampaign.AirRatio);
TEMP_Settings.AirDefenses=static_cast<uchar>(TheCampaign.AirDefenseRatio);
TEMP_Settings.GroundForces=static_cast<uchar>(TheCampaign.GroundRatio);
TEMP_Settings.NavalForces=static_cast<uchar>(TheCampaign.NavalRatio);
}
}
static void ChallengeLevelCB(long,short hittype,C_Base *control)
{
if(hittype != C_TYPE_SELECT)
return;
switch(((C_ListBox *)control)->GetTextID())
{
case ACE_LEVEL:
TEMP_Settings.Challenge=4;
TEMP_Settings.PilotSkill=4;
TEMP_Settings.SAMSkill=4;
if(!CampSelMode)
{
TEMP_Settings.AirForces=0;
TEMP_Settings.AirDefenses=0;
TEMP_Settings.GroundForces=0;
TEMP_Settings.NavalForces=0;
}
break;
case VETERAN_LEVEL:
TEMP_Settings.Challenge=3;
TEMP_Settings.PilotSkill=3;
TEMP_Settings.SAMSkill=3;
if(!CampSelMode)
{
TEMP_Settings.AirForces=1;
TEMP_Settings.AirDefenses=1;
TEMP_Settings.GroundForces=1;
TEMP_Settings.NavalForces=1;
}
break;
case ROOKIE_LEVEL:
TEMP_Settings.Challenge=2;
TEMP_Settings.PilotSkill=2;
TEMP_Settings.SAMSkill=2;
if(!CampSelMode)
{
TEMP_Settings.AirForces=2;
TEMP_Settings.AirDefenses=2;
TEMP_Settings.GroundForces=2;
TEMP_Settings.NavalForces=2;
}
break;
case CADET_LEVEL:
TEMP_Settings.Challenge=1;
TEMP_Settings.PilotSkill=1;
TEMP_Settings.SAMSkill=1;
if(!CampSelMode)
{
TEMP_Settings.AirForces=3;
TEMP_Settings.AirDefenses=3;
TEMP_Settings.GroundForces=3;
TEMP_Settings.NavalForces=3;
}
break;
default:
TEMP_Settings.Challenge=0;
TEMP_Settings.PilotSkill=0;
TEMP_Settings.SAMSkill=0;
if(!CampSelMode)
{
TEMP_Settings.AirForces=4;
TEMP_Settings.AirDefenses=4;
TEMP_Settings.GroundForces=4;
TEMP_Settings.NavalForces=4;
}
break;
}
SetCampaignLevels();
CalcChallengeLevel();
}
void OpenChallengeCB(long,short hittype,C_Base *control)
{
if(hittype != C_TYPE_LMOUSEUP)
return;
// Copy in current settings
CopySettingsToTemp();
CalcChallengeLevel();
SetCampaignLevels();
gMainHandler->EnableWindowGroup(control->GetGroup());
}
void CloseChallengeCB(long ID,short hittype,C_Base *control)
{
CopySettingsToTemp();
CloseWindowCB(ID, hittype, control);
}
void CampDelFileCB(long,short hittype,C_Base *control)
{
C_TreeList *tree;
C_Window *win;
if(hittype != C_TYPE_LMOUSEUP)
return;
win=gMainHandler->FindWindow(CS_SELECT_WIN);
if(!win)
return;
gMainHandler->HideWindow(control->Parent_); // Close Verify Window
if(!CheckExclude(gLastCampFilename,FalconCampUserSaveDirectory,CampExcludeList,"cam"))
{
DeleteFile(gLastCampFilename);
gLastCampFilename[0]=0;
}
tree=(C_TreeList*)win->FindControl(FILELIST_TREE);
if(tree)
{
tree->DeleteBranch(tree->GetRoot());
GetFileListTree(tree,"campaign\\save\\*.cam",CampExcludeList,C_TYPE_ITEM,TRUE,0);
tree->RecalcSize();
if(tree->Parent_)
tree->Parent_->RefreshClient(tree->GetClient());
}
DisableScenarioInfo();
}
static void CampDelVerifyCB(long,short hittype,C_Base *)
{
if(hittype != C_TYPE_LMOUSEUP)
return;
if(gLastCampFilename[0])
VerifyDelete(0,CampDelFileCB,CloseWindowCB);
}
static void SetSkillSettingsCB(long ID,short hittype,C_Base *control)
{
uchar value;
if(hittype != C_TYPE_SELECT)
return;
switch(((C_ListBox *)control)->GetTextID())
{
case CADET_LEVEL:
value=1;
break;
case ROOKIE_LEVEL:
value=2;
break;
case VETERAN_LEVEL:
value=3;
break;
case ACE_LEVEL:
value=4;
break;
default:
value=0;
break;
}
switch(ID)
{
case PILOT_SKILL:
TEMP_Settings.PilotSkill=value;
break;
case SAM_SKILL:
TEMP_Settings.SAMSkill=value;
break;
}
CalcChallengeLevel();
}
static void SetSliderSettingsCB(long ID,short hittype,C_Base *control)
{
long val;
C_Slider *sldr;
if(hittype != C_TYPE_MOUSEMOVE)
return;
sldr=(C_Slider *)control;
val = (sldr->GetSliderPos() - sldr->GetSliderMin())*4;
val /= (sldr->GetSliderMax() - sldr->GetSliderMin());
switch(ID)
{
case BAR_1_SCROLL:
if (val != TEMP_Settings.AirForces)
{
TEMP_Settings.AirForces=static_cast<uchar>(val);
// Force the aircraft field to update
LoadSquadronInfo();
}
break;
case BAR_2_SCROLL:
TEMP_Settings.AirDefenses=static_cast<uchar>(val);
break;
case BAR_3_SCROLL:
TEMP_Settings.GroundForces=static_cast<uchar>(val);
break;
case BAR_4_SCROLL:
TEMP_Settings.NavalForces=static_cast<uchar>(val);
break;
default:
return;
}
CalcChallengeLevel();
}
static void UseChallengeSettingsCB(long,short hittype,C_Base *control)
{
C_Window *win;
C_Button *btn;
if(hittype != C_TYPE_LMOUSEUP)
return;
if(CampSelMode != 2)
{
PlayerOptions.SetCampEnemyAirExperience(TEMP_Settings.PilotSkill);
PlayerOptions.SetCampEnemyGroundExperience(TEMP_Settings.SAMSkill);
}
if(!CampSelMode)
{
PlayerOptions.SetCampAirRatio(TEMP_Settings.AirForces);
PlayerOptions.SetCampAirDefenseRatio(TEMP_Settings.AirDefenses);
PlayerOptions.SetCampGroundRatio(TEMP_Settings.GroundForces);
PlayerOptions.SetCampNavalRatio(TEMP_Settings.NavalForces);
}
win=gMainHandler->FindWindow(CS_PUA_WIN);
if(win)
{
btn=(C_Button *)win->FindControl(SET_CHALLENGE);
if(btn)
{
btn->Refresh();
btn->SetState(TEMP_Settings.Challenge);
btn->Refresh();
}
}
LoadSquadronInfo();
gMainHandler->DisableWindowGroup(control->GetGroup());
}
void CopyinTempSettings(void)
{
TheCampaign.GroundRatio=TEMP_Settings.GroundForces;
TheCampaign.AirRatio=TEMP_Settings.AirForces;
TheCampaign.AirDefenseRatio=TEMP_Settings.AirDefenses;
TheCampaign.NavalRatio=TEMP_Settings.NavalForces;
TheCampaign.EnemyAirExp=TEMP_Settings.PilotSkill;
TheCampaign.EnemyADExp=TEMP_Settings.SAMSkill;
}
static void HookupCampaignSelectControls(long ID)
{
C_Window *winme;
C_Button *ctrl;
C_ListBox *lb;
C_Slider *sldr;
C_TreeList *tree;
winme=gMainHandler->FindWindow(ID);
if(winme == NULL)
return;
// Hook up IDs here
// Set Commit Button
ctrl=(C_Button *)winme->FindControl(SINGLE_COMMIT_CTRL);
if(ctrl)
ctrl->SetCallback(CommitCB);
// Set Commit Button
ctrl=(C_Button *)winme->FindControl(CS_DELETE);
if(ctrl)
ctrl->SetCallback(CampDelVerifyCB);
ctrl=(C_Button *)winme->FindControl(COMMS_COMMIT_CTRL);
if(ctrl)
ctrl->SetCallback(CommsCommitCB);
// Hook up Close Button
ctrl=(C_Button *)winme->FindControl(CLOSE_WINDOW);
if(ctrl)
ctrl->SetCallback(CloseWindowCB);
ctrl=(C_Button *)winme->FindControl(SELECT_CLOSE_WINDOW);
if(ctrl)
ctrl->SetCallback(CloseSelectWindowCB);
ctrl=(C_Button *)winme->FindControl(CS_LOAD_SCENARIO1);
if(ctrl)
ctrl->SetCallback(SelectScenarioCB);
ctrl=(C_Button *)winme->FindControl(CS_LOAD_SCENARIO2);
if(ctrl)
ctrl->SetCallback(SelectScenarioCB);
ctrl=(C_Button *)winme->FindControl(CS_LOAD_SCENARIO3);
if(ctrl)
ctrl->SetCallback(SelectScenarioCB);
ctrl=(C_Button *)winme->FindControl(CS_HOST_CTRL);
if(ctrl)
ctrl->SetCallback(HostCampaignCB);
ctrl=(C_Button *)winme->FindControl(CS_NEW_CTRL);
if(ctrl)
ctrl->SetCallback(SetCampaignSelectCB);
ctrl=(C_Button *)winme->FindControl(CS_LOAD_CTRL);
if(ctrl)
ctrl->SetCallback(SetCampaignSelectCB);
ctrl=(C_Button *)winme->FindControl(CS_JOIN_CTRL);
if(ctrl)
{
ctrl->SetCallback(SetCampaignSelectCB);
}
lb=(C_ListBox *)winme->FindControl(CHALLENGE_LIST);
if(lb)
lb->SetCallback(ChallengeLevelCB);
lb=(C_ListBox *)winme->FindControl(PILOT_SKILL);
if(lb)
lb->SetCallback(SetSkillSettingsCB);
lb=(C_ListBox *)winme->FindControl(SAM_SKILL);
if(lb)
lb->SetCallback(SetSkillSettingsCB);
ctrl=(C_Button *)winme->FindControl(SET_CHALLENGE);
if(ctrl)
ctrl->SetCallback(OpenChallengeCB);
ctrl=(C_Button *)winme->FindControl(CHALL_OK);
if(ctrl)
ctrl->SetCallback(UseChallengeSettingsCB);
ctrl=(C_Button *)winme->FindControl(CHALL_CANCEL);
if(ctrl)
ctrl->SetCallback(CloseChallengeCB);
sldr=(C_Slider *)winme->FindControl(BAR_1_SCROLL);
if(sldr)
sldr->SetCallback(SetSliderSettingsCB);
sldr=(C_Slider *)winme->FindControl(BAR_2_SCROLL);
if(sldr)
sldr->SetCallback(SetSliderSettingsCB);
sldr=(C_Slider *)winme->FindControl(BAR_3_SCROLL);
if(sldr)
sldr->SetCallback(SetSliderSettingsCB);
sldr=(C_Slider *)winme->FindControl(BAR_4_SCROLL);
if(sldr)
sldr->SetCallback(SetSliderSettingsCB);
ctrl=(C_Button *)winme->FindControl(CS_INFO_CTRL);
if(ctrl)
ctrl->SetCallback(InfoButtonCB);
tree=(C_TreeList *)winme->FindControl(CAMPAIGN_TREE);
if(tree)
{
CampaignGames=tree;
CampaignGames->SetCallback(CampSelectGameCB);
}
// Help GUIDE thing
ctrl=(C_Button*)winme->FindControl(UI_HELP_GUIDE);
if(ctrl)
ctrl->SetCallback(UI_Help_Guide_CB);
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
static void JoinStatusCancelCB (long,short hittype,C_Base *control)
{
if(hittype != C_TYPE_LMOUSEUP)
return;
MonoPrint ("Cancel Join\n");
gMainHandler->HideWindow(control->Parent_);
StopCampaignLoad ();
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
static int
join_status_bits = 0;
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/*
static void UpdateJoinStatusWindow (C_Window *win)
{
short
x,
y;
char
buffer[10];
sprintf (buffer, "%08x", join_status_bits);
x=0; y=0;
DeleteGroupList(win->GetID());
AddWordWrapTextToWindow
(
win,
&x,
&y,
0,
win->ClientArea_[1].right-win->ClientArea_[1].left,
0xe0e0e0,
buffer,
1
);
}
*/
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void DisplayJoinStatusWindow (int bits)
{
static long
last_id;
long
id = 0;//! uninitialized
C_Window
*win;
if ((!gCommsMgr->Online()) || (FalconLocalGame->IsLocal()))
{
return;
}
if (TheCampaign.IsLoaded ())
{
return;
}
if (bits == 0)
{
join_status_bits = 0;
}
else
{
join_status_bits |= bits;
}
switch (bits)
{
case CAMP_GAME_FULL:
id = TXT_GAME_IS_OVER;
break;
case 0:
case CAMP_NEED_PRELOAD:
id = TXT_JOIN_STARTING;
break;
case CAMP_NEED_ENTITIES:
case CAMP_NEED_WEATHER:
id = TXT_JOIN_WEATHER;
break;
case CAMP_NEED_PERSIST:
case CAMP_NEED_OBJ_DELTAS:
id = TXT_JOIN_OBJECTS;
break;
case CAMP_NEED_TEAM_DATA:
case CAMP_NEED_UNIT_DATA:
case CAMP_NEED_VC:
case CAMP_NEED_PRIORITIES:
id = TXT_JOIN_UNITS;
break;
}
if (id != last_id)
{
win=gMainHandler->FindWindow(COMMLINK_WIN);
if (win)
{
gMainHandler->HideWindow (win);
}
last_id = id;
}
CommsErrorDialog (TXT_JOINING_GAME, id, NULL, JoinStatusCancelCB);
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -