示例#1
0
    DefenseModule CreateDefenseModule(AICharacterData data)
    {
        var defenseModule = new DefenseModule();

        defenseModule.damageReduction = data.damageReduction;

        return(defenseModule);
    }
示例#2
0
    DefenseModule CreateDefenseModule(BasePlayerCharacterStats baseStats)
    {
        var defenseModule = new DefenseModule();

        defenseModule.damageReduction = baseStats.baseDamageReduction;

        return(defenseModule);
    }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
        }
示例#5
0
        /* isp InstallDefensiveModule()
         *
         * Input variables:
         *  defenseModule:
         *      defenseModule.Size =
         *      defenseModule.name =
         *  slot =
         *
         * State variables:
         *  DefenseModules [slot -1] = null, defenseModule
         *
         */

        public void InstallDefensiveModule(DefenseModule defenseModule, uint slot)
        {
            if (slot >= DefenseModules.Length)
            {
                throw new ArgumentOutOfRangeException(nameof(slot), "Invalid slot.");
            }


            if (this is Shuttle || this is Corvette || this is Frigate)
            {
                if (defenseModule.Size == DefenseModuleGrades.Small)
                {
                    DefenseModules[slot - 1] = defenseModule;
                }
                else
                {
                    throw new InvalidOperationException($"Can not install a small '{defenseModule.Name}' defensive module in '{Name}' ship");
                }
            }
            else if (this is Destroyer || this is Cruiser || this is BattleCruiser)
            {
                if (defenseModule.Size == DefenseModuleGrades.Medium)
                {
                    DefenseModules[slot - 1] = defenseModule;
                }
                else
                {
                    throw new InvalidOperationException($"Can not install a medium '{defenseModule.Name}' defensive module in '{Name}' ship");
                }
            }
            else if (this is Battleship || this is Dreadnaut || this is Juggernaut)
            {
                if (defenseModule.Size == DefenseModuleGrades.Large)
                {
                    DefenseModules[slot - 1] = defenseModule;
                }
                else
                {
                    throw new InvalidOperationException($"Can not install a large '{defenseModule.Name}' defensive module in '{Name}' ship");
                }
            }
            else if (this is Carrier || this is SuperCarrier)
            {
                if (defenseModule.Size == DefenseModuleGrades.XLarge)
                {
                    DefenseModules[slot - 1] = defenseModule;
                }
                else
                {
                    throw new InvalidOperationException($"Can not install a xlarge '{defenseModule.Name}' defensive module in '{Name}' ship");
                }
            }
            else if (this is Titan || this is SuperTitan)
            {
                if (defenseModule.Size == DefenseModuleGrades.XXLagre)
                {
                    DefenseModules[slot - 1] = defenseModule;
                }
                else
                {
                    throw new InvalidOperationException($"Can not install a xxlarge '{defenseModule.Name}' defensive module in '{Name}' ship");
                }
            }
            else if (this is DeathStar)
            {
                if (defenseModule.Size == DefenseModuleGrades.Doomsday)
                {
                    DefenseModules[slot - 1] = defenseModule;
                }
                else
                {
                    throw new InvalidOperationException($"Can not install a doomsday '{defenseModule.Name}' defensive module in '{Name}' ship");
                }
            }
            else
            {
                throw new InvalidOperationException("Invlid ship");
            }
        }