EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ModuleFactory.h File Reference
Include dependency graph for ModuleFactory.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

static GenericModuleModuleFactory (ModuleItemRef mRef, ShipItemRef sRef)
 

Function Documentation

static GenericModule* ModuleFactory ( ModuleItemRef  mRef,
ShipItemRef  sRef 
)
static
Note
let these make an error to show they are used case EVEDB::invGroups::Computer_Interface_Node: case EVEDB::invGroups::Cruise_Control: case EVEDB::invGroups::Smartbomb_Supercharger: case EVEDB::invGroups::Anti_Ballistic_Defense_System: case EVEDB::invGroups::New_EW_Testing: case EVEDB::invGroups::Missile_Launcher: case EVEDB::invGroups::Countermeasure_Launcher: case EVEDB::invGroups::Anti_Cloaking_Pulse: case EVEDB::invGroups::Signature_Scrambling: case EVEDB::invGroups::Energy_Vampire_Slayer: case EVEDB::invGroups::Autopilot: case EVEDB::invGroups::DroneBayExpander: case EVEDB::invGroups::Drone_Modules: case EVEDB::invGroups::Navigation_Computer: case EVEDB::invGroups::Super_Gang_Enhancer: case EVEDB::invGroups::Drone_Damage_Modules: case EVEDB::invGroups::ECM_Enhancer: case EVEDB::invGroups::Cloak_Enhancements: case EVEDB::invGroups::Mining_Enhancer: case EVEDB::invGroups::Covert_Cynosural_Field_Generator: { return nullptr; }

Definition at line 41 of file ModuleFactory.h.

