Ejemplo n.º 1
0
        private static void SharedCallOnWeaponShot(ICharacter character, IProtoItemWeapon protoWeapon)
        {
            if (IsClient)
            {
                // start firing weapon on Client-side
                WeaponSystemClientDisplay.OnWeaponShot(character,
                                                       protoWeapon: protoWeapon,
                                                       fallbackProtoCharacter: character.ProtoCharacter,
                                                       fallbackPosition: character.Position);
            }
            else // if IsServer
            {
                using var observers = Api.Shared.GetTempList <ICharacter>();
                var eventNetworkRadius = (byte)Math.Max(
                    15,
                    Math.Ceiling(protoWeapon.SoundPresetWeaponDistance.max));

                Server.World.GetCharactersInRadius(character.TilePosition,
                                                   observers,
                                                   radius: eventNetworkRadius,
                                                   onlyPlayers: true);
                observers.Remove(character);

                Instance.CallClient(observers,
                                    _ => _.ClientRemote_OnWeaponShot(character,
                                                                     protoWeapon,
                                                                     character.ProtoCharacter,
                                                                     character.Position));
            }
        }
Ejemplo n.º 2
0
 private static void SharedCallOnWeaponShot(ICharacter character)
 {
     if (IsClient)
     {
         // start firing weapon on Client-side
         WeaponSystemClientDisplay.OnWeaponShot(character);
     }
     else // if IsServer
     {
         using (var scopedBy = Api.Shared.GetTempList <ICharacter>())
         {
             Server.World.GetScopedByPlayers(character, scopedBy);
             Instance.CallClient(scopedBy,
                                 _ => _.ClientRemote_OnWeaponShot(character));
         }
     }
 }
Ejemplo n.º 3
0
        private void ClientRemote_OnWeaponShot(
            ICharacter whoFires,
            IProtoItemWeapon protoWeapon,
            IProtoCharacter fallbackProtoCharacter,
            Vector2D fallbackPosition)
        {
            if (whoFires != null &&
                !whoFires.IsInitialized)
            {
                whoFires = null;
            }

            WeaponSystemClientDisplay.OnWeaponShot(whoFires,
                                                   protoWeapon,
                                                   fallbackProtoCharacter,
                                                   fallbackPosition);
        }
Ejemplo n.º 4
0
 private void ClientRemote_OnWeaponShot(ICharacter whoFires)
 {
     WeaponSystemClientDisplay.OnWeaponShot(whoFires);
 }