# engine.LingYi.entitys.submarine

View Source

      1# -*- coding:utf-8 -*-
      2
      3from .global_util import *
      4from .unit import Unit
      5
      6
      7class Submarine(Unit):
      8    def __init__(self, guid, name, side_name):
      9        """
     10        潜艇类
     11        1、设置潜艇的期望深度
     12        2、设置潜艇的期望深度层
     13        3、获取单元挂架武器信息, 以列表形式返回
     14        4、获取精简信息, 提炼信息进行决策
     15
     16        示例：
     17        submarine_id = "sflsf0-gjlsf-sf"  # 潜艇guid
     18        submarine = self.get_unit(submarine_id)  # 获取潜艇对象
     19        if submarine is not None:
     20            submarine.set_depth(200)  # 潜艇下潜200米
     21        """
     22        Unit.__init__(self, guid, name, side_name, ElementType.Submarine)
     23        self.DepthPreset = 0  # 潜艇深度预设，含义如下
     24        """
     25        0:  None,  无
     26        1:  Periscope, 潜望镜深度
     27        2:  Shallow,  浅层
     28        3:  OverLayer,  温跃层之上
     29        4:  UnderLayer, 温跃层之下
     30        5:  MaxDepth,   最大深度
     31        6:  Surface   水面
     32        """
     33        self.DockingOps = {}  # 停靠码头--结构：THDockingOps 定义请查看entitys/struct.proto文件
     34
     35    def set_depth(self, depth):
     36        """
     37        1、设置潜艇的期望深度
     38        :param depth: float, 期望深度值, 单位：米，例：200，则期望水下200米深
     39        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
     40        """
     41        return self._game_server.api_set_depth(self, depth)
     42
     43    def set_depth_level(self, depth_level):
     44        """
     45        2、设置潜艇的期望深度层
     46        :param depth_level: str, "CURRENT":当前设置的当前的深度；"OFF":不勾选手动控制，
     47                            "DESIRED":当前设置的期望深度,即勾选手动控制高度
     48                            期望深度层：'SURFACE'：水面;'PERISCOPE':潜望深度;'SHALLOW':浅的;
     49                            'OVERLAYER':温跃层上;'UNDERLAYER':温跃层下;'MAXDEPTH':尽可能深
     50        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
     51        """
     52        return self._game_server.api_set_depth_level(self, depth_level)
     53
     54    def get_weapon_infos(self):
     55        """
     56        3、获取单元挂架武器信息, 以列表形式返回
     57        :return: list, 武器列表，[(武器名，武器ID，数量)]
     58        """
     59        weapon_info = {}
     60        for k, v in self.Mounts.items():
     61            if "WeaponRecs" in v:
     62                for rid, w in v["WeaponRecs"].items():
     63                    weaponid = w["WeaponDBID"]
     64                    weapon_name = w["Name"]
     65                    count = w["CurrentLoad"]
     66                    if weaponid in weapon_info:
     67                        record_info = weapon_info[weaponid]
     68                        new_count = record_info[1] + count
     69                        weapon_info[weaponid] = [weapon_name, new_count]
     70                    else:
     71                        weapon_info[weaponid] = [weapon_name, count]
     72
     73        weapon_infos = []
     74        for k, v in weapon_info.items():
     75            weapon_infos.append([v[0], k, v[1]])
     76        return weapon_infos
     77
     78    def get_summary_info(self):
     79        """
     80        4、获取精简信息, 提炼信息进行决策
     81        :return: dict
     82        """
     83        info_dict = {
     84            "category": "Submarine",
     85            "guid": self.ID,
     86            "dbid": self.DBID,
     87            "name": self.Name,
     88            "mission": self.AssignedMission,
     89            "lat": self.Lat,
     90            "lon": self.Lon,
     91            "alt": self.CurrentAltitude,
     92            "course": self.get_way_points_info(),
     93            "head": self.CurrentHeading,
     94            "speed": self.CurrentSpeed,
     95            "fuel": self.FuelRecs,
     96            "damage": self.DamagePercent,
     97            "status": self.Status,
     98            "sensors": self.Sensors,
     99            "sensory": self.Sensory,
    100            "mounts": self.Mounts,
    101            "magazine": self.Magazines,
    102        }
    103        return info_dict

