You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Game
|
|
{
|
|
public enum EIdGenType
|
|
{
|
|
Intiger, //+1
|
|
Code, //<<1
|
|
}
|
|
public enum EIdType
|
|
{
|
|
Entity,
|
|
SkillCast,
|
|
}
|
|
public static class UtilID
|
|
{
|
|
private static Dictionary<EIdType, int> _mIdRecordDict;
|
|
private static Dictionary<EIdType, EIdGenType> _mIdTypeDict;
|
|
static UtilID()
|
|
{
|
|
_mIdRecordDict = new Dictionary<EIdType, int>();
|
|
foreach (EIdType typeNow in Enum.GetValues(typeof(EIdType)))
|
|
{
|
|
_mIdRecordDict[typeNow] = 1;
|
|
}
|
|
_mIdTypeDict = new Dictionary<EIdType, EIdGenType>(){
|
|
{EIdType.Entity,EIdGenType.Intiger},
|
|
{EIdType.SkillCast,EIdGenType.Intiger},
|
|
};
|
|
}
|
|
public static int GetID(EIdType idType)
|
|
{
|
|
int ret = _mIdRecordDict[idType];
|
|
switch ((int)_mIdTypeDict[idType])
|
|
{
|
|
case (int)EIdGenType.Intiger:
|
|
_mIdRecordDict[idType] += 1;
|
|
break;
|
|
case (int)EIdGenType.Code:
|
|
_mIdRecordDict[idType] = _mIdRecordDict[idType] << 1;
|
|
break;
|
|
default:
|
|
_mIdRecordDict[idType] += 1;
|
|
break;
|
|
}
|
|
return ret;
|
|
}
|
|
}
|
|
} |