From 69209c38968c6f4066a772e0a51a2928749217de Mon Sep 17 00:00:00 2001 From: "FWoltermann@gmail.com" Date: Fri, 9 Dec 2011 19:00:23 +0000 Subject: Re-indenting the code to use standard tabs. Yes, I know this is pretty pointless, but who cares? --- Stars45/FlightPlanner.cpp | 634 +++++++++++++++++++++++----------------------- 1 file changed, 317 insertions(+), 317 deletions(-) (limited to 'Stars45/FlightPlanner.cpp') diff --git a/Stars45/FlightPlanner.cpp b/Stars45/FlightPlanner.cpp index 7d2cf7c..624a646 100644 --- a/Stars45/FlightPlanner.cpp +++ b/Stars45/FlightPlanner.cpp @@ -1,16 +1,16 @@ /* Project Starshatter 4.5 - Destroyer Studios LLC - Copyright © 1997-2004. All Rights Reserved. + Destroyer Studios LLC + Copyright © 1997-2004. All Rights Reserved. - SUBSYSTEM: Stars.exe - FILE: FlightPlanner.cpp - AUTHOR: John DiCamillo + SUBSYSTEM: Stars.exe + FILE: FlightPlanner.cpp + AUTHOR: John DiCamillo - OVERVIEW - ======== - Flight Planning class for creating navpoint routes for fighter elements. - Used both by the CarrierAI class and the Flight Dialog. + OVERVIEW + ======== + Flight Planning class for creating navpoint routes for fighter elements. + Used both by the CarrierAI class and the Flight Dialog. */ #include "MemDebug.h" @@ -35,11 +35,11 @@ // +----------------------------------------------------------------------+ FlightPlanner::FlightPlanner(Ship* s) - : sim(0), ship(s) +: sim(0), ship(s) { - sim = Sim::GetSim(); + sim = Sim::GetSim(); - patrol_range = (float) (250e3 + 10e3 * (int) Random(0, 8.9)); + patrol_range = (float) (250e3 + 10e3 * (int) Random(0, 8.9)); } FlightPlanner::~FlightPlanner() @@ -50,91 +50,91 @@ FlightPlanner::~FlightPlanner() void FlightPlanner::CreatePatrolRoute(Element* elem, int index) { - RLoc rloc; - Vec3 dummy(0,0,0); - Point loc = ship->Location(); - double zone = ship->CompassHeading(); - Instruction* instr = 0; - - if (ship->IsAirborne()) - loc.y += 8e3; - else - loc.y += 1e3; - - loc = loc.OtherHand(); - - if (index > 2) - zone += 170*DEGREES; - else if (index > 1) - zone += -90*DEGREES; - else if (index > 0) - zone += 90*DEGREES; - - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(loc); - rloc.SetDistance(30e3); - rloc.SetDistanceVar(0); - rloc.SetAzimuth(-10*DEGREES + zone); - rloc.SetAzimuthVar(0); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::VECTOR); - instr->SetSpeed(750); - instr->GetRLoc() = rloc; - - elem->AddNavPoint(instr); - - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(loc); - if (ship->IsAirborne()) - rloc.SetDistance(140e3); - else - rloc.SetDistance(220e3); - rloc.SetDistanceVar(50e3); - rloc.SetAzimuth(-20*DEGREES + zone); - rloc.SetAzimuthVar(15*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::PATROL); - instr->SetSpeed(500); - instr->GetRLoc() = rloc; - - elem->AddNavPoint(instr); - - rloc.SetReferenceLoc(&instr->GetRLoc()); - rloc.SetDistance(120e3); - rloc.SetDistanceVar(30e3); - rloc.SetAzimuth(60*DEGREES + zone); - rloc.SetAzimuthVar(20*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::PATROL); - instr->SetSpeed(350); - instr->GetRLoc() = rloc; - - elem->AddNavPoint(instr); - - rloc.SetReferenceLoc(&instr->GetRLoc()); - rloc.SetDistance(120e3); - rloc.SetDistanceVar(30e3); - rloc.SetAzimuth(120*DEGREES + zone); - rloc.SetAzimuthVar(20*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::PATROL); - instr->SetSpeed(350); - instr->GetRLoc() = rloc; - - elem->AddNavPoint(instr); - - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(loc); - rloc.SetDistance(40e3); - rloc.SetDistanceVar(0); - rloc.SetAzimuth(180*DEGREES + ship->CompassHeading()); - rloc.SetAzimuthVar(0*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::RTB); - instr->SetSpeed(500); - instr->GetRLoc() = rloc; - - elem->AddNavPoint(instr); + RLoc rloc; + Vec3 dummy(0,0,0); + Point loc = ship->Location(); + double zone = ship->CompassHeading(); + Instruction* instr = 0; + + if (ship->IsAirborne()) + loc.y += 8e3; + else + loc.y += 1e3; + + loc = loc.OtherHand(); + + if (index > 2) + zone += 170*DEGREES; + else if (index > 1) + zone += -90*DEGREES; + else if (index > 0) + zone += 90*DEGREES; + + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(loc); + rloc.SetDistance(30e3); + rloc.SetDistanceVar(0); + rloc.SetAzimuth(-10*DEGREES + zone); + rloc.SetAzimuthVar(0); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::VECTOR); + instr->SetSpeed(750); + instr->GetRLoc() = rloc; + + elem->AddNavPoint(instr); + + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(loc); + if (ship->IsAirborne()) + rloc.SetDistance(140e3); + else + rloc.SetDistance(220e3); + rloc.SetDistanceVar(50e3); + rloc.SetAzimuth(-20*DEGREES + zone); + rloc.SetAzimuthVar(15*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::PATROL); + instr->SetSpeed(500); + instr->GetRLoc() = rloc; + + elem->AddNavPoint(instr); + + rloc.SetReferenceLoc(&instr->GetRLoc()); + rloc.SetDistance(120e3); + rloc.SetDistanceVar(30e3); + rloc.SetAzimuth(60*DEGREES + zone); + rloc.SetAzimuthVar(20*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::PATROL); + instr->SetSpeed(350); + instr->GetRLoc() = rloc; + + elem->AddNavPoint(instr); + + rloc.SetReferenceLoc(&instr->GetRLoc()); + rloc.SetDistance(120e3); + rloc.SetDistanceVar(30e3); + rloc.SetAzimuth(120*DEGREES + zone); + rloc.SetAzimuthVar(20*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::PATROL); + instr->SetSpeed(350); + instr->GetRLoc() = rloc; + + elem->AddNavPoint(instr); + + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(loc); + rloc.SetDistance(40e3); + rloc.SetDistanceVar(0); + rloc.SetAzimuth(180*DEGREES + ship->CompassHeading()); + rloc.SetAzimuthVar(0*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::RTB); + instr->SetSpeed(500); + instr->GetRLoc() = rloc; + + elem->AddNavPoint(instr); } // +--------------------------------------------------------------------+ @@ -142,142 +142,142 @@ FlightPlanner::CreatePatrolRoute(Element* elem, int index) void FlightPlanner::CreateStrikeRoute(Element* elem, Element* target) { - if (!elem) return; - - RLoc rloc; - Vec3 dummy(0,0,0); - Point loc = ship->Location(); - double head = ship->CompassHeading() + 15*DEGREES; - double dist = 30e3; - Instruction* instr = 0; - Ship* tgt_ship = 0; - - if (ship->IsAirborne()) - loc += ship->Cam().vup() * 8e3; - else - loc += ship->Cam().vup() * 1e3; - - loc = loc.OtherHand(); - - if (target) - tgt_ship = target->GetShip(1); - - if (tgt_ship) { - double range = Point(tgt_ship->Location() - ship->Location()).length(); - - if (range < 100e3) - dist = 20e3; - } - - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(loc); - rloc.SetDistance(dist); - rloc.SetDistanceVar(0); - rloc.SetAzimuth(head); - rloc.SetAzimuthVar(2*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::VECTOR); - instr->SetSpeed(750); - instr->GetRLoc() = rloc; - - elem->AddNavPoint(instr); - - if (tgt_ship) { - Ship* tgt_ship = target->GetShip(1); - Point tgt = tgt_ship->Location() + tgt_ship->Velocity() * 10; - Point mid = ship->Location() + (tgt - ship->Location()) * 0.5; - double beam = tgt_ship->CompassHeading() + 90*DEGREES; - - if (tgt_ship->IsAirborne()) - tgt += tgt_ship->Cam().vup() * 8e3; - else - tgt += tgt_ship->Cam().vup() * 1e3; - - tgt = tgt.OtherHand(); - mid = mid.OtherHand(); - - if (tgt_ship && tgt_ship->IsStarship()) { - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(tgt); - rloc.SetDistance(60e3); - rloc.SetDistanceVar(5e3); - rloc.SetAzimuth(beam); - rloc.SetAzimuthVar(5*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(tgt_ship->GetRegion(), dummy, Instruction::ASSAULT); - instr->SetSpeed(750); - instr->GetRLoc() = rloc; - instr->SetTarget(target->Name()); - instr->SetFormation(Instruction::TRAIL); - - elem->AddNavPoint(instr); - } - - if (tgt_ship && tgt_ship->IsStatic()) { - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(mid); - rloc.SetDistance(60e3); - rloc.SetDistanceVar(5e3); - rloc.SetAzimuth(beam); - rloc.SetAzimuthVar(15*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(tgt_ship->GetRegion(), dummy, Instruction::VECTOR); - instr->SetSpeed(750); - instr->GetRLoc() = rloc; - - elem->AddNavPoint(instr); - - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(tgt); - rloc.SetDistance(40e3); - rloc.SetDistanceVar(5e3); - rloc.SetAzimuth(beam); - rloc.SetAzimuthVar(5*DEGREES); - - int action = Instruction::ASSAULT; - - if (tgt_ship->IsGroundUnit()) - action = Instruction::STRIKE; - - instr = new(__FILE__,__LINE__) Instruction(tgt_ship->GetRegion(), dummy, action); - instr->SetSpeed(750); - instr->GetRLoc() = rloc; - instr->SetTarget(target->Name()); - instr->SetFormation(Instruction::TRAIL); - - elem->AddNavPoint(instr); - } - - else if (tgt_ship && tgt_ship->IsDropship()) { - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(tgt); - rloc.SetDistance(60e3); - rloc.SetDistanceVar(5e3); - rloc.SetAzimuth(tgt_ship->CompassHeading()); - rloc.SetAzimuthVar(20*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(tgt_ship->GetRegion(), dummy, Instruction::INTERCEPT); - instr->SetSpeed(750); - instr->GetRLoc() = rloc; - instr->SetTarget(target->Name()); - instr->SetFormation(Instruction::SPREAD); - - elem->AddNavPoint(instr); - } - } - - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(loc); - rloc.SetDistance(40e3); - rloc.SetDistanceVar(0); - rloc.SetAzimuth(180*DEGREES + ship->CompassHeading()); - rloc.SetAzimuthVar(0*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::RTB); - instr->SetSpeed(500); - instr->GetRLoc() = rloc; - - elem->AddNavPoint(instr); + if (!elem) return; + + RLoc rloc; + Vec3 dummy(0,0,0); + Point loc = ship->Location(); + double head = ship->CompassHeading() + 15*DEGREES; + double dist = 30e3; + Instruction* instr = 0; + Ship* tgt_ship = 0; + + if (ship->IsAirborne()) + loc += ship->Cam().vup() * 8e3; + else + loc += ship->Cam().vup() * 1e3; + + loc = loc.OtherHand(); + + if (target) + tgt_ship = target->GetShip(1); + + if (tgt_ship) { + double range = Point(tgt_ship->Location() - ship->Location()).length(); + + if (range < 100e3) + dist = 20e3; + } + + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(loc); + rloc.SetDistance(dist); + rloc.SetDistanceVar(0); + rloc.SetAzimuth(head); + rloc.SetAzimuthVar(2*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::VECTOR); + instr->SetSpeed(750); + instr->GetRLoc() = rloc; + + elem->AddNavPoint(instr); + + if (tgt_ship) { + Ship* tgt_ship = target->GetShip(1); + Point tgt = tgt_ship->Location() + tgt_ship->Velocity() * 10; + Point mid = ship->Location() + (tgt - ship->Location()) * 0.5; + double beam = tgt_ship->CompassHeading() + 90*DEGREES; + + if (tgt_ship->IsAirborne()) + tgt += tgt_ship->Cam().vup() * 8e3; + else + tgt += tgt_ship->Cam().vup() * 1e3; + + tgt = tgt.OtherHand(); + mid = mid.OtherHand(); + + if (tgt_ship && tgt_ship->IsStarship()) { + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(tgt); + rloc.SetDistance(60e3); + rloc.SetDistanceVar(5e3); + rloc.SetAzimuth(beam); + rloc.SetAzimuthVar(5*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(tgt_ship->GetRegion(), dummy, Instruction::ASSAULT); + instr->SetSpeed(750); + instr->GetRLoc() = rloc; + instr->SetTarget(target->Name()); + instr->SetFormation(Instruction::TRAIL); + + elem->AddNavPoint(instr); + } + + if (tgt_ship && tgt_ship->IsStatic()) { + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(mid); + rloc.SetDistance(60e3); + rloc.SetDistanceVar(5e3); + rloc.SetAzimuth(beam); + rloc.SetAzimuthVar(15*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(tgt_ship->GetRegion(), dummy, Instruction::VECTOR); + instr->SetSpeed(750); + instr->GetRLoc() = rloc; + + elem->AddNavPoint(instr); + + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(tgt); + rloc.SetDistance(40e3); + rloc.SetDistanceVar(5e3); + rloc.SetAzimuth(beam); + rloc.SetAzimuthVar(5*DEGREES); + + int action = Instruction::ASSAULT; + + if (tgt_ship->IsGroundUnit()) + action = Instruction::STRIKE; + + instr = new(__FILE__,__LINE__) Instruction(tgt_ship->GetRegion(), dummy, action); + instr->SetSpeed(750); + instr->GetRLoc() = rloc; + instr->SetTarget(target->Name()); + instr->SetFormation(Instruction::TRAIL); + + elem->AddNavPoint(instr); + } + + else if (tgt_ship && tgt_ship->IsDropship()) { + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(tgt); + rloc.SetDistance(60e3); + rloc.SetDistanceVar(5e3); + rloc.SetAzimuth(tgt_ship->CompassHeading()); + rloc.SetAzimuthVar(20*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(tgt_ship->GetRegion(), dummy, Instruction::INTERCEPT); + instr->SetSpeed(750); + instr->GetRLoc() = rloc; + instr->SetTarget(target->Name()); + instr->SetFormation(Instruction::SPREAD); + + elem->AddNavPoint(instr); + } + } + + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(loc); + rloc.SetDistance(40e3); + rloc.SetDistanceVar(0); + rloc.SetAzimuth(180*DEGREES + ship->CompassHeading()); + rloc.SetAzimuthVar(0*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::RTB); + instr->SetSpeed(500); + instr->GetRLoc() = rloc; + + elem->AddNavPoint(instr); } // +--------------------------------------------------------------------+ @@ -285,88 +285,88 @@ FlightPlanner::CreateStrikeRoute(Element* elem, Element* target) void FlightPlanner::CreateEscortRoute(Element* elem, Element* ward) { - if (!elem) return; - - RLoc rloc; - Vec3 dummy(0,0,0); - Point loc = ship->Location(); - double head = ship->CompassHeading(); - Instruction* instr = 0; - - if (ship->IsAirborne()) - loc += ship->Cam().vup() * 8e3; - else - loc += ship->Cam().vup() * 1e3; - - loc = loc.OtherHand(); - - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(loc); - rloc.SetDistance(30e3); - rloc.SetDistanceVar(0); - rloc.SetAzimuth(head); - rloc.SetAzimuthVar(0); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::VECTOR); - instr->SetSpeed(750); - instr->GetRLoc() = rloc; - - elem->AddNavPoint(instr); - - if (ward && ward->GetShip(1)) { - // follow ward's flight plan: - if (ward->GetFlightPlan().size()) { - ListIter iter = ward->GetFlightPlan(); - - while (++iter) { - Instruction* ward_instr = iter.value(); - - if (ward_instr->Action() != Instruction::RTB) { - rloc.SetReferenceLoc(&ward_instr->GetRLoc()); - rloc.SetDistance(25e3); - rloc.SetDistanceVar(5e3); - rloc.SetAzimuth(0); - rloc.SetAzimuthVar(90*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::ESCORT); - instr->SetSpeed(350); - instr->GetRLoc() = rloc; - instr->SetTarget(ward->Name()); - - elem->AddNavPoint(instr); - } - } - } - - // if ward has no flight plan, just go to a point nearby: - else { - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(ward->GetShip(1)->Location()); - rloc.SetDistance(25e3); - rloc.SetDistanceVar(5e3); - rloc.SetAzimuth(0); - rloc.SetAzimuthVar(90*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::DEFEND); - instr->SetSpeed(500); - instr->GetRLoc() = rloc; - instr->SetTarget(ward->Name()); - instr->SetHoldTime(15 * 60); // fifteen minutes - - elem->AddNavPoint(instr); - } - } - - rloc.SetReferenceLoc(0); - rloc.SetBaseLocation(loc); - rloc.SetDistance(40e3); - rloc.SetDistanceVar(0); - rloc.SetAzimuth(180*DEGREES + ship->CompassHeading()); - rloc.SetAzimuthVar(0*DEGREES); - - instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::RTB); - instr->SetSpeed(500); - instr->GetRLoc() = rloc; - - elem->AddNavPoint(instr); + if (!elem) return; + + RLoc rloc; + Vec3 dummy(0,0,0); + Point loc = ship->Location(); + double head = ship->CompassHeading(); + Instruction* instr = 0; + + if (ship->IsAirborne()) + loc += ship->Cam().vup() * 8e3; + else + loc += ship->Cam().vup() * 1e3; + + loc = loc.OtherHand(); + + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(loc); + rloc.SetDistance(30e3); + rloc.SetDistanceVar(0); + rloc.SetAzimuth(head); + rloc.SetAzimuthVar(0); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::VECTOR); + instr->SetSpeed(750); + instr->GetRLoc() = rloc; + + elem->AddNavPoint(instr); + + if (ward && ward->GetShip(1)) { + // follow ward's flight plan: + if (ward->GetFlightPlan().size()) { + ListIter iter = ward->GetFlightPlan(); + + while (++iter) { + Instruction* ward_instr = iter.value(); + + if (ward_instr->Action() != Instruction::RTB) { + rloc.SetReferenceLoc(&ward_instr->GetRLoc()); + rloc.SetDistance(25e3); + rloc.SetDistanceVar(5e3); + rloc.SetAzimuth(0); + rloc.SetAzimuthVar(90*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::ESCORT); + instr->SetSpeed(350); + instr->GetRLoc() = rloc; + instr->SetTarget(ward->Name()); + + elem->AddNavPoint(instr); + } + } + } + + // if ward has no flight plan, just go to a point nearby: + else { + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(ward->GetShip(1)->Location()); + rloc.SetDistance(25e3); + rloc.SetDistanceVar(5e3); + rloc.SetAzimuth(0); + rloc.SetAzimuthVar(90*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::DEFEND); + instr->SetSpeed(500); + instr->GetRLoc() = rloc; + instr->SetTarget(ward->Name()); + instr->SetHoldTime(15 * 60); // fifteen minutes + + elem->AddNavPoint(instr); + } + } + + rloc.SetReferenceLoc(0); + rloc.SetBaseLocation(loc); + rloc.SetDistance(40e3); + rloc.SetDistanceVar(0); + rloc.SetAzimuth(180*DEGREES + ship->CompassHeading()); + rloc.SetAzimuthVar(0*DEGREES); + + instr = new(__FILE__,__LINE__) Instruction(ship->GetRegion(), dummy, Instruction::RTB); + instr->SetSpeed(500); + instr->GetRLoc() = rloc; + + elem->AddNavPoint(instr); } -- cgit v1.1