class Submarine(engine.LingYi.entitys.unit.Unit): View Source

      8class Submarine(Unit):
      9    def __init__(self, guid, name, side_name):
     10        """
     11        潜艇类
     12        1、设置潜艇的期望深度
     13        2、设置潜艇的期望深度层
     14        3、获取单元挂架武器信息, 以列表形式返回
     15        4、获取精简信息, 提炼信息进行决策
     16
     17        示例：
     18        submarine_id = "sflsf0-gjlsf-sf"  # 潜艇guid
     19        submarine = self.get_unit(submarine_id)  # 获取潜艇对象
     20        if submarine is not None:
     21            submarine.set_depth(200)  # 潜艇下潜200米
     22        """
     23        Unit.__init__(self, guid, name, side_name, ElementType.Submarine)
     24        self.DepthPreset = 0  # 潜艇深度预设，含义如下
     25        """
     26        0:  None,  无
     27        1:  Periscope, 潜望镜深度
     28        2:  Shallow,  浅层
     29        3:  OverLayer,  温跃层之上
     30        4:  UnderLayer, 温跃层之下
     31        5:  MaxDepth,   最大深度
     32        6:  Surface   水面
     33        """
     34        self.DockingOps = {}  # 停靠码头--结构：THDockingOps 定义请查看entitys/struct.proto文件
     35
     36    def set_depth(self, depth):
     37        """
     38        1、设置潜艇的期望深度
     39        :param depth: float, 期望深度值, 单位：米，例：200，则期望水下200米深
     40        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
     41        """
     42        return self._game_server.api_set_depth(self, depth)
     43
     44    def set_depth_level(self, depth_level):
     45        """
     46        2、设置潜艇的期望深度层
     47        :param depth_level: str, "CURRENT":当前设置的当前的深度；"OFF":不勾选手动控制，
     48                            "DESIRED":当前设置的期望深度,即勾选手动控制高度
     49                            期望深度层：'SURFACE'：水面;'PERISCOPE':潜望深度;'SHALLOW':浅的;
     50                            'OVERLAYER':温跃层上;'UNDERLAYER':温跃层下;'MAXDEPTH':尽可能深
     51        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
     52        """
     53        return self._game_server.api_set_depth_level(self, depth_level)
     54
     55    def get_weapon_infos(self):
     56        """
     57        3、获取单元挂架武器信息, 以列表形式返回
     58        :return: list, 武器列表，[(武器名，武器ID，数量)]
     59        """
     60        weapon_info = {}
     61        for k, v in self.Mounts.items():
     62            if "WeaponRecs" in v:
     63                for rid, w in v["WeaponRecs"].items():
     64                    weaponid = w["WeaponDBID"]
     65                    weapon_name = w["Name"]
     66                    count = w["CurrentLoad"]
     67                    if weaponid in weapon_info:
     68                        record_info = weapon_info[weaponid]
     69                        new_count = record_info[1] + count
     70                        weapon_info[weaponid] = [weapon_name, new_count]
     71                    else:
     72                        weapon_info[weaponid] = [weapon_name, count]
     73
     74        weapon_infos = []
     75        for k, v in weapon_info.items():
     76            weapon_infos.append([v[0], k, v[1]])
     77        return weapon_infos
     78
     79    def get_summary_info(self):
     80        """
     81        4、获取精简信息, 提炼信息进行决策
     82        :return: dict
     83        """
     84        info_dict = {
     85            "category": "Submarine",
     86            "guid": self.ID,
     87            "dbid": self.DBID,
     88            "name": self.Name,
     89            "mission": self.AssignedMission,
     90            "lat": self.Lat,
     91            "lon": self.Lon,
     92            "alt": self.CurrentAltitude,
     93            "course": self.get_way_points_info(),
     94            "head": self.CurrentHeading,
     95            "speed": self.CurrentSpeed,
     96            "fuel": self.FuelRecs,
     97            "damage": self.DamagePercent,
     98            "status": self.Status,
     99            "sensors": self.Sensors,
    100            "sensory": self.Sensory,
    101            "mounts": self.Mounts,
    102            "magazine": self.Magazines,
    103        }
    104        return info_dict

