public void Init(MyObjectBuilder_GunBase objectBuilder, MyDefinitionId weaponDefinitionId, IMyGunBaseUser gunBaseUser) { m_user = gunBaseUser; m_weaponProperties = new MyWeaponPropertiesWrapper(weaponDefinitionId); //MyDebug.AssertDebug(m_weaponProperties.AmmoMagazinesCount > 0, "Weapon definition has no ammo magazines attached."); // object builder area - Start m_remainingAmmos = new Dictionary<MyDefinitionId, int>(WeaponProperties.AmmoMagazinesCount); if (objectBuilder != null) { MyDefinitionId ammoMagazineDef = new MyDefinitionId(typeof(MyObjectBuilder_AmmoMagazine), objectBuilder.CurrentAmmoMagazineName); if (m_weaponProperties.CanChangeAmmoMagazine(ammoMagazineDef)) { CurrentAmmo = objectBuilder.RemainingAmmo; m_weaponProperties.ChangeAmmoMagazine(ammoMagazineDef); } else { if (WeaponProperties.WeaponDefinition.HasAmmoMagazines()) m_weaponProperties.ChangeAmmoMagazine(m_weaponProperties.WeaponDefinition.AmmoMagazinesId[0]); } foreach (var remainingAmmo in objectBuilder.RemainingAmmosList) { m_remainingAmmos.Add(new MyDefinitionId(typeof(MyObjectBuilder_AmmoMagazine), remainingAmmo.SubtypeName), remainingAmmo.Amount); } LastShootTime = new DateTime(objectBuilder.LastShootTime); } else { if (WeaponProperties.WeaponDefinition.HasAmmoMagazines()) m_weaponProperties.ChangeAmmoMagazine(m_weaponProperties.WeaponDefinition.AmmoMagazinesId[0]); LastShootTime = new DateTime(0); } // object builder area - END if (m_user.AmmoInventory != null) { if (m_user.PutConstraint()) { MyDebug.AssertDebug(!String.IsNullOrEmpty(m_user.ConstraintDisplayName), "Display name of weapon is empty."); m_user.AmmoInventory.Constraint = CreateAmmoInventoryConstraints(m_user.ConstraintDisplayName); } RefreshAmmunitionAmount(); } if (m_user.Weapon != null) { m_user.Weapon.OnClosing += Weapon_OnClosing; MySyncGunBase.AmmoCountChanged += MySyncGunBase_AmmoCountChanged; } }
public void Init(MyObjectBuilder_GunBase objectBuilder, MyCubeBlockDefinition cubeBlockDefinition, IMyGunBaseUser gunBaseUser) { if (cubeBlockDefinition is MyWeaponBlockDefinition) { MyWeaponBlockDefinition weaponBlockDefinition = cubeBlockDefinition as MyWeaponBlockDefinition; Init(objectBuilder, weaponBlockDefinition.WeaponDefinitionId, gunBaseUser); } else { // Backward compatibility MyDefinitionId weaponDefinitionId = GetBackwardCompatibleDefinitionId(cubeBlockDefinition.Id.TypeId); Init(objectBuilder, weaponDefinitionId, gunBaseUser); } }