[Gcblue-commits] gcb_wx/scripts AI.py,1.8,1.9
Status: Alpha
Brought to you by:
ddcforge
From: <ddc...@us...> - 2004-02-16 01:14:05
|
Update of /cvsroot/gcblue/gcb_wx/scripts In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7358/scripts Modified Files: AI.py Log Message: Index: AI.py =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/scripts/AI.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** AI.py 9 Jan 2004 21:48:40 -0000 1.8 --- AI.py 16 Feb 2004 01:06:22 -0000 1.9 *************** *** 50,54 **** def Patrol(UI): targetid = UI.GetTarget() ! if targetid != 0xFFFFFFFF: InterceptTarget(UI) return --- 50,54 ---- def Patrol(UI): targetid = UI.GetTarget() ! if targetid != -1: InterceptTarget(UI) return *************** *** 64,68 **** # engage hostiles in range track_id = GetSuitableTarget(UI) ! if (track_id != 0xFFFFFFFF): UI.SetTarget(track_id) UI.SetHeadingToInterceptTarget() --- 64,68 ---- # engage hostiles in range track_id = GetSuitableTarget(UI) ! if (track_id != -1): UI.SetTarget(track_id) UI.SetHeadingToInterceptTarget() *************** *** 193,209 **** def GetSuitableTarget(UI): ! # first check for air threats ! if (UI.IsAir()): ! # 2nd param is affiliation, 3 is hostile, 0 (unknown) automatically included in search ! track = UI.GetClosestAirTrack(150,3) ! else: # surface ! track = UI.GetClosestAirTrack(50,3) # surface first considers close air tracks ! if (track.IsValid()): ! return track.ID; else: ! track = UI.GetClosestSurfaceTrack(200,3) ! if (track.IsValid()): ! return track.ID; ! return 0xFFFFFFFF; --- 193,210 ---- def GetSuitableTarget(UI): ! air_track = UI.GetClosestAirTrack(150,3,1) ! UI.SetTarget(air_track.ID) # can be -1 ! air_rating = ConsiderTarget(UI) ! ! surface_track = UI.GetClosestSurfaceTrack(200,3,4) # surface first considers surface tracks ! UI.SetTarget(surface_track.ID) ! surface_rating = ConsiderTarget(UI) ! ! if (air_rating > surface_rating): ! return air_track.ID ! elif (surface_rating > 0): ! return surface_track.ID else: ! return -1 *************** *** 220,228 **** return def InterceptTarget(UI): targetid = UI.GetTarget() ! if targetid == 0xFFFFFFFF: return --- 221,248 ---- return + # return 0 if no weapons are available that are effective vs. target + # return 1 if weapon avail, but not in range + # return 2 if weap avail and in range + def ConsiderTarget(UI): + target_id = UI.GetTarget() + if target_id == -1: + return + # check if effective weapon is available + target_info = UI.GetTargetTrackInfo() + launcher_info = UI.GetBestLauncher() + launcher = launcher_info.Launcher + if (launcher == -1): # if (no effective launcher is available) + return 0 + launch_range = launcher_info.Range_km # reference max range, use for launch decision + target_range = UI.GetRangeToTarget() + if (target_range > launch_range): + return 1 + else: + return 2 def InterceptTarget(UI): targetid = UI.GetTarget() ! if targetid == -1: return *************** *** 234,237 **** --- 254,268 ---- UI.SetTarget(-1) # clear target return + + # check how many weapons are engaging target and abort if more than 4 + + # debug_file = open('log/pydebug.txt', 'a') + # debug_file.write('target: %d, engaged: %d\n' % (targetid, target_info.GetEngagedCount()) ) + # debug_file.close() + + if (target_info.GetEngagedCount() > 4): + UI.SetTarget(-1) # clear target + return + # use weapon if in range *************** *** 276,279 **** --- 307,311 ---- lat = target_info.Lat lon = target_info.Lon + UI.HandoffTargetToLauncher(launcher) # to store intended target UI.SendDatumToLauncher(lon,lat,launcher) UI.Launch(launcher, launch_qty) |