References _log, EVEDB::invGroups::Afterburner, EVEDB::invGroups::Armor_Coating, EVEDB::invGroups::Armor_Hardener, EVEDB::invGroups::Armor_Plating_Energized, EVEDB::invGroups::Armor_Reinforcer, EVEDB::invGroups::Armor_Repair_Projector, EVEDB::invGroups::Armor_Repair_Unit, EVEDB::invGroups::Automated_Targeting_System, EVEDB::invGroups::Auxiliary_Power_Core, EVEDB::invGroups::Ballistic_Control_system, EVEDB::invGroups::Capacitor_Battery, EVEDB::invGroups::Capacitor_Booster, EVEDB::invGroups::Capacitor_Flux_Coil, EVEDB::invGroups::Capacitor_Power_Relay, EVEDB::invGroups::Capacitor_Recharger, EVEDB::invGroups::Cargo_Scanner, EVEDB::invGroups::Cheat_Module_Group, EVEDB::invGroups::Cloaking_Device, EVEDB::invGroups::Clone_Vat_Bay, EVEDB::invGroups::CPU_Enhancer, EVEDB::invGroups::Cynosural_Field_Generator, EVEDB::invGroups::Damage_Control, EVEDB::invGroups::Data_Miner, EVEDB::invGroups::Defensive_Systems, EVEDB::invGroups::Drone_Control_Range_Module, EVEDB::invGroups::Drone_Control_Unit, EVEDB::invGroups::Drone_Navigation_Computer, EVEDB::invGroups::Drone_Tracking_Modules, EVEDB::invGroups::ECCM, EVEDB::invGroups::ECM, EVEDB::invGroups::ECM_Burst, EVEDB::invGroups::ECM_Stabilizer, EVEDB::invGroups::Electronic_Systems, EVEDB::invGroups::Energy_Destabilizer, EVEDB::invGroups::Energy_Transfer_Array, EVEDB::invGroups::Energy_Vampire, EVEDB::invGroups::Energy_Weapon, EVEDB::invGroups::Engineering_Systems, EVEDB::invGroups::Expanded_Cargohold, EVEDB::invGroups::Frequency_Mining_Laser, EVEDB::invGroups::Gang_Coordinator, EVEDB::invGroups::Gas_Cloud_Harvester, EVEDB::invGroups::Gyrostabilizer, EVEDB::invGroups::Heat_Sink, EVEDB::invGroups::Hull_Repair_Unit, EVEDB::invGroups::Hybrid_Weapon, EVEDB::invGroups::Inertial_Stabilizer, EVEDB::invGroups::Interdiction_Sphere_Launcher, EVEDB::invGroups::Jump_Portal_Generator, EVEDB::invGroups::Magnetic_Field_Stabilizer, EVEDB::invGroups::Microwarpdrive, EVEDB::invGroups::Mining_Laser, EVEDB::invGroups::Mining_Upgrade, EVEDB::invGroups::Missile_Launcher_Assault, EVEDB::invGroups::Missile_Launcher_Bomb, EVEDB::invGroups::Missile_Launcher_Citadel, EVEDB::invGroups::Missile_Launcher_Cruise, EVEDB::invGroups::Missile_Launcher_Defender, EVEDB::invGroups::Missile_Launcher_Heavy, EVEDB::invGroups::Missile_Launcher_Heavy_Assault, EVEDB::invGroups::Missile_Launcher_Rocket, EVEDB::invGroups::Missile_Launcher_Siege, EVEDB::invGroups::Missile_Launcher_Snowball, EVEDB::invGroups::Missile_Launcher_Standard, EVEDB::invCategories::Module, EVEDB::invGroups::Nanofiber_Internal_Structure, EVEDB::invGroups::Offensive_Systems, EVEDB::invGroups::Overdrive_Injector_System, EVEDB::invGroups::Passive_Targeting_System, EVEDB::invGroups::Power_Diagnostic_System, EVEDB::invGroups::Projected_ECCM, EVEDB::invGroups::Projectile_Weapon, EVEDB::invGroups::Propulsion_Systems, EVEDB::invGroups::Reactor_Control_Unit, EVEDB::invGroups::Reinforced_Bulkheads, EVEDB::invGroups::Remote_ECM_Burst, EVEDB::invGroups::Remote_Hull_Repairer, EVEDB::invGroups::Remote_Sensor_Booster, EVEDB::invGroups::Remote_Sensor_Damper, EVEDB::invGroups::Rig_Armor, EVEDB::invGroups::Rig_Astronautic, EVEDB::invGroups::Rig_Drones, EVEDB::invGroups::Rig_Electronics, EVEDB::invGroups::Rig_Electronics_Superiority, EVEDB::invGroups::Rig_Energy_Grid, EVEDB::invGroups::Rig_Energy_Weapon, EVEDB::invGroups::Rig_Hybrid_Weapon, EVEDB::invGroups::Rig_Launcher, EVEDB::invGroups::Rig_Mining, EVEDB::invGroups::Rig_Projectile_Weapon, EVEDB::invGroups::Rig_Security_Transponder, EVEDB::invGroups::Rig_Shield, EVEDB::invGroups::Salvager, EVEDB::invGroups::Scan_Probe_Launcher, EVEDB::invGroups::Sensor_Backup_Array, EVEDB::invGroups::Sensor_Booster, EVEDB::invGroups::Shield_Amplifier, EVEDB::invGroups::Shield_Boost_Amplifier, EVEDB::invGroups::Shield_Booster, EVEDB::invGroups::Shield_Disruptor, EVEDB::invGroups::Shield_Extender, EVEDB::invGroups::Shield_Flux_Coil, EVEDB::invGroups::Shield_Hardener, EVEDB::invGroups::Shield_Power_Relay, EVEDB::invGroups::Shield_Recharger, EVEDB::invGroups::Shield_Transporter, EVEDB::invGroups::Ship_Scanner, EVEDB::invGroups::Siege_Module, EVEDB::invGroups::Signal_Amplifier, sLog, EVEDB::invGroups::Smart_Bomb, EVEDB::invGroups::Stasis_Web, EVEDB::invGroups::Strip_Miner, EVEDB::invCategories::Subsystem, EVEDB::invGroups::Super_Weapon, EVEDB::invGroups::Survey_Scanner, EVEDB::invGroups::System_Scanner, EVEDB::invGroups::Target_Painter, EVEDB::invGroups::Tracking_Computer, EVEDB::invGroups::Tracking_Disruptor, EVEDB::invGroups::Tracking_Enhancer, EVEDB::invGroups::Tracking_Link, EVEDB::invGroups::Tractor_Beam, EVEDB::invGroups::Warp_Core_Stabilizer, EVEDB::invGroups::Warp_Disrupt_Field_Generator, and EVEDB::invGroups::Warp_Scrambler.

