public void AddModulesToShip(IShip ship, int numMods, CargoSynchronizer cargoSynchronizer, LocalIDManager galaxyIDManager) { for (int i = 0; i < numMods; i++) { Module m = null; int moduleID = galaxyIDManager.PopFreeID(); byte level = (byte)Rand.Random.Next(1, 4); int modnum = Rand.Random.Next(1, 11); { switch (modnum) { case 1: m = new EnergyRegenModule(moduleID, level); break; case 2: m = new ThrustModule(moduleID, level); break; case 3: m = new MaxShieldModule(moduleID, level); break; case 4: m = new ShieldRegenModule(moduleID, level); break; case 5: m = new MaxEnergyModule(moduleID, level); break; case 6: m = new DamageModule(moduleID, level); break; case 7: m = new DefenseModule(moduleID, level); break; case 8: m = new TurnRateModule(moduleID, level); break; case 9: m = new LateralThrustModule(moduleID, level); break; case 10: m = new TopSpeedModule(moduleID, level); break; } } TransactionAddStatefulCargo str = new TransactionAddStatefulCargo(ship, m, true); str.OnCompletion += ship.CargoAdded; cargoSynchronizer.RequestTransaction(str); } }
public static Module InstantiateModule(CargoModuleData data) { Module retModule = null; int id = data.Id; byte level = data.Level; switch (data.ModuleType) { case ModuleTypes.EnergyRegenModule: { retModule = new EnergyRegenModule(id, level); break; } case ModuleTypes.MaxEnergyModule: { retModule = new MaxEnergyModule(id, level); break; } case ModuleTypes.MaxShieldModule: { retModule = new MaxShieldModule(id, level); break; } case ModuleTypes.ShieldRegenModule: { retModule = new ShieldRegenModule(id, level); break; } case ModuleTypes.ThrustModule: { retModule = new ThrustModule(id, level); break; } case ModuleTypes.DamageModule: { retModule = new DamageModule(id, level); break; } case ModuleTypes.DefenseModule: { retModule = new DefenseModule(id, level); break; } case ModuleTypes.TurnRateModule: { retModule = new TurnRateModule(id, level); break; } case ModuleTypes.LateralThrustModule: { retModule = new LateralThrustModule(id, level); break; } case ModuleTypes.TopSpeedModule: { retModule = new TopSpeedModule(id, level); break; } default: throw new NotImplementedException("Module type not implemented in MessageReader.ReadModule"); } return(retModule); }