NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

dogma_external_event_manager.py (3793B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dogma\dogma_external_event_manager.py
      2 import logging
      3 import monolithconfig
      4 import monolithmetrics
      5 from dogma import const
      6 from eve.server.script.mgt.fighters import GetControlledFighterRegistryForSolarsystem
      7 from externalQueue.events.protobuf import drone as drone_events
      8 from externalQueue.events.protobuf.ship import combat as combat_events
      9 from externalQueue.events.protobuf.ship import module as module_events
     10 stdlog = logging.getLogger(__name__)
     11 
     12 class DogmaLocationExternalEventManager(object):
     13 
     14     def __init__(self, externalQueueMgr, solarsystem_id):
     15         self._external_queue_mgr = externalQueueMgr
     16         self._solarsystem_id = solarsystem_id
     17         self._realtime_damage_events = False
     18         self._fighter_registry = None
     19         monolithconfig.add_watch_group_callback(self.refresh_config, 'Experimental')
     20         self.drone_settings_event_callbacks = {const.attributeDroneIsAggressive: self.send_set_drone_aggressive_event,
     21          const.attributeDroneFocusFire: self.send_drone_focus_fire}
     22 
     23     def refresh_config(self):
     24         self._realtime_damage_events = monolithconfig.enabled('realtime_damage_events', 'Experimental')
     25 
     26     def _get_fighter_controller_ship_item_id(self, fighter_id):
     27         if self._fighter_registry is None:
     28             self._fighter_registry = GetControlledFighterRegistryForSolarsystem(self._solarsystem_id)
     29         return self._fighter_registry.GetControllerForFighter(fighter_id)
     30 
     31     def send_energy_warfare_event(self, ballpark, item_type_id, ship_id, owner_id, target_id, amount):
     32         pass
     33 
     34     def send_remote_repair_event(self, ballpark, item_type_id, ship_id, owner_id, target_id, amount):
     35         pass
     36 
     37     def send_effect_applied_event(self, ballpark, env, effect):
     38         pass
     39 
     40     def send_drone_settings_event(self, char_id, setting_id):
     41         self.drone_settings_event_callbacks.get(setting_id, self.handle_unknown_drone_setting)(char_id, setting_id)
     42 
     43     def send_set_drone_aggressive_event(self, char_id, setting_id):
     44         self._external_queue_mgr.PublishEvent(drone_events.DroneSettingsAppliedEvent, char_id)
     45 
     46     def send_drone_focus_fire(self, char_id, setting_id):
     47         self._external_queue_mgr.PublishEvent(drone_events.DroneSettingsAppliedEvent, char_id)
     48 
     49     def handle_unknown_drone_setting(self, char_id, setting_id):
     50         stdlog.error('Attempted to publish event for invalid drone setting: %s' % setting_id, exc_info=1)
     51 
     52     def send_remove_targets_event(self, char_id):
     53         self._external_queue_mgr.PublishEvent(combat_events.TargetsRemovedEvent, char_id)
     54 
     55     def send_activate_event(self, char_id):
     56         self._external_queue_mgr.PublishEvent(module_events.ActivatedEvent, char_id)
     57 
     58     def send_deactivate_event(self, char_id):
     59         self._external_queue_mgr.PublishEvent(module_events.DeactivatedEvent, char_id)
     60 
     61     def send_start_module_repair_event(self, char_id):
     62         self._external_queue_mgr.PublishEvent(module_events.RepairStartedEvent, char_id)
     63 
     64     def send_load_ammo_event(self, char_id):
     65         self._external_queue_mgr.PublishEvent(module_events.AmmoLoadedEvent, char_id)
     66 
     67 
     68 class BaseDogmaExternalEventManager(object):
     69 
     70     def __init__(self, externalQueueMgr):
     71         self._external_queue_mgr = externalQueueMgr
     72         self._realtime_damage_events = False
     73         monolithconfig.add_watch_group_callback(self.refresh_config, 'Experimental')
     74 
     75     def refresh_config(self):
     76         self._realtime_damage_events = monolithconfig.enabled('realtime_damage_events', 'Experimental')
     77 
     78     def send_damage_event(self, location_id, target_id, source_item, damage_source_item, weapon_item, turret_count, damage_sum):
     79         monolithmetrics.increment(metric='dogma.send_damage_event', value=1)