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);
        }
Ejemplo n.º 3
0
 /// <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);
 }
Ejemplo n.º 4
0
 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);
        }
Ejemplo n.º 10
0
        //  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);
        }
Ejemplo n.º 11
0
        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;
 }
Ejemplo n.º 14
0
 internal override void SetObjectBuilderIdInternal(int?objectBuilderId)
 {
     WeaponType = (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum)Convert.ToUInt16(objectBuilderId);
 }
Ejemplo n.º 15
0
 public MyMwcObjectBuilder_SmallShip_Weapon(MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum weaponType)
 {
     WeaponType = weaponType;
 }
Ejemplo n.º 16
0
 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;
 }
Ejemplo n.º 18
0
 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;
         }
     }
 }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        /// <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();
 }
Ejemplo n.º 25
0
        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;
        }
Ejemplo n.º 26
0
 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;
 }        
Ejemplo n.º 27
0
        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;
        }
Ejemplo n.º 28
0
            /// <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);
            }