Project_WL/Assets/Script/Util/MyEnumToInt.cs

62 lines
1.7 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyEnumToInt : MonoBehaviour
{
[RuntimeInitializeOnLoadMethod]
static void OnRuntimeMethodLoad()
{
new GameObject("MyEnumToInt").AddComponent<MyEnumToInt>();
}
public static MyEnumToInt Ins;
private Dictionary<Type, Dictionary<Enum, int>> enumToIntMapping = new Dictionary<Type, Dictionary<Enum, int>>();
void Awake()
{
Ins = this;
DontDestroyOnLoad(gameObject);
// 열거형 초기화
InitializeEnumMapping<eGameMode>();
InitializeEnumMapping<eDungeon>();
InitializeEnumMapping<eDifficult>();
InitializeEnumMapping<eAttackType>();
InitializeEnumMapping<eSound>();
InitializeEnumMapping<eBGM>();
InitializeEnumMapping<eCommon>();
InitializeEnumMapping<eStat>();
InitializeEnumMapping<eBuffs>();
InitializeEnumMapping<eBuff>();
InitializeEnumMapping<eAttendance>();
InitializeEnumMapping<ePurpose>();
InitializeEnumMapping<eTime>();
InitializeEnumMapping<eBattleType>();
}
private void InitializeEnumMapping<T>() where T : Enum
{
var mapping = new Dictionary<Enum, int>();
int index = 0;
foreach (T value in Enum.GetValues(typeof(T)))
{
mapping.Add(value, index++);
}
enumToIntMapping[typeof(T)] = mapping;
}
public int Get_Int<T>(T enumValue) where T : Enum
{
if (enumToIntMapping.TryGetValue(typeof(T), out var mapping))
{
return mapping[enumValue];
}
throw new Exception($"Enum type {typeof(T).Name} is not initialized.");
}
}