private static void BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo, MyMwcObjectBuilder_AmmoGroupEnum group, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon) { if (!m_ammoBinding.ContainsKey((int)ammo)) { m_ammoBinding[(int)ammo] = new Dictionary <int, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum>(); } m_ammoBinding[(int)ammo][(int)group] = weapon; }
public void SpeacialWeaponEvent(MySpecialWeaponEventEnum eventType, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon) { MyEventSpeacialWeapon msg = new MyEventSpeacialWeapon(); msg.ShipEntityId = MySession.PlayerShip.EntityId.Value.NumericValue; msg.Weapon = weapon; msg.WeaponEvent = eventType; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered); }
/// <summary> /// Returns if weapon with this type is mounted /// </summary> /// <param name="weaponType">Weapon's type</param> /// <returns></returns> public bool IsMounted(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType) { foreach (MySmallShipGunBase gun in GetMountedWeaponsWithHarvesterAndDrill()) { if (gun.WeaponType == weaponType) { return(true); } } return(false); }
public bool HasMountedWeapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType) { foreach (var weapon in m_allMountedWeapons) { if (weapon.WeaponType == weaponType) { return(true); } } return(false); }
private static MyDrillBase EnsureDrill(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon, MySmallShip ship) { var drill = ship.Weapons.GetMountedDrill(); if (drill == null || drill.WeaponType != weapon) { ship.Weapons.RemoveDrill(); ship.Weapons.AddDrill(new MyMwcObjectBuilder_SmallShip_Weapon(weapon)); drill = ship.Weapons.GetMountedDrill(); } drill.IsDummy = true; return(drill); }
private static void OnFireHarvester(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon, MySmallShip ship) { var harvester = ship.Weapons.GetMountedHarvestingDevice(); if (harvester == null || harvester.WeaponType != weapon) { ship.Weapons.RemoveHarvestingDevice(); ship.Weapons.AddHarvestingDevice(new MyMwcObjectBuilder_SmallShip_Weapon(weapon)); harvester = ship.Weapons.GetMountedHarvestingDevice(); } harvester.IsDummy = true; ship.Weapons.FireHarvester(); }
// Read this object from message-in internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion) { if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) return NetworkError(); // WeaponType MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum? weaponType = MyMwcMessageIn.ReadObjectBuilderSmallShipWeaponTypesEnumEx(binaryReader, senderEndPoint); if (weaponType == null) return NetworkError(); WeaponType = weaponType.Value; MyMwcLog.IfNetVerbose_AddToLog("WeaponType: " + WeaponType); return true; }
public void Shoot(MyEntity entity, Matrix shooterMatrix, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo, MyEntity target, MyEntityIdentifier? projectileId) { if (!IsControlledByMe(entity)) { return; } MyEventShoot msg = new MyEventShoot(); msg.Position = new MyMwcPositionAndOrientation(shooterMatrix); msg.ShooterEntityId = entity.EntityId.Value.NumericValue; msg.ProjectileEntityId = MyEntityIdentifier.ToNullableInt(projectileId); msg.Ammo = ammo; msg.TargetEntityId = (target != null && target.EntityId.HasValue) ? target.EntityId.Value.NumericValue : (uint?)null; msg.Weapon = weapon; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered); }
public void Shoot(MyEntity entity, Matrix shooterMatrix, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo, MyEntity target, MyEntityIdentifier?projectileId) { if (!IsControlledByMe(entity)) { return; } MyEventShoot msg = new MyEventShoot(); msg.Position = new MyMwcPositionAndOrientation(shooterMatrix); msg.ShooterEntityId = entity.EntityId.Value.NumericValue; msg.ProjectileEntityId = MyEntityIdentifier.ToNullableInt(projectileId); msg.Ammo = ammo; msg.TargetEntityId = (target != null && target.EntityId.HasValue) ? target.EntityId.Value.NumericValue : (uint?)null; msg.Weapon = weapon; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered); }
// Read this object from message-in internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion) { if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) { return(NetworkError()); } // WeaponType MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum?weaponType = MyMwcMessageIn.ReadObjectBuilderSmallShipWeaponTypesEnumEx(binaryReader, senderEndPoint); if (weaponType == null) { return(NetworkError()); } WeaponType = weaponType.Value; MyMwcLog.IfNetVerbose_AddToLog("WeaponType: " + WeaponType); return(true); }
public bool ReadObjectBuilderSmallShipWeaponTypesEnum(ref MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum val) { ushort numericValue = 0; return(ReadUInt16(ref numericValue) && MyMwcUtils.GetEnumFromNumber <MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum, ushort>(numericValue, ref val)); }
internal override void SetObjectBuilderIdInternal(int? objectBuilderId) { WeaponType = (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum) Convert.ToUInt16(objectBuilderId); }
public MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType) { WeaponType = weaponType; }
internal override void SetObjectBuilderIdInternal(int?objectBuilderId) { WeaponType = (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum)Convert.ToUInt16(objectBuilderId); }
public MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType) { WeaponType = weaponType; }
public void WriteObjectBuilderSmallShipWeaponTypesEnum(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum val) { m_binaryWriter.Write((ushort)val); }
private static MyDrillBase EnsureDrill(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon, MySmallShip ship) { var drill = ship.Weapons.GetMountedDrill(); if (drill == null || drill.WeaponType != weapon) { ship.Weapons.RemoveDrill(); ship.Weapons.AddDrill(new MyMwcObjectBuilder_SmallShip_Weapon(weapon)); drill = ship.Weapons.GetMountedDrill(); } drill.IsDummy = true; return drill; }
public void ForceWeaponUse(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType) { for (int i = 0; i < m_botWeaponParamsAllSlots.Length; i++) { if (m_botWeaponParamsAllSlots[i].WeaponType == weaponType) { m_botWeaponParamsAllSlots[i].ForceUse = true; break; } } }
public virtual void Init(string hudLabelText, MyMwcObjectBuilder_SmallShip_Bot objectBuilder/*, Matrix matrix, float health*/) { System.Diagnostics.Debug.Assert(objectBuilder.Faction != 0); if (objectBuilder.Faction == 0) { Trace.SendMsgLastCall(objectBuilder.EntityId.ToString()); } base.Init(hudLabelText, objectBuilder/*, matrix, health*/); Faction = objectBuilder.Faction; // Array of params for all weapons on ship m_botWeaponParamsAllSlots = new MyBotParams[Enum.GetNames(typeof(MyMwcObjectBuilder_FireKeyEnum)).Length]; //Assignment of constants for each weapon foreach (var item in objectBuilder.AssignmentOfAmmo) { //Set params for weapon in selected slot MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo = item.AmmoType; MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum? weaponTypeNullable = MyGuiSmallShipHelpers.GetWeaponType(item.AmmoType, item.Group); MyMwcObjectBuilder_FireKeyEnum fireKey = item.FireKey; if (weaponTypeNullable != null) { var weaponType = (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum)weaponTypeNullable; MyBotParams botParamsOneSlot = SettingsForWeaponType(weaponType, ammo); botParamsOneSlot.FireKey = fireKey; m_botWeaponParamsAllSlots[(int)fireKey - 1] = botParamsOneSlot; //store all weapon types bot has m_weaponTypesMounted |= weaponType; } } //always 0 super easy 1 max hard MyGameplayDifficultyEnum difficultyOfThisBot = GetBotDifficulty(); DifficultyStrafingSpeed = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotStrafingSpeed; DifficultyMovingSpeed = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotMovingSpeed; DifficultyFireRatio = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotFireRatio; //HACK BECAUSE OF TEST BUILD.. DifficultyGunUsageRatio = 0.5f; //DifficultyGunUsageRatio = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotGunUsageRatio; DifficultyRaidAttackOccurrence = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotRaidAttackOccurrence; DifficultyFlyAroundTargetOccurrence = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotFlyAroundTargetOccurrence; DifficultyAttackReactDistance = MyGameplayConstants.GetGameplayDifficulty(difficultyOfThisBot).BotAttackReactDistance; DifficultyUseFireBurst = 1; MyHud.ChangeText(this, new StringBuilder(hudLabelText), null, 10000, MyHudIndicatorFlagsEnum.SHOW_ALL); NormalDecision = MyBotDecisionLogicsEnum.None; AttackDecision = MyBotDecisionLogicsEnum.None; //bot survival waypoints if getting lost m_rememberWaypoints = new MyWaypointMemory(this); m_temporaryWaypoints = new MyWaypointMemory(this); m_canSeeCheck = new MyCanSeeMemory(false); m_canSeeCheckForShoot = new MyCanSeeMemory(false); m_canSeeCheckForMove = new MyCanSeeMemory(false); //Set behavrior duration times SettingsForBehaviorTimers(); //Inicialize timers ResetBehaviourTimer(); ResetStrafeTimer(); m_decisionTimeCounter = 0; m_lostCounter = 0; Threat = null; Target = null; FollowTarget = null; //Next inicialization should be done from input so every bot can do something different (shuold it be in object builder for bot?) //-------------------------------------------------------- //Set default decision logic NormalDecision = MyBotDecisionLogicsEnum.Guard; AttackDecision = MyBotDecisionLogicsEnum.CasualFighter; m_survivalKit = new Dictionary<MyBotSurvivalAlertsEnum, MySurvivalDecision>(); AddSurvivalAlert(MyBotSurvivalAlertsEnum.EnemyInsight, MyBotDecisionLogicsEnum.None, 1000); AddSurvivalAlert(MyBotSurvivalAlertsEnum.UnderAttack, MyBotDecisionLogicsEnum.CasualFighter, 1000); //Initialize waypoint memories m_savedWaypoints = new MyWaypointMemory(this); Trace.SendMsgLastCall("Init Bot " + base.Name); }
/// <summary> /// Constants for all mountable weapons /// TODO: numeric params should be taken from editor later /// </summary> private MyBotParams SettingsForWeaponType(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammoType) { var settings = new MyBotParams { WeaponsParams = new float[Enum.GetNames(typeof(MyBotWeaponsParametrsEnum)).Length] }; switch (weaponType) { case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Autocanon: { settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 10.0f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.06f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.2f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyAutocanonConstants.SHOT_INTERVAL_IN_MILISECONDS; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f; settings.Enabled = true; break; } case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Shotgun: { settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.5f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.3f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 1.4f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyShotgunConstants.SHOT_INTERVAL_IN_MILISECONDS; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f; settings.Enabled = true; break; } case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Automatic_Rifle_With_Silencer: { settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.3f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.4f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.2f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyARSConstants.SHOT_INTERVAL_IN_MILISECONDS; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f; settings.Enabled = true; break; } case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Cannon: { settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.15f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.2f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.25f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyCannonConstants.SHOT_INTERVAL_IN_MILISECONDS; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f; settings.Enabled = true; break; } case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Machine_Gun: { settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.6f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.6f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.2f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMachineGunConstants.SHOT_INTERVAL_IN_MILISECONDS; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f; settings.Enabled = true; break; } case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Missile_Launcher: { settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.2f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.25f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.45f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f; settings.Enabled = true; break; } case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Sniper: { settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.2f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.2f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.05f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MySniperConstants.SHOT_INTERVAL_IN_MILISECONDS; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f; settings.Enabled = true; break; } case (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Back): { settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.15f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.05f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 1.0f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f; settings.Enabled = false; break; } case MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum.Universal_Launcher_Front: { settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDurationTuner] = 0.15f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringFrequencyTuner] = 0.05f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringConeTuner] = 0.5f; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.ShotIntervalMilliseconds] = MyMissileConstants.MISSILE_LAUNCHER_SHOT_INTERVAL_IN_MILISECONDS; settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistanceTuner] = 0.9f; settings.Enabled = true; break; } } //Keep max trajectory and weapon type settings.WeaponsParams[(int)MyBotWeaponsParametrsEnum.FiringDistance] = MyAmmoConstants.GetAmmoProperties(ammoType).MaxTrajectory; settings.WeaponType = weaponType; settings.LastShotMilliseconds = MyMinerGame.TotalGamePlayTimeInMilliseconds; return settings; }
private static MySmallShipGunBase GetWeapon(MySmallShip ship, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum msgWeapon) { return MyMwcUtils.GetRandomItemOrNull(ship.Weapons.GetMountedWeaponsWithHarvesterAndDrill().Where((s) => s.WeaponType == msgWeapon).ToList()); }
private static MySmallShipGunBase GetWeapon(MySmallShip ship, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum msgWeapon) { return(MyMwcUtils.GetRandomItemOrNull(ship.Weapons.GetMountedWeaponsWithHarvesterAndDrill().Where((s) => s.WeaponType == msgWeapon).ToList())); }
public void SpeacialWeaponEvent(MySpecialWeaponEventEnum eventType, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon) { MyEventSpeacialWeapon msg = new MyEventSpeacialWeapon(); msg.ShipEntityId = MySession.PlayerShip.EntityId.Value.NumericValue; msg.Weapon = weapon; msg.WeaponEvent = eventType; Peers.SendToAll(ref msg, NetDeliveryMethod.ReliableUnordered); }
private static void OnFireHarvester(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon, MySmallShip ship) { var harvester = ship.Weapons.GetMountedHarvestingDevice(); if (harvester == null || harvester.WeaponType != weapon) { ship.Weapons.RemoveHarvestingDevice(); ship.Weapons.AddHarvestingDevice(new MyMwcObjectBuilder_SmallShip_Weapon(weapon)); harvester = ship.Weapons.GetMountedHarvestingDevice(); } harvester.IsDummy = true; ship.Weapons.FireHarvester(); }
private bool TryGetWeaponParams(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType, ref MyBotParams weaponParams) { for (int i = 0; i < m_botWeaponParamsAllSlots.Length; i++) { if (m_botWeaponParamsAllSlots[i].WeaponsParams == null) continue; if (m_botWeaponParamsAllSlots[i].WeaponType == weaponType) { weaponParams = m_botWeaponParamsAllSlots[i]; return true; } } return false; }
private static void BindAmmo(MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum ammo, MyMwcObjectBuilder_AmmoGroupEnum group, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weapon) { if (!m_ammoBinding.ContainsKey((int)ammo)) m_ammoBinding[(int)ammo] = new Dictionary<int, MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum>(); m_ammoBinding[(int)ammo][(int)group] = weapon; }
private bool TryAssignAmmo(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType, MyMwcObjectBuilder_AmmoGroupEnum ammoGroup, MyMwcObjectBuilder_FireKeyEnum fireKey, MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum[] ammoPriorities) { for (int i = 0; i < ammoPriorities.Length; i++) { if (Weapons.AmmoInventoryItems.GetAmmoInventoryItems(ammoPriorities[i]).Count > 0) { Weapons.AmmoAssignments.AssignAmmo(fireKey, ammoGroup, ammoPriorities[i]); MyBotParams botParamsOneSlot = SettingsForWeaponType(weaponType, ammoPriorities[i]); botParamsOneSlot.FireKey = fireKey; botParamsOneSlot.HasAmmo = true; m_botWeaponParamsAllSlots[(int)fireKey - 1] = botParamsOneSlot; return true; } } return false; }
/// <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); }