// Copyright (c) 2023 Timothy Schenk. Subject to the GNU AGPL Version 3 License.

using System.Runtime.InteropServices;

namespace Wonderking.Game.Data.Item;

[StructLayout(LayoutKind.Explicit, Size = 64)]
public struct ElementalStats
{
    [FieldOffset(0)]
    [MarshalAs(UnmanagedType.I4)]
    public int MinimumFireDamage;

    [FieldOffset(4)]
    [MarshalAs(UnmanagedType.I4)]
    public int MinimumWaterDamage;

    [FieldOffset(8)]
    [MarshalAs(UnmanagedType.I4)]
    public int MinimumDarkDamage;

    [FieldOffset(12)]
    [MarshalAs(UnmanagedType.I4)]
    public int MinimumHolyDamage;

    [FieldOffset(16)]
    [MarshalAs(UnmanagedType.I4)]
    public int MaximumFireDamage;

    [FieldOffset(20)]
    [MarshalAs(UnmanagedType.I4)]
    public int MaximumWaterDamage;

    [FieldOffset(24)]
    [MarshalAs(UnmanagedType.I4)]
    public int MaximumDarkDamage;

    [FieldOffset(28)]
    [MarshalAs(UnmanagedType.I4)]
    public int MaximumHolyDamage;

    [FieldOffset(32)]
    [MarshalAs(UnmanagedType.U4)]
    public uint ElementFire;

    [FieldOffset(36)]
    [MarshalAs(UnmanagedType.U4)]
    public uint ElementWater;

    [FieldOffset(40)]
    [MarshalAs(UnmanagedType.U4)]
    public uint ElementDark;

    [FieldOffset(44)]
    [MarshalAs(UnmanagedType.U4)]
    public uint ElementHoly;

    [FieldOffset(48)]
    [MarshalAs(UnmanagedType.I4)]
    public int FireResistance;

    [FieldOffset(52)]
    [MarshalAs(UnmanagedType.I4)]
    public int WaterResistance;

    [FieldOffset(56)]
    [MarshalAs(UnmanagedType.I4)]
    public int DarkResistance;

    [FieldOffset(60)]
    [MarshalAs(UnmanagedType.I4)]
    public int HolyResistance;
}