using System.ComponentModel; using System.Runtime.InteropServices; #pragma warning disable CS8618, CA1815, CA1819, IDE1006 namespace NHSE.Core { [StructLayout(LayoutKind.Sequential, Pack = 1)] public class GSaveVisitorNpc { public const int SIZE = 0x78; private const int Days = 7; [field: MarshalAs(UnmanagedType.ByValArray, SizeConst = Days)] public VisitorNPC[] VisitorNPC { get; set; } public V3f CreatePos { get; set; } public V3f _61e631dc { get; set; } [field: MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = Days)] public bool[] IsNormalLive { get; set; } [field: MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = Days)] public bool[] IsBirthdayLive { get; set; } [field: MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] gap_42; [field: MarshalAs(UnmanagedType.ByValArray, SizeConst = Days)] public VisitorNPC[] InitSchedule { get; set; } [field: MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.I1, SizeConst = Days * 2)] public bool[] _437619d8 { get; set; } [field: MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public byte[] gap_6e; public int DayWisp {get; set; } public int DayCeleste { get; set; } } // same as Vector3; not importing package [TypeConverter(typeof(ValueTypeTypeConverter))] public struct V3f { public float X { get; set; } public float Y { get; set; } public float Z { get; set; } public override string ToString() => $"({X},{Y},{Z})"; } public enum VisitorNPC { None = 0, Gulliver = 1, Label = 2, Saharah = 3, Wisp = 4, Mabel = 5, CJ = 6, Flick = 7, Kicks = 8, Leif = 9, Redd = 10, Gullivarrr = 11, } }