作战单元（飞机、防空导弹和雷达站等，不包含武器和传感器）的其他操作：
获取详细信息
攻击作战行动：自动攻击，手动分配武器攻击，纯方位攻击
反潜作战行动：投放声呐
航线规划
设置油门，期望速度和期望高度
航线规划
空中作战行动（对飞机下达起飞指令）
分配任务和退出已加入任务

单元类
1、获取挂架上的武器信息
2、获取挂架统计的武器信息
3、获取单元航路点列表
4、获取挂架上武器的挂架ID和武器数量
5、获取当前单元目标列表
6、实体传感器面板， 实体是否遵循电磁管控条令
7、实体传感器面板， 实体雷达开关机
8、实体传感器面板， 实体声呐开关机
9、实体传感器面板， 实体电子干扰开关机
10、实体传感器面板， 实体激光传感器开关机
11、自动攻击目标
12、查询手动攻击信息
13、手动攻击，指定武器挂架、武器ID和武器数量打击某目标
14、手动攻击，指定武器ID和武器数量打击某目标
15、纯方位攻击
16、取消武器攻击，需运行推演后调用
17、单元释放一个箔条弹
18、箔条连续爆破
19、实体放弃某个之前设定的目标
20、实体放弃所有目标，脱离接战
21、反潜作战行动
22、设置单元的期望速度
23、设置实体油门
24、设置飞机或者潜艇手动控制高度
25、设置飞机单元的期望高度
26、设置当前单元（飞机）的飞行高度跟随地形
27、实体航线规划
28、单元清除航路点
29、给单元航路点设置速度和高度
30、单元的航路点设置传感器
31、设定参考点相对于本单元固定方位距离或者相对本单元航向固定旋转，或取消关联
32、实体返航
33、实体选择新基地/新港口
34、加油/补给
35、保持阵位-所选单元
36、分配加入到任务中
37、将单元分配为某打击任务的护航任务
38、将单元取消分配任务
39、设置单元优先挂载武器
40、空中行动、船舶出动业务装卸物资
41、获取某单元的航路点对象, 航路点对象可调用条令接口设置航路点条令
42、手动攻击里设置、取消武器攻击弹道
43、武器航线设置

示例：
air1_id = "sflsf0-gjlsf-sf" # 飞机guid
air1 = self.get_unit(air1_id) # 获取飞机对象
if air1 is not None:
reply = air1.get_weapon_info() # 获取此飞机挂架上的武器信息
air1.switch_radar(True) # 单元打开雷达
air1.set_throttle(Throttle.Cruise) # 设置单元巡航油门

Submarine(guid, name, side_name) View Source

     9    def __init__(self, guid, name, side_name):
    10        """
    11        潜艇类
    12        1、设置潜艇的期望深度
    13        2、设置潜艇的期望深度层
    14        3、获取单元挂架武器信息, 以列表形式返回
    15        4、获取精简信息, 提炼信息进行决策
    16
    17        示例：
    18        submarine_id = "sflsf0-gjlsf-sf"  # 潜艇guid
    19        submarine = self.get_unit(submarine_id)  # 获取潜艇对象
    20        if submarine is not None:
    21            submarine.set_depth(200)  # 潜艇下潜200米
    22        """
    23        Unit.__init__(self, guid, name, side_name, ElementType.Submarine)
    24        self.DepthPreset = 0  # 潜艇深度预设，含义如下
    25        """
    26        0:  None,  无
    27        1:  Periscope, 潜望镜深度
    28        2:  Shallow,  浅层
    29        3:  OverLayer,  温跃层之上
    30        4:  UnderLayer, 温跃层之下
    31        5:  MaxDepth,   最大深度
    32        6:  Surface   水面
    33        """
    34        self.DockingOps = {}  # 停靠码头--结构：THDockingOps 定义请查看entitys/struct.proto文件

潜艇类
1、设置潜艇的期望深度
2、设置潜艇的期望深度层
3、获取单元挂架武器信息, 以列表形式返回
4、获取精简信息, 提炼信息进行决策

