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/SeekerAI.cpp | 314 +++++++++++++++++++++++++-------------------------- 1 file changed, 157 insertions(+), 157 deletions(-) (limited to 'Stars45/SeekerAI.cpp') diff --git a/Stars45/SeekerAI.cpp b/Stars45/SeekerAI.cpp index c57219c..86e027f 100644 --- a/Stars45/SeekerAI.cpp +++ b/Stars45/SeekerAI.cpp @@ -1,15 +1,15 @@ /* 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: SeekerAI.cpp - AUTHOR: John DiCamillo + SUBSYSTEM: Stars.exe + FILE: SeekerAI.cpp + AUTHOR: John DiCamillo - OVERVIEW - ======== - Seeker Missile (low-level) Artificial Intelligence class + OVERVIEW + ======== + Seeker Missile (low-level) Artificial Intelligence class */ #include "MemDebug.h" @@ -24,13 +24,13 @@ // +----------------------------------------------------------------------+ SeekerAI::SeekerAI(SimObject* s) - : SteerAI(s), shot((Shot*) s), orig_target(0), - pursuit(1), delay(0), overshot(false) +: SteerAI(s), shot((Shot*) s), orig_target(0), +pursuit(1), delay(0), overshot(false) { - ai_type = SEEKER; + ai_type = SEEKER; - seek_gain = 25; - seek_damp = 0.55; + seek_gain = 25; + seek_damp = 0.55; } @@ -38,10 +38,10 @@ SeekerAI::SeekerAI(SimObject* s) SeekerAI::~SeekerAI() { - if (shot) { - if (shot->Owner()) - ((Ship*) shot->Owner())->SetMissileEta(shot->Identity(), 0); - } + if (shot) { + if (shot->Owner()) + ((Ship*) shot->Owner())->SetMissileEta(shot->Identity(), 0); + } } // +--------------------------------------------------------------------+ @@ -49,11 +49,11 @@ SeekerAI::~SeekerAI() void SeekerAI::ExecFrame(double seconds) { - // setup: - FindObjective(); + // setup: + FindObjective(); - // adaptive behavior: - Navigator(); + // adaptive behavior: + Navigator(); } // +--------------------------------------------------------------------+ @@ -61,116 +61,116 @@ SeekerAI::ExecFrame(double seconds) void SeekerAI::Navigator() { - if (delay > 0) { - delay -= Game::FrameTime(); - } - else { - Steer s = SeekTarget(); - self->ApplyYaw((float) s.yaw); - self->ApplyPitch((float) s.pitch); - } + if (delay > 0) { + delay -= Game::FrameTime(); + } + else { + Steer s = SeekTarget(); + self->ApplyYaw((float) s.yaw); + self->ApplyPitch((float) s.pitch); + } } void SeekerAI::SetTarget(SimObject* targ, System* sub) { - if (!orig_target && targ && targ->Type() == SimObject::SIM_SHIP) { - orig_target = (Ship*) targ; - Observe(orig_target); - } + if (!orig_target && targ && targ->Type() == SimObject::SIM_SHIP) { + orig_target = (Ship*) targ; + Observe(orig_target); + } - SteerAI::SetTarget(targ, sub); + SteerAI::SetTarget(targ, sub); - if (!target) { - shot->SetEta(0); + if (!target) { + shot->SetEta(0); - if (shot->Owner()) - ((Ship*) shot->Owner())->SetMissileEta(shot->Identity(), 0); - } + if (shot->Owner()) + ((Ship*) shot->Owner())->SetMissileEta(shot->Identity(), 0); + } } void SeekerAI::FindObjective() { - if (!shot || !target) return; - - if (target->Life() == 0) { - if (target != orig_target) - SetTarget(orig_target,0); - else - SetTarget(0,0); - - return; - } - - Point tloc = target->Location(); - tloc = Transform(tloc); - - // seeker head limit of 45 degrees: - if (tloc.z < 0 || tloc.z < fabs(tloc.x) || tloc.z < fabs(tloc.y)) { - overshot = true; - SetTarget(0,0); - return; - } - - // distance from self to target: - distance = Point(target->Location() - self->Location()).length(); - - // are we being spoofed? - CheckDecoys(distance); - - Point cv = ClosingVelocity(); - - // time to reach target: - double time = distance / cv.length(); - double predict = time; - if (predict > 15) - predict = 15; - - // pure pursuit: - if (pursuit == 1 || time < 0.1) { - obj_w = target->Location(); - } - - // lead pursuit: - else { - // where the target will be when we reach it: - Point run_vec = target->Velocity(); - obj_w = target->Location() + (run_vec * predict); - } - - // subsystem offset: - if (subtarget) { - Point offset = target->Location() - subtarget->MountLocation(); - obj_w -= offset; - } - else if (target->Type() == SimObject::SIM_SHIP) { - Ship* tgt_ship = (Ship*) target; - - if (tgt_ship->IsGroundUnit()) - obj_w += Point(0,150,0); - } - - - distance = Point(obj_w - self->Location()).length(); - time = distance / cv.length(); - - // where we will be when the target gets there: - if (predict > 0.1 && predict < 15) { - Point self_dest = self->Location() + cv * predict; - Point err = obj_w - self_dest; - - obj_w += err; - } - - // transform into camera coords: - objective = Transform(obj_w); - objective.Normalize(); - - shot->SetEta((int) time); - - if (shot->Owner()) - ((Ship*) shot->Owner())->SetMissileEta(shot->Identity(), (int) time); + if (!shot || !target) return; + + if (target->Life() == 0) { + if (target != orig_target) + SetTarget(orig_target,0); + else + SetTarget(0,0); + + return; + } + + Point tloc = target->Location(); + tloc = Transform(tloc); + + // seeker head limit of 45 degrees: + if (tloc.z < 0 || tloc.z < fabs(tloc.x) || tloc.z < fabs(tloc.y)) { + overshot = true; + SetTarget(0,0); + return; + } + + // distance from self to target: + distance = Point(target->Location() - self->Location()).length(); + + // are we being spoofed? + CheckDecoys(distance); + + Point cv = ClosingVelocity(); + + // time to reach target: + double time = distance / cv.length(); + double predict = time; + if (predict > 15) + predict = 15; + + // pure pursuit: + if (pursuit == 1 || time < 0.1) { + obj_w = target->Location(); + } + + // lead pursuit: + else { + // where the target will be when we reach it: + Point run_vec = target->Velocity(); + obj_w = target->Location() + (run_vec * predict); + } + + // subsystem offset: + if (subtarget) { + Point offset = target->Location() - subtarget->MountLocation(); + obj_w -= offset; + } + else if (target->Type() == SimObject::SIM_SHIP) { + Ship* tgt_ship = (Ship*) target; + + if (tgt_ship->IsGroundUnit()) + obj_w += Point(0,150,0); + } + + + distance = Point(obj_w - self->Location()).length(); + time = distance / cv.length(); + + // where we will be when the target gets there: + if (predict > 0.1 && predict < 15) { + Point self_dest = self->Location() + cv * predict; + Point err = obj_w - self_dest; + + obj_w += err; + } + + // transform into camera coords: + objective = Transform(obj_w); + objective.Normalize(); + + shot->SetEta((int) time); + + if (shot->Owner()) + ((Ship*) shot->Owner())->SetMissileEta(shot->Identity(), (int) time); } // +--------------------------------------------------------------------+ @@ -178,30 +178,30 @@ SeekerAI::FindObjective() void SeekerAI::CheckDecoys(double target_distance) { - // if the assigned target has the burner lit, - // ignore the decoys: - if (orig_target && orig_target->Augmenter()) { - SetTarget(orig_target); - return; - } - - if (target && - target == orig_target && - orig_target->GetActiveDecoys().size()) { - - ListIter decoy = orig_target->GetActiveDecoys(); - - while (++decoy) { - double decoy_distance = Point(decoy->Location() - self->Location()).length(); - - if (decoy_distance < target_distance) { - if (rand() < 1600) { - SetTarget(decoy.value(), 0); - return; - } - } - } - } + // if the assigned target has the burner lit, + // ignore the decoys: + if (orig_target && orig_target->Augmenter()) { + SetTarget(orig_target); + return; + } + + if (target && + target == orig_target && + orig_target->GetActiveDecoys().size()) { + + ListIter decoy = orig_target->GetActiveDecoys(); + + while (++decoy) { + double decoy_distance = Point(decoy->Location() - self->Location()).length(); + + if (decoy_distance < target_distance) { + if (rand() < 1600) { + SetTarget(decoy.value(), 0); + return; + } + } + } + } } // +--------------------------------------------------------------------+ @@ -209,7 +209,7 @@ SeekerAI::CheckDecoys(double target_distance) bool SeekerAI::Overshot() { - return overshot; + return overshot; } // +--------------------------------------------------------------------+ @@ -217,7 +217,7 @@ SeekerAI::Overshot() Steer SeekerAI::AvoidCollision() { - return Steer(); + return Steer(); } // +--------------------------------------------------------------------+ @@ -225,10 +225,10 @@ SeekerAI::AvoidCollision() Steer SeekerAI::SeekTarget() { - if (!self || !target || Overshot()) - return Steer(); + if (!self || !target || Overshot()) + return Steer(); - return Seek(objective); + return Seek(objective); } // +--------------------------------------------------------------------+ @@ -236,22 +236,22 @@ SeekerAI::SeekTarget() bool SeekerAI::Update(SimObject* obj) { - if (obj == target) { - if (obj->Type() == SimObject::SIM_SHOT && orig_target != 0) - target = orig_target; - } + if (obj == target) { + if (obj->Type() == SimObject::SIM_SHOT && orig_target != 0) + target = orig_target; + } - if (obj == orig_target) - orig_target = 0; + if (obj == orig_target) + orig_target = 0; - return SteerAI::Update(obj); + return SteerAI::Update(obj); } const char* SeekerAI::GetObserverName() const { - static char name[64]; - sprintf(name, "SeekerAI(%s)", self->Name()); - return name; + static char name[64]; + sprintf(name, "SeekerAI(%s)", self->Name()); + return name; } -- cgit v1.1