コード例 #1
0
        }                          // empty ctor is required for deserialization

        public DataShieldHit(ulong sender, long entityId, ProtoShieldHit shieldHit)
        {
            Type      = PacketType.Shieldhit;
            Sender    = sender;
            EntityId  = entityId;
            ShieldHit = shieldHit;
        }
コード例 #2
0
 public DataShieldHit(ulong sender, long entityId, PacketType action)
 {
     Type      = action;
     Sender    = sender;
     EntityId  = entityId;
     ShieldHit = null;
 }
コード例 #3
0
        private ProtoShieldHit CloneHit()
        {
            var hitClone = new ProtoShieldHit
            {
                Amount     = ShieldHit.Amount,
                AttackerId = ShieldHit.AttackerId,
                HitPos     = ShieldHit.HitPos,
                DamageType = ShieldHit.DamageType
            };

            return(hitClone);
        }
コード例 #4
0
        internal void PacketizeShieldHit(MyCubeBlock block, ProtoShieldHit shieldHit)
        {
            var data         = new DataShieldHit(MyAPIGateway.Multiplayer.MyId, block.EntityId, shieldHit);
            var bytes        = MyAPIGateway.Utilities.SerializeToBinary(data);
            var syncPosition = block.CubeGrid.WorldMatrix.Translation;
            var localSteamId = MyAPIGateway.Multiplayer.MyId;

            foreach (var p in Players.Values)
            {
                var id = p.SteamUserId;
                if (id != localSteamId && id != data.Sender && Vector3D.DistanceSquared(p.GetPosition(), syncPosition) <= SyncBufferedDistSqr)
                {
                    MyAPIGateway.Multiplayer.SendMessageTo(PacketIdShieldHit, bytes, p.SteamUserId);
                }
            }
        }