From 53a455d811e84dc608f1ff60604918577bb2971b Mon Sep 17 00:00:00 2001 From: CarnifexOptimus <156172553+CarnifexOptimus@users.noreply.github.com> Date: Sat, 16 Nov 2024 16:59:34 +0100 Subject: [PATCH] another sphene ex improvement --- .../Ex3QueenEternal/Ex3QueenEternal.cs | 8 ++--- .../Extreme/Ex3QueenEternal/RadicalShift.cs | 6 ++-- BossMod/Replay/ReplayParserLog.cs | 36 +++++++++++++++++-- 3 files changed, 41 insertions(+), 9 deletions(-) diff --git a/BossMod/Modules/Dawntrail/Extreme/Ex3QueenEternal/Ex3QueenEternal.cs b/BossMod/Modules/Dawntrail/Extreme/Ex3QueenEternal/Ex3QueenEternal.cs index c8062e7a83..5be14eb56f 100644 --- a/BossMod/Modules/Dawntrail/Extreme/Ex3QueenEternal/Ex3QueenEternal.cs +++ b/BossMod/Modules/Dawntrail/Extreme/Ex3QueenEternal/Ex3QueenEternal.cs @@ -11,10 +11,10 @@ public class Ex3QueenEternal(WorldState ws, Actor primary) : BossModule(ws, prim public static readonly ArenaBoundsSquare NormalBounds = Trial.T03QueenEternal.T03QueenEternal.DefaultBounds; public static readonly ArenaBoundsComplex WindBounds = Trial.T03QueenEternal.T03QueenEternal.XArena; public static readonly ArenaBoundsComplex EarthBounds = Trial.T03QueenEternal.T03QueenEternal.SplitArena; - public static readonly Rectangle[] IceRects = [new Rectangle(new(112, 95), 4, 15), new Rectangle(new(88, 95), 4, 15), new Rectangle(ArenaCenter, 2, 10)]; - private static readonly Rectangle[] iceBridges = [new Rectangle(new(100, 96), 8, 2), new Rectangle(new(100, 104), 8, 2)]; - public static readonly ArenaBoundsComplex IceBounds = new(IceRects, Offset: Trial.T03QueenEternal.T03QueenEternal.OffSet); - public static readonly ArenaBoundsComplex IceBridgeBounds = new([.. IceRects, .. iceBridges], Offset: Trial.T03QueenEternal.T03QueenEternal.OffSet); + private static readonly Rectangle[] iceRects = [new Rectangle(new(112, 95), 4, 15), new Rectangle(new(88, 95), 4, 15), new Rectangle(ArenaCenter, 2, 10)]; + public static readonly Rectangle[] IceRectsAll = [.. iceRects, new Rectangle(new(100, 96), 8, 2), new Rectangle(new(100, 104), 8, 2)]; + public static readonly ArenaBoundsComplex IceBounds = new(iceRects, Offset: Trial.T03QueenEternal.T03QueenEternal.OffSet); + public static readonly ArenaBoundsComplex IceBridgeBounds = new(IceRectsAll, Offset: Trial.T03QueenEternal.T03QueenEternal.OffSet); private Actor? _bossP2; public Actor? BossP1() => PrimaryActor; diff --git a/BossMod/Modules/Dawntrail/Extreme/Ex3QueenEternal/RadicalShift.cs b/BossMod/Modules/Dawntrail/Extreme/Ex3QueenEternal/RadicalShift.cs index 0a1ad9f260..e08a804e14 100644 --- a/BossMod/Modules/Dawntrail/Extreme/Ex3QueenEternal/RadicalShift.cs +++ b/BossMod/Modules/Dawntrail/Extreme/Ex3QueenEternal/RadicalShift.cs @@ -11,7 +11,7 @@ public enum Rotation { None, Left, Right } private static readonly Square[] defaultSquare = [new(Ex3QueenEternal.ArenaCenter, 20)]; private static readonly AOEShapeCustom windArena = new(defaultSquare, Trial.T03QueenEternal.T03QueenEternal.XArenaRects); private static readonly AOEShapeCustom earthArena = new(defaultSquare, Trial.T03QueenEternal.T03QueenEternal.SplitArenaRects); - private static readonly AOEShapeCustom iceArena = new(defaultSquare, Ex3QueenEternal.IceRects); + private static readonly AOEShapeCustom iceArena = new(defaultSquare, Ex3QueenEternal.IceRectsAll); public override IEnumerable ActiveAOEs(int slot, Actor actor) => Utils.ZeroOrOne(_aoe); @@ -37,7 +37,7 @@ public override void OnEventEnvControl(byte index, uint state) { 9 => Ex3QueenEternal.WindBounds, 10 => Ex3QueenEternal.EarthBounds, - 11 => Ex3QueenEternal.IceBounds, + 11 => Ex3QueenEternal.IceBridgeBounds, _ => null }; if (platform != null) @@ -78,7 +78,7 @@ private void UpdateAOE(ArenaBoundsCustom? platform) _aoe = new(windArena, Arena.Center, default, activation); else if (platform == Ex3QueenEternal.EarthBounds) _aoe = new(earthArena, Arena.Center, default, activation); - else if (platform == Ex3QueenEternal.IceBounds) + else if (platform == Ex3QueenEternal.IceBridgeBounds) _aoe = new(iceArena, Arena.Center, default, activation); } } diff --git a/BossMod/Replay/ReplayParserLog.cs b/BossMod/Replay/ReplayParserLog.cs index 2b8d5abfe0..2d6b22c7c8 100644 --- a/BossMod/Replay/ReplayParserLog.cs +++ b/BossMod/Replay/ReplayParserLog.cs @@ -176,10 +176,42 @@ public override FourCC NextEntry() public override bool CanRead() => true; public override void ReadVoid() { } public override string ReadString() => _input.ReadString(); - public override float ReadFloat() => _input.ReadSingle(); + public override float ReadFloat() + { + try + { + return _input.ReadSingle(); + } + catch (EndOfStreamException) + { + Service.Log("Reached the end of the file unexpectedly. Returning default value."); + return 0f; + } + catch (Exception ex) + { + Service.Log($"An unexpected error occurred: {ex.Message}"); + throw; + } + } public override double ReadDouble() => _input.ReadDouble(); public override Vector3 ReadVec3() => new(_input.ReadSingle(), _input.ReadSingle(), _input.ReadSingle()); - public override Angle ReadAngle() => _input.ReadSingle().Radians(); + public override Angle ReadAngle() + { + try + { + return _input.ReadSingle().Radians(); + } + catch (EndOfStreamException) + { + Service.Log("Reached the end of the file unexpectedly. Returning default angle."); + return 0f.Radians(); + } + catch (Exception ex) + { + Service.Log($"An unexpected error occurred while reading an angle: {ex.Message}"); + throw; + } + } public override bool ReadBool() => _input.ReadBoolean(); public override sbyte ReadSByte() => _input.ReadSByte(); public override short ReadShort() => _input.ReadInt16();