📄 priority.cpp
字号:
TeamInfo[team]->SetObjTypePriority(TYPE_REFINERY, value);
}
// Naval bases
sldr=(C_Slider*)win->FindControl(TARGET_10);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetObjTypePriority(TYPE_PORT, value);
}
// Armored Units
sldr=(C_Slider*)win->FindControl(TARGET_11);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_ARMOR, value);
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_ARMORED_CAV, value);
}
// Infantry Units
sldr=(C_Slider*)win->FindControl(TARGET_12);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_INFANTRY, value);
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_MARINE, value);
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_MECHANIZED, value);
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_AIRMOBILE, value);
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_RESERVE, value);
}
// Artillery Units
sldr=(C_Slider*)win->FindControl(TARGET_13);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_ROCKET, value);
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_SP_ARTILLERY, value);
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_SS_MISSILE, value);
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_TOWED_ARTILLERY, value);
}
// Support units
sldr=(C_Slider*)win->FindControl(TARGET_14);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_ENGINEER, value);
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_HQ, value);
}
// Naval Units
sldr=(C_Slider*)win->FindControl(TARGET_15);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetUnitTypePriority(MAX_UNITTYPE-1, value);
// TeamInfo[team]->SetMissionPriority(AMIS_ASHIP, value);
}
}
}
void SaveMissionPriorities()
{
C_Window *win;
C_Slider *sldr;
uchar value;
int team = FalconLocalSession->GetTeam();
win=gMainHandler->FindWindow(STRAT_WIN);
if(win)
{
// Mission Types
// OCA
sldr=(C_Slider*)win->FindControl(MISSION_1);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetMissionPriority(AMIS_OCASTRIKE, value);
TeamInfo[team]->SetMissionPriority(AMIS_SWEEP, value);
}
// SAM Suppression
sldr=(C_Slider*)win->FindControl(MISSION_2);
if(sldr)
{
value=static_cast<char>(SliderValue(sldr));
TeamInfo[team]->SetMissionPriority(AMIS_SEADSTRIKE, value);
TeamInfo[team]->SetMissionPriority(AMIS_SEADESCORT, value);
}
// Interdiction
sldr=(C_Slider*)win->FindControl(MISSION_3);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetMissionPriority(AMIS_SAD, value);
TeamInfo[team]->SetMissionPriority(AMIS_INT, value);
TeamInfo[team]->SetMissionPriority(AMIS_BAI, value);
}
// CAS
sldr=(C_Slider*)win->FindControl(MISSION_4);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetMissionPriority(AMIS_ONCALLCAS, value);
TeamInfo[team]->SetMissionPriority(AMIS_PRPLANCAS, value);
TeamInfo[team]->SetMissionPriority(AMIS_CAS, value);
}
// Strategic Strikes
sldr=(C_Slider*)win->FindControl(MISSION_5);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetMissionPriority(AMIS_INTSTRIKE, value);
TeamInfo[team]->SetMissionPriority(AMIS_STRIKE, value);
TeamInfo[team]->SetMissionPriority(AMIS_DEEPSTRIKE, value);
}
// Anti shipping
sldr=(C_Slider*)win->FindControl(MISSION_6);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetMissionPriority(AMIS_ASW, value);
TeamInfo[team]->SetMissionPriority(AMIS_ASHIP, value);
}
// DCA
sldr=(C_Slider*)win->FindControl(MISSION_7);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetMissionPriority(AMIS_BARCAP, value);
TeamInfo[team]->SetMissionPriority(AMIS_BARCAP2, value);
TeamInfo[team]->SetMissionPriority(AMIS_HAVCAP, value);
TeamInfo[team]->SetMissionPriority(AMIS_TARCAP, value);
TeamInfo[team]->SetMissionPriority(AMIS_RESCAP, value);
TeamInfo[team]->SetMissionPriority(AMIS_AMBUSHCAP, value);
TeamInfo[team]->SetMissionPriority(AMIS_INTERCEPT, value);
}
// Recon
sldr=(C_Slider*)win->FindControl(MISSION_8);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetMissionPriority(AMIS_BDA, value);
TeamInfo[team]->SetMissionPriority(AMIS_RECON, value);
TeamInfo[team]->SetMissionPriority(AMIS_RECONPATROL, value);
}
}
}
void SavePAKPriorities()
{
long i,idx;
POData POD;
VuListIterator poit(POList);
Objective o;
idx=1;
o = (Objective) poit.GetFirst();
while(o)
{
POD=GetPOData(o);
if(POD)
{
// KCK: Technically, the player should only be able to modify priorities for his team
i = FalconLocalSession->GetTeam();
if (i>0 && i<NUM_TEAMS && TeamInfo[i])
// for(i=0;i<NUM_TEAMS;i++)
{
POD->player_priority[i]=PAKPriorities[idx][i][0];
POD->flags |= GTMOBJ_PLAYER_SET_PRIORITY;
PAKPriorities[idx][i][1]=0;
}
}
o = (Objective) poit.GetNext();
idx++;
}
// For multiplayer - send our new priorities
if (TRUE) // isOnline()
{
uchar teammask;
teammask = static_cast<uchar>((1 << FalconLocalSession->GetTeam()));
SendPrimaryObjectiveList (teammask);
}
}
// Init the PAK Slider to the campaign's current value
void SelectPAK(long PAKID,long TeamID)
{
C_Window *win;
C_Slider *sldr;
WORD *Pal;
F4CSECTIONHANDLE *Leave;
if(PAKID >= MAX_PAKS || TeamID >= NUM_TEAMS)
return;
win=gMainHandler->FindWindow(STRAT_WIN);
if(win)
{
Leave=UI_Enter(win);
if(BlinkPAK < 0) // restore before changing
{
Pal=(WORD*)(PAKMap->Owner->GetData() + PAKMap->Header->paletteoffset);
Pal[CurrentPAK]=PAKPalette[PAKPriorities[CurrentPAK][FalconLocalSession->GetTeam()][0]];
}
CurrentPAK=PAKID;
BlinkPAK=static_cast<char>(CurrentPAK);
sldr=(C_Slider*)win->FindControl(PAK_SLIDER);
if(sldr)
PositionSlider(100 - PAKPriorities[PAKID][TeamID][0],sldr); // Value is in range of 0 -> 100
UI_Leave(Leave);
}
}
// UI Callbacks
void PriorityTabsCB(long,short hittype,C_Base *control)
{
if(hittype != C_TYPE_LMOUSEUP)
return;
control->Parent_->HideCluster(control->GetUserNumber(1));
control->Parent_->HideCluster(control->GetUserNumber(2));
control->Parent_->UnHideCluster(control->GetUserNumber(0));
control->Parent_->RefreshWindow();
}
void UsePriotityCB(long ID,short hittype,C_Base *control)
{
C_Button *btn;
if(hittype != C_TYPE_LMOUSEUP)
return;
btn=(C_Button*)control->Parent_->FindControl(HQ_FLAG);
if(btn && !btn->GetState())
{
SaveTargetPriorities();
SaveMissionPriorities();
SavePAKPriorities();
}
else
ResetToDefaults();
CloseWindowCB(ID,hittype,control);
}
void ResetPriorityCB(long,short hittype,C_Base *control)
{
long PAKID;
C_ListBox *lbox;
if(hittype != C_TYPE_LMOUSEUP)
return;
// Kevin TODO: Reset priorities to those set by the campaign
LoadTargetPriorities();
LoadMissionPriorities();
LoadPAKPriorities();
lbox=(C_ListBox*)control->Parent_->FindControl(PAK_TITLE);
if(lbox)
{
PAKID=((C_ListBox*)lbox)->GetTextID();
if(!PAKID)
PAKID=1;
if(PAKID)
SelectPAK(PAKID,FalconLocalSession->GetTeam());
}
}
void CancelPriorityCB(long ID,short hittype,C_Base *control)
{
if(hittype != C_TYPE_LMOUSEUP)
return;
CloseWindowCB(ID,hittype,control);
}
void OpenPriorityCB(long,short hittype,C_Base *control)
{
C_Window *win;
C_Button *btn;
C_ListBox *lbox;
if(hittype != C_TYPE_LMOUSEUP)
return;
InitPAKMap();
LoadTargetPriorities();
LoadMissionPriorities();
LoadPAKPriorities();
SelectPAK(1,FalconLocalSession->GetTeam());
// Init window... make sure proper stuff is visible or hidden
win=gMainHandler->FindWindow(STRAT_WIN);
if(win)
{
lbox=(C_ListBox*)win->FindControl(PAK_TITLE);
if(lbox)
{
lbox->Refresh();
lbox->SetValue(1);
lbox->Refresh();
}
btn=(C_Button*)win->FindControl(TARGET_PRIORITIES);
if(btn)
{
btn->SetState(1);
PriorityTabsCB(btn->GetID(),C_TYPE_LMOUSEUP,btn);
btn->Refresh();
}
btn=(C_Button*)win->FindControl(MISSION_PRIORITIES);
if(btn)
{
btn->SetState(0);
btn->Refresh();
}
btn=(C_Button*)win->FindControl(PAK_PRIORITIES);
if(btn)
{
btn->SetState(0);
btn->Refresh();
}
}
// Display window
gMainHandler->EnableWindowGroup(control->GetGroup());
}
// Callback from MAP x,y checker
void MapSelectPAKCB(long,short hittype,C_Base *control)
{
C_Button *btn;
C_ListBox *lbox;
long x,y,PAKID;
char *overlay;
if(hittype != C_TYPE_LMOUSEUP)
return;
if(!control || !PAKMap)
return;
btn=(C_Button*)control;
x=btn->GetRelX();
y=btn->GetRelY();
if(x < 0 || x >= 256 || y < 0 || y >= 256)
return;
overlay=PAKMap->Owner->GetData();
PAKID=overlay[y * 256 + x];
if(PAKID)
{
SelectPAK(PAKID,FalconLocalSession->GetTeam());
lbox=(C_ListBox*)control->Parent_->FindControl(PAK_TITLE);
if(lbox)
{
lbox->Refresh();
lbox->SetValue(PAKID);
lbox->Refresh();
}
}
}
void SelectPAKCB(long,short hittype,C_Base *control)
{
long PAKID;
if(hittype != C_TYPE_SELECT)
return;
PAKID=((C_ListBox*)control)->GetTextID();
if(PAKID)
SelectPAK(PAKID,FalconLocalSession->GetTeam());
}
void SetPAKPriorityCB(long,short hittype,C_Base *control)
{
long value;
if(hittype != C_TYPE_MOUSEMOVE)
return;
value=100 - SliderValue((C_Slider*)control);
PAKPriorities[CurrentPAK][FalconLocalSession->GetTeam()][0]=static_cast<short>(value);
PAKPriorities[CurrentPAK][FalconLocalSession->GetTeam()][1]=1; // Mark as changed
TurnOffHQButton();
}
void SetCampaignPrioritiesCB(long,short hittype,C_Base *base)
{
if(hittype != C_TYPE_LMOUSEUP)
return;
if(base->GetState())
{
LoadDefaultTargetPriorities();
LoadDefaultMissionPriorities();
LoadDefaultPAKPriorities();
SelectPAK(CurrentPAK,FalconLocalSession->GetTeam());
}
else
{
}
base->Refresh();
}
BOOL PAKMapTimerCB(C_Base *me)
{
WORD *Pal;
if(CurrentPAK)
{
me->SetUserNumber(0,(me->GetUserNumber(0)+1) & 0x03);
if(!me->GetUserNumber(0))
{
Pal=(WORD*)(PAKMap->Owner->GetData() + PAKMap->Header->paletteoffset);
BlinkPAK=static_cast<char>(-BlinkPAK);
if(BlinkPAK < 0) // Flash BLACK
{
Pal[CurrentPAK]=0;
}
else // Show Actual color
{
Pal[CurrentPAK]=PAKPalette[PAKPriorities[CurrentPAK][FalconLocalSession->GetTeam()][0]];
}
return(TRUE);
}
}
return(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -