Project_WL/Assets/Script/Util/MyEnumToInt.cs

61 lines
1.7 KiB
C#
Raw Permalink Normal View History

using System;
2024-12-15 01:39:39 +00:00
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>>();
2024-12-15 01:39:39 +00:00
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>();
2025-03-19 06:05:57 +00:00
InitializeEnumMapping<eBattleType>();
}
2024-12-15 01:39:39 +00:00
private void InitializeEnumMapping<T>() where T : Enum
{
var mapping = new Dictionary<Enum, int>();
int index = 0;
2024-12-15 01:39:39 +00:00
foreach (T value in Enum.GetValues(typeof(T)))
{
mapping.Add(value, index++);
}
2024-12-15 01:39:39 +00:00
enumToIntMapping[typeof(T)] = mapping;
2024-12-15 01:39:39 +00:00
}
public int Get_Int<T>(T enumValue) where T : Enum
{
if (enumToIntMapping.TryGetValue(typeof(T), out var mapping))
{
return mapping[enumValue];
}
2024-12-15 01:39:39 +00:00
throw new Exception($"Enum type {typeof(T).Name} is not initialized.");
}
2024-12-15 01:39:39 +00:00
}