private static void OnPlayerDroppedWeapon(IPlayer player, PlayerWeaponRemovedArg arg) { // ID == 0 means no weapon was dropped. For example: Activating instant powerup will make it disappeared, not dropped if (arg.TargetObjectID == 0) { return; } // player argument may be a null object if the weapon drops right after the player was gibbed if (player.UniqueID == 0) { return; } // dropped weapons dont not always have IObjectWeaponItem type. For example thrown grenades have IObject type var weaponObject = Game.GetObject(arg.TargetObjectID) as IObjectWeaponItem; if (weaponObject == null) { return; } var oldPlayerWpn = GetOrCreatePlayerWeapon(player); var newWeaponInfo = new WeaponObjectInfo() { Weapon = weaponObject }; switch (weaponObject.WeaponItemType) { case WeaponItemType.Melee: newWeaponInfo.MeleePowerup = oldPlayerWpn.Melee.Powerup; m_owners[player.UniqueID].Melee.Remove(); // TODO: add null object break; case WeaponItemType.Rifle: newWeaponInfo.RangedPowerup = oldPlayerWpn.Primary.Powerup; m_owners[player.UniqueID].Primary.Remove(); m_owners[player.UniqueID].Primary = RangeWeaponFactory.Create(player, WeaponItem.NONE, RangedWeaponPowerup.None); break; case WeaponItemType.Handgun: newWeaponInfo.RangedPowerup = oldPlayerWpn.Secondary.Powerup; m_owners[player.UniqueID].Secondary.Remove(); m_owners[player.UniqueID].Secondary = RangeWeaponFactory.Create(player, WeaponItem.NONE, RangedWeaponPowerup.None); break; case WeaponItemType.Thrown: newWeaponInfo.RangedPowerup = oldPlayerWpn.Throwable.Powerup; m_owners[player.UniqueID].Throwable.Remove(); m_owners[player.UniqueID].Throwable = RangeWeaponFactory.Create(player, WeaponItem.NONE, RangedWeaponPowerup.None); break; } m_weapons.Add(weaponObject.UniqueID, new Weapon(newWeaponInfo)); }
internal static IObjectWeaponItem CreateWeapon(string objectID, RangedWeaponPowerup powerup) { var weaponObject = (IObjectWeaponItem)Game.CreateObject(objectID); var newWeaponInfo = new WeaponObjectInfo() { Weapon = weaponObject, RangedPowerup = powerup, }; m_weapons.Add(weaponObject.UniqueID, new Weapon(newWeaponInfo)); return(weaponObject); }
public Weapon(WeaponObjectInfo info) { WeaponInfo = info; }