NHSE/NHSE.Core/Structures/Item/ItemSize.cs
2020-12-24 23:53:40 -08:00

57 lines
2.7 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections.Generic;
namespace NHSE.Core
{
/// <summary>
/// Detail about an item's dimensions
/// </summary>
public class ItemSize
{
public readonly int Width;
public readonly int Height;
public ItemSize(int w, int h)
{
Width = w; Height = h;
}
}
public static class ItemSizeExtensions
{
public const string EnumPrefix = "S_";
private static readonly Dictionary<ItemSizeType, ItemSize> Dictionary = new()
{
{ItemSizeType.S_1_0x1_0 , new ItemSize( 2, 2)}, // 1x1
{ItemSizeType.S_2_0x1_0 , new ItemSize( 4, 2)}, // 2x1
{ItemSizeType.S_2_0x2_0 , new ItemSize( 4, 4)}, // 2x2
{ItemSizeType.S_3_0x1_0 , new ItemSize( 6, 2)}, // 3x1
{ItemSizeType.S_3_0x2_0 , new ItemSize( 6, 4)}, // 3x2
{ItemSizeType.S_3_0x3_0 , new ItemSize( 6, 6)}, // 3x3
{ItemSizeType.S_1_0x0_5 , new ItemSize( 2, 1)}, // 1x0.5
{ItemSizeType.S_2_0x0_5 , new ItemSize( 4, 1)}, // 2x0.5
{ItemSizeType.S_1_5x1_5 , new ItemSize( 3, 3)}, // 1.5x1.5
{ItemSizeType.S_1_0x0_5_Wall, new ItemSize( 2, 1)}, // 1x0.5(壁)
{ItemSizeType.S_0_5x1_0_Wall, new ItemSize( 1, 2)}, // 0.5x1(壁)
{ItemSizeType.S_1_0x1_0_Wall, new ItemSize( 2, 2)}, // 1x1(壁)
{ItemSizeType.S_1_0x1_5_Wall, new ItemSize( 2, 3)}, // 1x1.5 (壁)
{ItemSizeType.S_1_0x2_0_Wall, new ItemSize( 2, 4)}, // 1x2  (壁)
{ItemSizeType.S_2_0x1_0_Wall, new ItemSize( 4, 2)}, // 2x1(壁)
{ItemSizeType.S_2_0x1_5_Wall, new ItemSize( 4, 3)}, // 2x1.5 (壁)
{ItemSizeType.S_2_0x2_0_Wall, new ItemSize( 4, 4)}, // 2x2(壁)
{ItemSizeType.S_1_0x1_0_Rug , new ItemSize( 2, 2)}, // 1x1(ラグ)
{ItemSizeType.S_2_0x1_0_Rug , new ItemSize( 4, 2)}, // 2x1(ラグ)
{ItemSizeType.S_2_0x2_0_Rug , new ItemSize( 4, 4)}, // 2x2(ラグ)
{ItemSizeType.S_3_0x2_0_Rug , new ItemSize( 6, 4)}, // 3x2(ラグ)
{ItemSizeType.S_3_0x3_0_Rug , new ItemSize( 6, 6)}, // 3x3(ラグ)
{ItemSizeType.S_4_0x3_0_Rug , new ItemSize( 8, 6)}, // 4x3(ラグ)
{ItemSizeType.S_4_0x4_0_Rug , new ItemSize( 8, 8)}, // 4x4(ラグ)
{ItemSizeType.S_5_0x4_0_Rug , new ItemSize(10, 8)}, // 5x4(ラグ)
{ItemSizeType.S_5_0x5_0_Rug , new ItemSize(10, 10)}, // 5x5(ラグ)
};
public static int GetWidth(this ItemSizeType s) => Dictionary.TryGetValue(s, out var val) ? val.Width : 2;
public static int GetHeight(this ItemSizeType s) => Dictionary.TryGetValue(s, out var val) ? val.Height : 2;
}
}