示例：
submarine_id = "sflsf0-gjlsf-sf" # 潜艇guid
submarine = self.get_unit(submarine_id) # 获取潜艇对象
if submarine is not None:
submarine.set_depth(200) # 潜艇下潜200米

DepthPreset

0: None, 无 1: Periscope, 潜望镜深度 2: Shallow, 浅层 3: OverLayer, 温跃层之上 4: UnderLayer, 温跃层之下 5: MaxDepth, 最大深度 6: Surface 水面

DockingOps
def set_depth(self, depth): View Source

    36    def set_depth(self, depth):
    37        """
    38        1、设置潜艇的期望深度
    39        :param depth: float, 期望深度值, 单位：米，例：200，则期望水下200米深
    40        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    41        """
    42        return self._game_server.api_set_depth(self, depth)

1、设置潜艇的期望深度 :param depth: float, 期望深度值, 单位：米，例：200，则期望水下200米深 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def set_depth_level(self, depth_level): View Source

    44    def set_depth_level(self, depth_level):
    45        """
    46        2、设置潜艇的期望深度层
    47        :param depth_level: str, "CURRENT":当前设置的当前的深度；"OFF":不勾选手动控制，
    48                            "DESIRED":当前设置的期望深度,即勾选手动控制高度
    49                            期望深度层：'SURFACE'：水面;'PERISCOPE':潜望深度;'SHALLOW':浅的;
    50                            'OVERLAYER':温跃层上;'UNDERLAYER':温跃层下;'MAXDEPTH':尽可能深
    51        :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似
    52        """
    53        return self._game_server.api_set_depth_level(self, depth_level)

2、设置潜艇的期望深度层 :param depth_level: str, "CURRENT":当前设置的当前的深度；"OFF":不勾选手动控制， "DESIRED":当前设置的期望深度,即勾选手动控制高度 期望深度层：'SURFACE'：水面;'PERISCOPE':潜望深度;'SHALLOW':浅的; 'OVERLAYER':温跃层上;'UNDERLAYER':温跃层下;'MAXDEPTH':尽可能深 :return: 指令执行结果, Reply对象, 和global_util.py中Reply类定义类似

def get_weapon_infos(self): View Source

    55    def get_weapon_infos(self):
    56        """
    57        3、获取单元挂架武器信息, 以列表形式返回
    58        :return: list, 武器列表，[(武器名，武器ID，数量)]
    59        """
    60        weapon_info = {}
    61        for k, v in self.Mounts.items():
    62            if "WeaponRecs" in v:
    63                for rid, w in v["WeaponRecs"].items():
    64                    weaponid = w["WeaponDBID"]
    65                    weapon_name = w["Name"]
    66                    count = w["CurrentLoad"]
    67                    if weaponid in weapon_info:
    68                        record_info = weapon_info[weaponid]
    69                        new_count = record_info[1] + count
    70                        weapon_info[weaponid] = [weapon_name, new_count]
    71                    else:
    72                        weapon_info[weaponid] = [weapon_name, count]
    73
    74        weapon_infos = []
    75        for k, v in weapon_info.items():
    76            weapon_infos.append([v[0], k, v[1]])
    77        return weapon_infos

3、获取单元挂架武器信息, 以列表形式返回 :return: list, 武器列表，[(武器名，武器ID，数量)]

def get_summary_info(self): View Source

     79    def get_summary_info(self):
     80        """
     81        4、获取精简信息, 提炼信息进行决策
     82        :return: dict
     83        """
     84        info_dict = {
     85            "category": "Submarine",
     86            "guid": self.ID,
     87            "dbid": self.DBID,
     88            "name": self.Name,
     89            "mission": self.AssignedMission,
     90            "lat": self.Lat,
     91            "lon": self.Lon,
     92            "alt": self.CurrentAltitude,
     93            "course": self.get_way_points_info(),
     94            "head": self.CurrentHeading,
     95            "speed": self.CurrentSpeed,
     96            "fuel": self.FuelRecs,
     97            "damage": self.DamagePercent,
     98            "status": self.Status,
     99            "sensors": self.Sensors,
    100            "sensory": self.Sensory,
    101            "mounts": self.Mounts,
    102            "magazine": self.Magazines,
    103        }
    104        return info_dict

4、获取精简信息, 提炼信息进行决策 :return: dict

##### Inherited Members

engine.LingYi.entitys.unit.Unit
  Lon
  Lat
  CurrentAltitude
  CurrentHeading
  Pitch
  Roll
  CurrentSpeed
  Acc
  CargoToMission
  DockingCondition
  Throttle
  Status
  FuelState
  WeaponState
  DesiredSpeed
  DesiredAltitude
  DamagePts
  DamagePercent
  AssignedMission
  GroupID
  IsAD
  AI
  Weaponry
  Kinematics
  Navigator
  Damage
  Sensory
  CommDevices
  Sensors
  Mounts
  Magazines
  Cargos
  AirFacilitys
  DockFacilitys
  Propulsions
  FuelRecs
  Loadouts
  RangeSymbols
  Source
  CommStuff
  Category
  Type
  DBID
  ProficiencyLevel
  XSections
  UnitType
  get_weapon_info
  get_mounts_weapon_info
  get_way_points_info
  weapon2mount
  get_targets
  EMCON_Obey_doctrine
  switch_radar
  switch_sonar
  switch_OECM
  switch_laser
  attack_auto
  attack_target_info
  attack_manual
  attack_weapon_allocate_to_target
  attack_BOL
  cancel_attack_contact
  chaff_burst
  chaff_continous_burst
  attack_drop_target
  attack_drop_target_all
  deploy_sonar
  set_desired_speed
  set_throttle
  set_alt_manual
  set_desired_height
  follow_terrain
  plotted_course
  clear_plotted_course
  set_weapoint
  set_waypoint_sensor
  set_waypoint_bearings
  return_to_base
  select_new_base
  refuel
  hold_positon
  assign_to_mission
  assign_to_mission_escort
  withdraw_from_mission
  weapon_reload_priority
  cargo_load_ops
  get_way_point
  set_attack_course
  set_weapon_course
engine.LingYi.entitys.gameunit.GameUnit
  secure_key2
  secure_key
  check_id_api
  get_key
  set_key
  clear_key
  delete_sub_object
engine.LingYi.entitys.operatorbase.DoctrineOperator
  Doctrine
  category
  category_str
  doctrine_switch_radar
  doctrine_switch_oecm
  doctrine_switch_sonar
  doctrine_SetEMCON_Inherit
  use_nuclear_weapons
  doctrine_weapon_control_status_air
  doctrine_weapon_control_status_surface
  doctrine_weapon_control_status_subsurface
  doctrine_weapon_control_status_land
  doctrine_ignore_plotted_course
  doctrine_engaging_ambiguous_targets
  doctrine_engage_opportunity_targets
  doctrine_ignore_emcon_under_attack
  torpedoes_kinematic_range
  doctrine_automatic_evasion
  doctrine_refuel
  doctrine_refuel_select
  doctrine_refuel_allied
  doctrine_air_operations_tempo
  doctrine_quick_turnaround
  doctrine_fuel_state_planned
  doctrine_fuel_state_rtb
  doctrine_weapon_state_planned
  doctrine_weapon_state_rtb
  doctrine_gun_strafing
  doctrine_jettison_ordnance
  doctrine_bvr_logic
  use_sams_in_anti_surface_mode
  doctrine_maintain_standoff
  doctrine_navigation_surface_mode
  avoid_contact
  dive_on_threat
  recharge_on_patrol
  recharge_on_attack
  use_aip
  dipping_sonar
  navigation_sub
  navigation_land
  set_weapon_release_authority
  wra_qty_salvo
  wra_shooter_salvo
  wra_firing_range
  wra_self_defence_distance
  withdraw_on_damage
  withdraw_on_fuel
  withdraw_on_attack
  withdraw_on_defence
  deploy_on_damage
  deploy_on_fuel
  deploy_on_attack
  deploy_on_defence
  get_doctrineWRA
engine.LingYi.entitys.element.Element
  ID
  Name
  Side
  ElementType