From cf1fb6dd88f94854708d0a869a1aedffde0567c8 Mon Sep 17 00:00:00 2001 From: Greavesy1899 Date: Thu, 28 Mar 2024 13:48:35 +0000 Subject: [PATCH] Actors: C_FireTarget support --- Mafia2Libs/Controls/ActorItemAddOption.cs | 1 + .../FileTypes/Actors/ActorFactory.cs | 2 + .../FileTypes/Actors/ActorTypes.cs | 48 +++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/Mafia2Libs/Controls/ActorItemAddOption.cs b/Mafia2Libs/Controls/ActorItemAddOption.cs index 4e306c1f..0f830efa 100644 --- a/Mafia2Libs/Controls/ActorItemAddOption.cs +++ b/Mafia2Libs/Controls/ActorItemAddOption.cs @@ -31,6 +31,7 @@ public ActorItemAddOption() TypeCombo.Items.Add(ActorTypes.C_ActorDetector); TypeCombo.Items.Add(ActorTypes.Blocker); TypeCombo.Items.Add(ActorTypes.C_StaticWeapon); + TypeCombo.Items.Add(ActorTypes.FireTarget); TypeCombo.Items.Add(ActorTypes.LightEntity); TypeCombo.Items.Add(ActorTypes.C_Cutscene); TypeCombo.Items.Add(ActorTypes.C_ScriptEntity); diff --git a/Mafia2Libs/ResourceTypes/FileTypes/Actors/ActorFactory.cs b/Mafia2Libs/ResourceTypes/FileTypes/Actors/ActorFactory.cs index 2545d584..79cf714f 100644 --- a/Mafia2Libs/ResourceTypes/FileTypes/Actors/ActorFactory.cs +++ b/Mafia2Libs/ResourceTypes/FileTypes/Actors/ActorFactory.cs @@ -52,6 +52,8 @@ public static IActorExtraDataInterface CreateExtraData(ActorTypes type) return new ActorStaticWeapon(); case ActorTypes.C_StaticParticle: return new ActorStaticParticle(); + case ActorTypes.FireTarget: + return new ActorFireTarget(); case ActorTypes.LightEntity: return new ActorLight(); case ActorTypes.C_Cutscene: diff --git a/Mafia2Libs/ResourceTypes/FileTypes/Actors/ActorTypes.cs b/Mafia2Libs/ResourceTypes/FileTypes/Actors/ActorTypes.cs index 3b86927b..97c5023a 100644 --- a/Mafia2Libs/ResourceTypes/FileTypes/Actors/ActorTypes.cs +++ b/Mafia2Libs/ResourceTypes/FileTypes/Actors/ActorTypes.cs @@ -3034,4 +3034,52 @@ public int GetSize() return 500; } } + + public class ActorFireTarget : IActorExtraDataInterface + { + public int FireTargetType { get; set; } + public float Timeout { get; set; } + public float Range { get; set; } + public float Radius { get; set; } + public float Height { get; set; } + public Vector3 BoxExtents { get; set; } + public int ParticleId { get; set; } + public float ParticleScale { get; set; } + public int Probability { get; set; } + public int SoundId { get; set; } + + public void ReadFromFile(MemoryStream InStream, bool bIsBigEndian) + { + FireTargetType = InStream.ReadInt32(bIsBigEndian); + Timeout = InStream.ReadSingle(bIsBigEndian); + Range = InStream.ReadSingle(bIsBigEndian); + Radius = InStream.ReadSingle(bIsBigEndian); + Height = InStream.ReadSingle(bIsBigEndian); + BoxExtents = Vector3Utils.ReadFromFile(InStream, bIsBigEndian); + ParticleId = InStream.ReadInt32(bIsBigEndian); + ParticleScale = InStream.ReadSingle(bIsBigEndian); + Probability = InStream.ReadInt32(bIsBigEndian); + SoundId = InStream.ReadInt32(bIsBigEndian); + } + + public void WriteToFile(MemoryStream InStream, bool bIsBigEndian) + { + InStream.Write(FireTargetType, bIsBigEndian); + InStream.Write(Timeout, bIsBigEndian); + InStream.Write(Range, bIsBigEndian); + InStream.Write(Radius, bIsBigEndian); + InStream.Write(Height, bIsBigEndian); + BoxExtents.WriteToFile(InStream, bIsBigEndian); + InStream.Write(ParticleId, bIsBigEndian); + InStream.Write(ParticleScale, bIsBigEndian); + InStream.Write(Probability, bIsBigEndian); + InStream.Write(SoundId, bIsBigEndian); + } + + public int GetSize() + { + return 48; + } + } + }