本文整理汇总了C++中ListIter::Value方法的典型用法代码示例。如果您正苦于以下问题:C++ ListIter::Value方法的具体用法?C++ ListIter::Value怎么用?C++ ListIter::Value使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ListIter
的用法示例。
在下文中一共展示了ListIter::Value方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
void
CampaignPlanStrategic::ScoreNeeds(Combatant* c)
{
ListIter<CombatZone> zone = campaign->GetZones();
while (++zone) {
ZoneForce* force = zone->FindForce(c->GetIFF());
// clear needs:
force->SetNeed(CombatGroup::CARRIER_GROUP, 0);
force->SetNeed(CombatGroup::BATTLE_GROUP, 0);
force->SetNeed(CombatGroup::DESTROYER_SQUADRON, 0);
force->SetNeed(CombatGroup::ATTACK_SQUADRON, 0);
force->SetNeed(CombatGroup::FIGHTER_SQUADRON, 0);
force->SetNeed(CombatGroup::INTERCEPT_SQUADRON, 0);
// what defensive assets are needed in this zone?
ListIter<CombatGroup> def = force->GetDefendList();
while (++def) {
int defender_type = *CombatGroup::PreferredDefender(def->Type());
force->AddNeed(defender_type, def->Value());
}
// what offensive assets are needed in this zone?
ListIter<CombatGroup> tgt = force->GetTargetList();
while (++tgt) {
int attacker_type = *CombatGroup::PreferredAttacker(tgt->Type());
force->AddNeed(attacker_type, tgt->Value());
}
}
}
示例2: BuildGroupList
void
CampaignPlanStrategic::AssignZones(Combatant* c)
{
// find the list of assignable groups, in priority order:
List<CombatGroup> groups;
BuildGroupList(c->GetForce(), groups);
groups.sort();
// for each group, assign a zone:
ListIter<CombatGroup> g_iter = groups;
// first pass: fighter and attack squadrons assigned to star bases
while (++g_iter) {
CombatGroup* g = g_iter.value();
int gtype = g->Type();
if (gtype == CombatGroup::ATTACK_SQUADRON ||
gtype == CombatGroup::FIGHTER_SQUADRON ||
gtype == CombatGroup::INTERCEPT_SQUADRON) {
CombatGroup* parent = g->GetParent();
if (parent && parent->Type() == CombatGroup::WING)
parent = parent->GetParent();
if (!parent || parent->Type() == CombatGroup::CARRIER_GROUP)
continue;
// these groups are attached to fixed resources,
// so they must be assigned to the parent's zone:
CombatZone* parent_zone = campaign->GetZone(parent->GetRegion());
if (parent_zone) {
ZoneForce* parent_force = parent_zone->FindForce(g->GetIFF());
if (parent_force) {
g->SetAssignedZone(parent_zone);
parent_force->AddNeed(g->Type(), -(g->Value()));
}
}
}
}
// second pass: carrier groups
g_iter.reset();
while (++g_iter) {
CombatGroup* g = g_iter.value();
int gtype = g->Type();
if (gtype == CombatGroup::CARRIER_GROUP) {
int current_zone_need = 0;
int highest_zone_need = 0;
CombatZone* highest_zone = 0;
ZoneForce* highest_force = 0;
CombatZone* current_zone = 0;
ZoneForce* current_force = 0;
List<CombatZone> possible_zones;
if (g->IsZoneLocked()) {
current_zone = g->GetAssignedZone();
current_force = current_zone->FindForce(g->GetIFF());
}
else {
ListIter<CombatZone> z_iter = campaign->GetZones();
while (++z_iter) {
CombatZone* zone = z_iter.value();
ZoneForce* force = zone->FindForce(g->GetIFF());
int need = force->GetNeed(CombatGroup::CARRIER_GROUP) +
force->GetNeed(CombatGroup::ATTACK_SQUADRON) +
force->GetNeed(CombatGroup::FIGHTER_SQUADRON) +
force->GetNeed(CombatGroup::INTERCEPT_SQUADRON);
if (g->IsSystemLocked() && zone->System() != g->GetAssignedSystem())
continue;
possible_zones.append(zone);
if (zone->HasRegion(g->GetRegion())) {
current_zone_need = need;
current_zone = zone;
current_force = force;
}
if (need > highest_zone_need) {
highest_zone_need = need;
highest_zone = zone;
highest_force = force;
}
}
}
CombatZone* assigned_zone = current_zone;
ZoneForce* assigned_force = current_force;
if (highest_zone_need > current_zone_need) {
assigned_zone = highest_zone;
assigned_force = highest_force;
}
//.........这里部分代码省略.........