/// <summary> /// Adds harvesting device /// </summary> /// <param name="weapon">Harvesting device</param> /// <param name="weaponObjectBuilder">Harvesting device's object builder</param> private void AddHarvestingDevice(MyHarvestingDevice harvestingDevice, MyMwcObjectBuilder_SmallShip_Weapon harsvestingDeviceObjectBuilder) { if (HarvestingDeviceSlot.IsMounted()) { RemoveWeaponFromSlotAndFromShip(HarvestingDeviceSlot); } AddWeaponToSlot(HarvestingDeviceSlot, harvestingDevice, harsvestingDeviceObjectBuilder); }
/// <summary> /// Adds harvesting device to harvesting device's slot /// </summary> /// <param name="harvestingDeviceObjectBuilder">Harvesting device's object builder</param> public void AddHarvestingDevice(MyMwcObjectBuilder_SmallShip_Weapon harvestingDeviceObjectBuilder) { MyHarvestingDevice newHarvestingDevice = MySmallShipWeaponFactory.GenerateWeapon(harvestingDeviceObjectBuilder.WeaponType) as MyHarvestingDevice; if (newHarvestingDevice == null) { throw new ArgumentException("Object builder is not harvesting device object builder"); } AddHarvestingDevice(newHarvestingDevice, harvestingDeviceObjectBuilder); }
/// <summary> /// Shots from harvester /// </summary> public void FireHarvester() { var drill = GetMountedDrill(); if (drill != null && drill.CurrentState != MyDrillStateEnum.InsideShip) { return; } MyHarvestingDevice harvester = GetMountedHarvestingDevice(); if (harvester != null) { if (MyMultiplayerGameplay.IsRunning && !harvester.IsDummy) { MyMultiplayerGameplay.Static.SpeacialWeaponEvent(MySpecialWeaponEventEnum.HARVESTER_FIRE, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device); } this.m_ship.InitGroupMaskIfNeeded(); harvester.Shot(null); } }
/// <summary> /// Returns new instance of weapon /// </summary> /// <param name="weaponType">Weapon type</param> /// <returns></returns> public static MySmallShipGunBase GenerateWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType) { MySmallShipGunBase newGun; switch (weaponType) { case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon: newGun = new MyAutocanonGun(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer: newGun = new MyAutomaticRifleSilencerGun(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Crusher: newGun = new MyCrusherDrill(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Laser: newGun = new MyLaserDrill(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Nuclear: newGun = new MyNuclearDrill(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Saw: newGun = new MySawDrill(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Thermal: newGun = new MyThermalDrill(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Drilling_Device_Pressure: newGun = new MyPressureDrill(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher: newGun = new MyMissileLauncherGun(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Harvesting_Device: newGun = new MyHarvestingDevice(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun: newGun = new MyMachineGun(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon: newGun = new MyCannonGun(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun: newGun = new MyShotGun(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper: newGun = new MySniperGun(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back: newGun = new MyUniversalLauncher(); break; case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front: newGun = new MyUniversalLauncher(); break; default: throw new MyMwcExceptionApplicationShouldNotGetHere(); break; } return(newGun); }