Просмотр исходного кода

misc: chore: type-specific value accessors on PlayReportValue

Evan Husted 1 год назад
Родитель
Сommit
7a9b62884a
2 измененных файлов с 20 добавлено и 2 удалено
  1. 2 2
      src/Ryujinx/Utilities/PlayReport.cs
  2. 18 0
      src/Ryujinx/Utilities/PlayReportAnalyzer.cs

+ 2 - 2
src/Ryujinx/Utilities/PlayReport.cs

@@ -38,7 +38,7 @@ namespace Ryujinx.Ava.Utilities
             => value.BoxedValue is 1 ? "Playing Master Mode" : PlayReportFormattedValue.ForceReset;
 
         private static PlayReportFormattedValue TearsOfTheKingdom_CurrentField(PlayReportValue value) =>
-            value.PackedValue.AsDouble() switch
+            value.DoubleValue switch
             {
                 > 800d => "Exploring the Sky Islands",
                 < -201d => "Exploring the Depths",
@@ -55,7 +55,7 @@ namespace Ryujinx.Ava.Utilities
             => value.BoxedValue is 0 ? "Playing Super Mario 3D World" : "Playing Bowser's Fury";
         
         private static PlayReportFormattedValue MarioKart8Deluxe_Mode(PlayReportValue value) 
-            => value.BoxedValue switch
+            => value.StringValue switch
             {
                 // Single Player
                 "Single" => "Single Player",

+ 18 - 0
src/Ryujinx/Utilities/PlayReportAnalyzer.cs

@@ -265,6 +265,24 @@ namespace Ryujinx.Ava.Utilities
         /// so use <see cref="PackedValue"/> and the AsX (where X is a numerical type name i.e. Int32) methods for that.
         /// </summary>
         public object BoxedValue => PackedValue.ToObject();
+
+        #region AsX accessors
+
+        public bool BooleanValue => PackedValue.AsBoolean();
+        public byte ByteValye => PackedValue.AsByte();
+        public sbyte SByteValye => PackedValue.AsSByte();
+        public short ShortValye => PackedValue.AsInt16();
+        public ushort UShortValye => PackedValue.AsUInt16();
+        public int IntValye => PackedValue.AsInt32();
+        public uint UIntValye => PackedValue.AsUInt32();
+        public long LongValye => PackedValue.AsInt64();
+        public ulong ULongValye => PackedValue.AsUInt64();
+        public float FloatValue => PackedValue.AsSingle();
+        public double DoubleValue => PackedValue.AsDouble();
+        public string StringValue => PackedValue.AsString();
+        public Span<byte> BinaryValue => PackedValue.AsBinary();
+
+        #endregion
     }
 
     /// <summary>