📄 priority.cpp
字号:
TeamInfo[team]->GetMissionPriority(AMIS_BARCAP2) +
TeamInfo[team]->GetMissionPriority(AMIS_HAVCAP) +
TeamInfo[team]->GetMissionPriority(AMIS_TARCAP) +
TeamInfo[team]->GetMissionPriority(AMIS_RESCAP) +
TeamInfo[team]->GetMissionPriority(AMIS_AMBUSHCAP) +
TeamInfo[team]->GetMissionPriority(AMIS_INTERCEPT)) / 7;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Recon
sldr=(C_Slider*)win->FindControl(MISSION_8);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetMissionPriority(AMIS_BDA) +
TeamInfo[team]->GetMissionPriority(AMIS_RECON) +
TeamInfo[team]->GetMissionPriority(AMIS_RECONPATROL)) / 3;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
}
}
void LoadPAKPriorities()
{
long i,idx;
POData POD;
short teamid;
WORD *Pal;
short CampControl=1;
if(!PAKMap)
return;
teamid=FalconLocalSession->GetTeam();
Pal=(WORD*)((char *)(PAKMap->Owner->GetData() + PAKMap->Header->paletteoffset));
memset(PAKPriorities,0,sizeof(PAKPriorities));
VuListIterator poit(POList);
Objective o;
idx=1;
o = (Objective) poit.GetFirst();
while(o)
{
POD=GetPOData(o);
if(POD)
{
for(i=0;i<NUM_TEAMS;i++)
{
if (POD->player_priority[i] >= 0)
{
PAKPriorities[idx][i][0]=(uchar)POD->player_priority[i];
CampControl = 0;
}
else
PAKPriorities[idx][i][0]=(uchar)POD->air_priority[i];
}
Pal[idx]=PAKPalette[PAKPriorities[idx][teamid][0]];
if(CampControl && POD->flags & GTMOBJ_PLAYER_SET_PRIORITY)
CampControl=0;
}
o = (Objective) poit.GetNext();
idx++;
}
if(CampControl)
TurnOnHQButton();
else
TurnOffHQButton();
}
////////////////////////////
// Copies Kevin's priority stuff into the Window's controls
void LoadDefaultTargetPriorities()
{
C_Window *win;
C_Slider *sldr;
long value;
int team = FalconLocalSession->GetTeam();
win=gMainHandler->FindWindow(STRAT_WIN);
if(win)
{
// Target Type priorities
// Aircraft
sldr=(C_Slider*)win->FindControl(TARGET_1);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = TeamInfo[team]->GetMissionPriority(AMIS_ESCORT);
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Air fields
sldr=(C_Slider*)win->FindControl(TARGET_2);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = TeamInfo[team]->GetObjTypePriority(TYPE_AIRBASE);
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Air defense
sldr=(C_Slider*)win->FindControl(TARGET_3);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_AIR_DEFENSE);
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Radar
sldr=(C_Slider*)win->FindControl(TARGET_4);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = TeamInfo[team]->GetObjTypePriority(TYPE_RADAR);
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Army
sldr=(C_Slider*)win->FindControl(TARGET_5);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = (TeamInfo[team]->GetObjTypePriority(TYPE_ARMYBASE) + TeamInfo[team]->GetObjTypePriority(TYPE_FORTIFICATION))/2;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// CCC
sldr=(C_Slider*)win->FindControl(TARGET_6);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = TeamInfo[team]->GetObjTypePriority(TYPE_COM_CONTROL);
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Infrastructure
sldr=(C_Slider*)win->FindControl(TARGET_7);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetObjTypePriority(TYPE_ROAD) +
TeamInfo[team]->GetObjTypePriority(TYPE_BRIDGE) +
TeamInfo[team]->GetObjTypePriority(TYPE_RAIL_TERMINAL) ) / 3;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Logistics
sldr=(C_Slider*)win->FindControl(TARGET_8);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = TeamInfo[team]->GetObjTypePriority(TYPE_DEPOT);
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// War production
sldr=(C_Slider*)win->FindControl(TARGET_9);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetObjTypePriority(TYPE_CHEMICAL) +
TeamInfo[team]->GetObjTypePriority(TYPE_FACTORY) +
TeamInfo[team]->GetObjTypePriority(TYPE_NUCLEAR) +
TeamInfo[team]->GetObjTypePriority(TYPE_POWERPLANT) +
TeamInfo[team]->GetObjTypePriority(TYPE_REFINERY) ) / 5;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Naval bases
sldr=(C_Slider*)win->FindControl(TARGET_10);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = TeamInfo[team]->GetObjTypePriority(TYPE_PORT);
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Armored Units
sldr=(C_Slider*)win->FindControl(TARGET_11);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_ARMOR) +
TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_ARMORED_CAV) ) / 2;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Infantry Units
sldr=(C_Slider*)win->FindControl(TARGET_12);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_INFANTRY) +
TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_MARINE) +
TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_MECHANIZED) +
TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_AIRMOBILE) +
TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_RESERVE) ) / 5;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Artillery Units
sldr=(C_Slider*)win->FindControl(TARGET_13);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_ROCKET) +
TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_SP_ARTILLERY) +
TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_SS_MISSILE) +
TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_TOWED_ARTILLERY) ) / 4;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Support units
sldr=(C_Slider*)win->FindControl(TARGET_14);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_ENGINEER) +
TeamInfo[team]->GetUnitTypePriority(STYPE_UNIT_HQ) ) / 2;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Naval Units
sldr=(C_Slider*)win->FindControl(TARGET_15);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = TeamInfo[team]->GetUnitTypePriority(MAX_UNITTYPE-1);
// value = TeamInfo[team]->GetMissionPriority(AMIS_ASHIP); // Conflicts with mission priorities
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
}
}
// Copies Kevin's priority stuff into the Window's controls
void LoadDefaultMissionPriorities()
{
C_Window *win;
C_Slider *sldr;
long value;
int team = FalconLocalSession->GetTeam();
win=gMainHandler->FindWindow(STRAT_WIN);
if(win)
{
// Mission Types
// OCA
sldr=(C_Slider*)win->FindControl(MISSION_1);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetMissionPriority(AMIS_OCASTRIKE) +
TeamInfo[team]->GetMissionPriority(AMIS_SWEEP) ) / 2;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// SAM Suppression
sldr=(C_Slider*)win->FindControl(MISSION_2);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetMissionPriority(AMIS_SEADSTRIKE) +
TeamInfo[team]->GetMissionPriority(AMIS_SEADESCORT) ) / 2;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Interdiction
sldr=(C_Slider*)win->FindControl(MISSION_3);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetMissionPriority(AMIS_SAD) +
TeamInfo[team]->GetMissionPriority(AMIS_INT) +
TeamInfo[team]->GetMissionPriority(AMIS_BAI)) / 3;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// CAS
sldr=(C_Slider*)win->FindControl(MISSION_4);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetMissionPriority(AMIS_ONCALLCAS) +
TeamInfo[team]->GetMissionPriority(AMIS_PRPLANCAS) +
TeamInfo[team]->GetMissionPriority(AMIS_CAS)) / 3;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Strategic Strikes
sldr=(C_Slider*)win->FindControl(MISSION_5);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetMissionPriority(AMIS_INTSTRIKE) +
TeamInfo[team]->GetMissionPriority(AMIS_STRIKE) +
TeamInfo[team]->GetMissionPriority(AMIS_DEEPSTRIKE)) / 3;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Anti shipping
sldr=(C_Slider*)win->FindControl(MISSION_6);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetMissionPriority(AMIS_ASW) +
TeamInfo[team]->GetMissionPriority(AMIS_ASHIP)) / 3;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// DCA
sldr=(C_Slider*)win->FindControl(MISSION_7);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetMissionPriority(AMIS_BARCAP) +
TeamInfo[team]->GetMissionPriority(AMIS_BARCAP2) +
TeamInfo[team]->GetMissionPriority(AMIS_HAVCAP) +
TeamInfo[team]->GetMissionPriority(AMIS_TARCAP) +
TeamInfo[team]->GetMissionPriority(AMIS_RESCAP) +
TeamInfo[team]->GetMissionPriority(AMIS_AMBUSHCAP) +
TeamInfo[team]->GetMissionPriority(AMIS_INTERCEPT)) / 7;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
// Recon
sldr=(C_Slider*)win->FindControl(MISSION_8);
if(sldr)
{
sldr->SetCallback(PriSliderCB);
value = ( TeamInfo[team]->GetMissionPriority(AMIS_BDA) +
TeamInfo[team]->GetMissionPriority(AMIS_RECON) +
TeamInfo[team]->GetMissionPriority(AMIS_RECONPATROL)) / 3;
PositionSlider(value,sldr); // Value is in range of 0 -> 100
}
}
}
void LoadDefaultPAKPriorities()
{
long i,idx;
POData POD;
short teamid;
WORD *Pal;
if(!PAKMap)
return;
teamid=FalconLocalSession->GetTeam();
Pal=(WORD*)((char *)(PAKMap->Owner->GetData() + PAKMap->Header->paletteoffset));
memset(PAKPriorities,0,sizeof(PAKPriorities));
VuListIterator poit(POList);
Objective o;
idx=1;
o = (Objective) poit.GetFirst();
while(o)
{
POD=GetPOData(o);
if(POD)
{
for(i=0;i<NUM_TEAMS;i++)
PAKPriorities[idx][i][0]=(uchar)POD->air_priority[i];
Pal[idx]=PAKPalette[PAKPriorities[idx][teamid][0]];
}
o = (Objective) poit.GetNext();
idx++;
}
}
// Retrieves the Window's control values, and put's them in Kevin's structures
void SaveTargetPriorities()
{
C_Window *win;
C_Slider *sldr;
uchar value;
int team = FalconLocalSession->GetTeam();
win=gMainHandler->FindWindow(STRAT_WIN);
if(win)
{
// Target Type priorities
// Aircraft
sldr=(C_Slider*)win->FindControl(TARGET_1);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetMissionPriority(AMIS_ESCORT, value);
}
// Air fields
sldr=(C_Slider*)win->FindControl(TARGET_2);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetObjTypePriority(TYPE_AIRBASE, value);
}
// Air defense
sldr=(C_Slider*)win->FindControl(TARGET_3);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetUnitTypePriority(STYPE_UNIT_AIR_DEFENSE, value);
}
// Radar
sldr=(C_Slider*)win->FindControl(TARGET_4);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetObjTypePriority(TYPE_RADAR, value);
}
// Army
sldr=(C_Slider*)win->FindControl(TARGET_5);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetObjTypePriority(TYPE_ARMYBASE, value);
TeamInfo[team]->SetObjTypePriority(TYPE_FORTIFICATION, value);
}
// CCC
sldr=(C_Slider*)win->FindControl(TARGET_6);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetObjTypePriority(TYPE_COM_CONTROL, value);
}
// Infrastructure
sldr=(C_Slider*)win->FindControl(TARGET_7);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetObjTypePriority(TYPE_ROAD, value);
TeamInfo[team]->SetObjTypePriority(TYPE_BRIDGE, value);
TeamInfo[team]->SetObjTypePriority(TYPE_RAIL_TERMINAL, value);
}
// Logistics
sldr=(C_Slider*)win->FindControl(TARGET_8);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetObjTypePriority(TYPE_DEPOT, value);
}
// War production
sldr=(C_Slider*)win->FindControl(TARGET_9);
if(sldr)
{
value=static_cast<uchar>(SliderValue(sldr));
TeamInfo[team]->SetObjTypePriority(TYPE_CHEMICAL, value);
TeamInfo[team]->SetObjTypePriority(TYPE_FACTORY, value);
TeamInfo[team]->SetObjTypePriority(TYPE_NUCLEAR, value);
TeamInfo[team]->SetObjTypePriority(TYPE_POWERPLANT, value);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -