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)