Referenced by ModuleManager::AddModule().

42 {
43  if ((mRef->categoryID() != EVEDB::invCategories::Module) and (mRef->categoryID() != EVEDB::invCategories::Subsystem)) {
44  sLog.Error("ModuleFactory","Cannot create module from non module type item");
45  assert(false);
46  } else {
47  switch(mRef->groupID()) {
48  // Weapon Modules:
49  case EVEDB::invGroups::Energy_Weapon: return (new TurretModule(mRef, sRef)); // Active - external
50  case EVEDB::invGroups::Projectile_Weapon: return (new TurretModule(mRef, sRef)); // Active - external
51  case EVEDB::invGroups::Gyrostabilizer: return (new PassiveModule(mRef, sRef));
52  case EVEDB::invGroups::Energy_Vampire: return (new ActiveModule(mRef, sRef)); // Active - external
53  case EVEDB::invGroups::Energy_Destabilizer: return (new ActiveModule(mRef, sRef)); // Active - external
54  case EVEDB::invGroups::Smart_Bomb: return (new ActiveModule(mRef, sRef)); // Active - external
55  case EVEDB::invGroups::Hybrid_Weapon: return (new TurretModule(mRef, sRef)); // Active - external
56  case EVEDB::invGroups::Heat_Sink: return (new PassiveModule(mRef, sRef));
57  case EVEDB::invGroups::Magnetic_Field_Stabilizer: return (new PassiveModule(mRef, sRef));
58  case EVEDB::invGroups::Ballistic_Control_system: return (new PassiveModule(mRef, sRef));
59  case EVEDB::invGroups::Super_Weapon: return (new ActiveModule(mRef, sRef)); // Active - external
60  case EVEDB::invGroups::Interdiction_Sphere_Launcher: return (new ActiveModule(mRef, sRef)); // Active - external
61  case EVEDB::invGroups::Warp_Disrupt_Field_Generator: return (new ActiveModule(mRef, sRef)); // Active - external
62  case EVEDB::invGroups::Missile_Launcher_Snowball: return (new ActiveModule(mRef, sRef)); // Active - external
63  case EVEDB::invGroups::Missile_Launcher_Cruise: return (new ActiveModule(mRef, sRef)); // Active - external
64  case EVEDB::invGroups::Missile_Launcher_Rocket: return (new ActiveModule(mRef, sRef)); // Active - external
65  case EVEDB::invGroups::Missile_Launcher_Siege: return (new ActiveModule(mRef, sRef)); // Active - external
66  case EVEDB::invGroups::Missile_Launcher_Standard: return (new ActiveModule(mRef, sRef)); // Active - external
67  case EVEDB::invGroups::Missile_Launcher_Heavy: return (new ActiveModule(mRef, sRef)); // Active - external
68  case EVEDB::invGroups::Missile_Launcher_Assault: return (new ActiveModule(mRef, sRef)); // Active - external
69  case EVEDB::invGroups::Missile_Launcher_Defender: return (new ActiveModule(mRef, sRef)); // Active - external
70  case EVEDB::invGroups::Missile_Launcher_Citadel: return (new ActiveModule(mRef, sRef)); // Active - external
71  case EVEDB::invGroups::Missile_Launcher_Heavy_Assault: return (new ActiveModule(mRef, sRef)); // Active - external
72  case EVEDB::invGroups::Missile_Launcher_Bomb: return (new ActiveModule(mRef, sRef)); // Active - external
73 
74  // Armor Modules:
75  case EVEDB::invGroups::Damage_Control: return (new ActiveModule(mRef, sRef)); // Active - SELF
76  case EVEDB::invGroups::Armor_Repair_Unit: return (new ActiveModule(mRef, sRef)); // Active - SELF
77  case EVEDB::invGroups::Hull_Repair_Unit: return (new ActiveModule(mRef, sRef)); // Active - SELF
78  case EVEDB::invGroups::Reinforced_Bulkheads: return (new PassiveModule(mRef, sRef));
79  case EVEDB::invGroups::Armor_Coating: return (new PassiveModule(mRef, sRef));
80  case EVEDB::invGroups::Armor_Repair_Projector: return (new ActiveModule(mRef, sRef)); // Active - external
81  case EVEDB::invGroups::Armor_Plating_Energized: return (new PassiveModule(mRef, sRef));
82  case EVEDB::invGroups::Armor_Hardener: return (new ActiveModule(mRef, sRef)); // Active - SELF
83  case EVEDB::invGroups::Armor_Reinforcer: return (new PassiveModule(mRef, sRef));
84  case EVEDB::invGroups::Remote_Hull_Repairer: return (new ActiveModule(mRef, sRef)); // Active - external
85  case EVEDB::invGroups::Expanded_Cargohold: return (new PassiveModule(mRef, sRef));
86 
87  // Shield Modules:
88  case EVEDB::invGroups::Shield_Extender: return (new PassiveModule(mRef, sRef));
89  case EVEDB::invGroups::Shield_Recharger: return (new PassiveModule(mRef, sRef));
90  case EVEDB::invGroups::Shield_Booster: return (new ActiveModule(mRef, sRef)); // Active - SELF
91  case EVEDB::invGroups::Shield_Transporter: return (new ActiveModule(mRef, sRef)); // Active - external
92  case EVEDB::invGroups::Shield_Power_Relay: return (new PassiveModule(mRef, sRef));
93  case EVEDB::invGroups::Shield_Hardener: return (new ActiveModule(mRef, sRef)); // Active - SELF
94  case EVEDB::invGroups::Shield_Amplifier: return (new PassiveModule(mRef, sRef));
95  case EVEDB::invGroups::Shield_Boost_Amplifier: return (new PassiveModule(mRef, sRef));
96  case EVEDB::invGroups::Shield_Disruptor: return (new ActiveModule(mRef, sRef)); // Active - external
97 
98  // Scanner Modules
99  case EVEDB::invGroups::Cargo_Scanner: return (new ActiveModule(mRef, sRef)); // Active - external
100  case EVEDB::invGroups::Ship_Scanner: return (new ActiveModule(mRef, sRef)); // Active - external
101  case EVEDB::invGroups::Survey_Scanner: return (new ActiveModule(mRef, sRef)); // Active - external
102  case EVEDB::invGroups::System_Scanner: return (new ActiveModule(mRef, sRef)); // Active - external
103 
104  // Electronics Modules:
105  case EVEDB::invGroups::Cloaking_Device: return (new ActiveModule(mRef, sRef)); // Active - SELF
106  case EVEDB::invGroups::Target_Painter: return (new ActiveModule(mRef, sRef)); // Active - external
107  case EVEDB::invGroups::Drone_Control_Unit: return (new PassiveModule(mRef, sRef));
108  case EVEDB::invGroups::Scan_Probe_Launcher: return (new ActiveModule(mRef, sRef)); // Active - external
109  case EVEDB::invGroups::Drone_Navigation_Computer: return (new PassiveModule(mRef, sRef));
110  case EVEDB::invGroups::Drone_Tracking_Modules: return (new PassiveModule(mRef, sRef));
111  case EVEDB::invGroups::Drone_Control_Range_Module: return (new PassiveModule(mRef, sRef));
112  case EVEDB::invGroups::Tractor_Beam: return (new ActiveModule(mRef, sRef)); // Active - external
113 
114  // Prospecting Modules
115  case EVEDB::invGroups::Salvager: return (new Prospector(mRef, sRef)); // Active - external
116  case EVEDB::invGroups::Data_Miner: return (new Prospector(mRef, sRef)); // Active - external
117 
118  // Engineering Modules:
119  case EVEDB::invGroups::Capacitor_Recharger: return (new PassiveModule(mRef, sRef));
120  case EVEDB::invGroups::Capacitor_Battery: return (new PassiveModule(mRef, sRef));
121  case EVEDB::invGroups::Energy_Transfer_Array: return (new ActiveModule(mRef, sRef)); // Active - external
122  case EVEDB::invGroups::Capacitor_Booster: return (new ActiveModule(mRef, sRef)); // Active - SELF
123  case EVEDB::invGroups::Auxiliary_Power_Core: return (new PassiveModule(mRef, sRef));
124  case EVEDB::invGroups::Power_Diagnostic_System: return (new PassiveModule(mRef, sRef));
125  case EVEDB::invGroups::Capacitor_Power_Relay: return (new PassiveModule(mRef, sRef));
126  case EVEDB::invGroups::Capacitor_Flux_Coil: return (new PassiveModule(mRef, sRef));
127  case EVEDB::invGroups::Reactor_Control_Unit: return (new PassiveModule(mRef, sRef));
128  case EVEDB::invGroups::Shield_Flux_Coil: return (new PassiveModule(mRef, sRef));
129 
130  // EWAR Modules:
131  case EVEDB::invGroups::Warp_Scrambler: return (new ActiveModule(mRef, sRef)); // Active - external
132  case EVEDB::invGroups::Stasis_Web: return (new ActiveModule(mRef, sRef)); // Active - external
133  case EVEDB::invGroups::ECM_Burst: return (new ActiveModule(mRef, sRef)); // Active - external
134  case EVEDB::invGroups::Passive_Targeting_System: return (new ActiveModule(mRef, sRef)); // Active - external
135  case EVEDB::invGroups::Automated_Targeting_System: return (new ActiveModule(mRef, sRef)); // Active - external
136  case EVEDB::invGroups::ECM: return (new ActiveModule(mRef, sRef)); // Active - external
137  case EVEDB::invGroups::ECCM: return (new ActiveModule(mRef, sRef)); // Active - SELF
138  case EVEDB::invGroups::Sensor_Backup_Array: return (new PassiveModule(mRef, sRef));
139  case EVEDB::invGroups::Remote_Sensor_Damper: return (new ActiveModule(mRef, sRef)); // Active - external
140  case EVEDB::invGroups::Tracking_Link: return (new ActiveModule(mRef, sRef)); // Active - SELF
141  case EVEDB::invGroups::Signal_Amplifier: return (new PassiveModule(mRef, sRef));
142  case EVEDB::invGroups::Tracking_Enhancer: return (new PassiveModule(mRef, sRef));
143  case EVEDB::invGroups::Sensor_Booster: return (new ActiveModule(mRef, sRef)); // Active - SELF
144  case EVEDB::invGroups::Tracking_Computer: return (new ActiveModule(mRef, sRef)); // Active - SELF
145  case EVEDB::invGroups::CPU_Enhancer: return (new PassiveModule(mRef, sRef));
146  case EVEDB::invGroups::Projected_ECCM: return (new ActiveModule(mRef, sRef)); // Active - external
147  case EVEDB::invGroups::Remote_Sensor_Booster: return (new ActiveModule(mRef, sRef)); // Active - external
148  case EVEDB::invGroups::Tracking_Disruptor: return (new ActiveModule(mRef, sRef)); // Active - external
149  case EVEDB::invGroups::ECM_Stabilizer: return (new PassiveModule(mRef, sRef));
150  case EVEDB::invGroups::Remote_ECM_Burst: return (new ActiveModule(mRef, sRef)); // Active - external
151 
152  // Gang Assist Modules:
153  case EVEDB::invGroups::Gang_Coordinator: return (new ActiveModule(mRef, sRef)); // Active - external
154  case EVEDB::invGroups::Siege_Module: return (new ActiveModule(mRef, sRef)); // Active - external
155  case EVEDB::invGroups::Jump_Portal_Generator: return (new ActiveModule(mRef, sRef)); // Active - external
156  case EVEDB::invGroups::Cynosural_Field_Generator: return (new CynoModule(mRef, sRef));
157  case EVEDB::invGroups::Clone_Vat_Bay: return (new PassiveModule(mRef, sRef));
158 
159  // Mining Modules:
160  case EVEDB::invGroups::Mining_Laser: return (new MiningLaser(mRef, sRef)); // Active - external
161  case EVEDB::invGroups::Strip_Miner: return (new MiningLaser(mRef, sRef)); // Active - external
162  case EVEDB::invGroups::Frequency_Mining_Laser: return (new MiningLaser(mRef, sRef)); // Active - external
163  case EVEDB::invGroups::Mining_Upgrade: return (new PassiveModule(mRef, sRef));
164  case EVEDB::invGroups::Gas_Cloud_Harvester: return (new MiningLaser(mRef, sRef)); // Active - external
165 
166  // Propulsion Modules:
167  case EVEDB::invGroups::Afterburner: return (new ActiveModule(mRef, sRef)); // Active
168  case EVEDB::invGroups::Microwarpdrive: return (new ActiveModule(mRef, sRef)); // Active
169  case EVEDB::invGroups::Warp_Core_Stabilizer: return (new PassiveModule(mRef, sRef));
170  case EVEDB::invGroups::Inertial_Stabilizer: return (new PassiveModule(mRef, sRef));
171  case EVEDB::invGroups::Nanofiber_Internal_Structure: return (new PassiveModule(mRef, sRef));
172  case EVEDB::invGroups::Overdrive_Injector_System: return (new PassiveModule(mRef, sRef));
173 
174  // Rigs
175  case EVEDB::invGroups::Rig_Armor: return (new RigModule(mRef, sRef));
176  case EVEDB::invGroups::Rig_Shield: return (new RigModule(mRef, sRef));
177  case EVEDB::invGroups::Rig_Energy_Weapon: return (new RigModule(mRef, sRef));
178  case EVEDB::invGroups::Rig_Hybrid_Weapon: return (new RigModule(mRef, sRef));
179  case EVEDB::invGroups::Rig_Projectile_Weapon: return (new RigModule(mRef, sRef));
180  case EVEDB::invGroups::Rig_Drones: return (new RigModule(mRef, sRef));
181  case EVEDB::invGroups::Rig_Launcher: return (new RigModule(mRef, sRef));
182  case EVEDB::invGroups::Rig_Electronics: return (new RigModule(mRef, sRef));
183  case EVEDB::invGroups::Rig_Energy_Grid: return (new RigModule(mRef, sRef));
184  case EVEDB::invGroups::Rig_Astronautic: return (new RigModule(mRef, sRef));
185  case EVEDB::invGroups::Rig_Electronics_Superiority: return (new RigModule(mRef, sRef));
186  case EVEDB::invGroups::Rig_Mining: return (new RigModule(mRef, sRef));
187  case EVEDB::invGroups::Rig_Security_Transponder: return (new RigModule(mRef, sRef));
188 
189  // SubSystems
190  case EVEDB::invGroups::Defensive_Systems: return (new SubSystemModule(mRef, sRef));
191  case EVEDB::invGroups::Electronic_Systems: return (new SubSystemModule(mRef, sRef));
192  case EVEDB::invGroups::Offensive_Systems: return (new SubSystemModule(mRef, sRef));
193  case EVEDB::invGroups::Propulsion_Systems: return (new SubSystemModule(mRef, sRef));
194  case EVEDB::invGroups::Engineering_Systems: return (new SubSystemModule(mRef, sRef));
195 
196  // may need specific code for these gm modules
197  //case EVEDB::invGroups::GM_Modules:
198  case EVEDB::invGroups::Cheat_Module_Group: return (new ActiveModule(mRef, sRef));
199 
200  // Uncategorized and Unknown Modules Groups (some of these groups contain NO REAL typeIDs in the 'invTypes' table:
225  }
226  }
227 
228  _log(MODULE__ERROR, "ModuleFactory - Module Group not found for %s - groupID: %u, typeID: %u", mRef->name(), mRef->groupID(), mRef->typeID());
229  return nullptr;
230 }
#define _log(type, fmt,...)
Definition: logsys.h:124
#define sLog
Evaluates to a NewLog instance.
Definition: LogNew.h:250

Here is the caller graph for this function: