public bool ExtractData(GetDataEventArgs args, MemoryStream data, PvPPlayer attacker, out ProjectileNewArgs arg) { arg = null; if (PresetData.ProjectileDummy.Contains(Type)) { return(false); } arg = new ProjectileNewArgs { Args = args, Attacker = attacker, Identity = data.ReadInt16(), Position = new Vector2(data.ReadSingle(), data.ReadSingle()), Velocity = new Vector2(data.ReadSingle(), data.ReadSingle()), Knockback = data.ReadSingle(), Damage = data.ReadInt16(), Owner = data.ReadByte(), Type = data.ReadInt16(), AiFlags = (BitsByte)data.ReadByte(), Ai0 = AiFlags[0] ? Ai0 = data.ReadSingle() : 0, Ai1 = AiFlags[1] ? data.ReadSingle() : 0, Ai = new float[Projectile.maxAI], Proj = new PvPProjectile(Type, Identity), Weapon = ProjectileUtils.GetProjectileWeapon(attacker, Type) }; return(true); }
public ProjectileNewArgs(GetDataEventArgs args, MemoryStream data, PvPPlayer attacker) { Args = args; Attacker = attacker; Identity = data.ReadInt16(); Position = new Vector2(data.ReadSingle(), data.ReadSingle()); Velocity = new Vector2(data.ReadSingle(), data.ReadSingle()); Knockback = data.ReadSingle(); Damage = data.ReadInt16(); Owner = data.ReadByte(); Type = data.ReadInt16(); AiFlags = (BitsByte)data.ReadByte(); Ai0 = 0; Ai1 = 0; if (AiFlags[0]) { Ai0 = data.ReadSingle(); } if (AiFlags[1]) { Ai1 = data.ReadSingle(); } Ai = new float[Projectile.maxAI]; Weapon = ProjectileUtils.GetProjectileWeapon(attacker, Type); }