82 lines
1.8 KiB
C#
82 lines
1.8 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
[CreateAssetMenu(menuName = "GameConfig")]
|
|
public class GameConfig : ConfigBase<GameConfig>
|
|
{
|
|
public List<int> LevelSort;
|
|
public List<LevelData> Levels;
|
|
|
|
public LevelData GetLevelData(int pLevelID)
|
|
{
|
|
return pLevelID < Levels.Count ? Levels[pLevelID] : null;
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class LevelData
|
|
{
|
|
public string LevelName;//only for editor display
|
|
public string LevelColorCode;
|
|
public int SlotCount;
|
|
public List<EndingData> Endings;
|
|
|
|
public int GetMatchingEndingID(string pEndingStr)
|
|
{
|
|
int tEndingID = -1;
|
|
|
|
for (int i = 0; i < Endings.Count; i++)
|
|
{
|
|
if (Endings[i].IsMatching(pEndingStr))
|
|
{
|
|
tEndingID = i;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return tEndingID;
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class EndingData
|
|
{
|
|
public string EndingName;//only for editor display
|
|
public bool IsGoodEnding;
|
|
public string EndingCode;//eg: 12X;132;
|
|
|
|
public bool IsMatching(string pEndingStr)
|
|
{
|
|
bool tMatching = false;
|
|
|
|
string[] tTemplateEndingStrs = EndingCode.Split(';');
|
|
for (int i = 0; i < tTemplateEndingStrs.Length; i++)
|
|
{
|
|
if (CompareEndingStr(pEndingStr, tTemplateEndingStrs[i]))
|
|
{
|
|
tMatching = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return tMatching;
|
|
}
|
|
|
|
private bool CompareEndingStr(string pRefStr, string pTemplateStr)
|
|
{
|
|
bool tMatching = true;
|
|
|
|
for (int i = 0; i < pRefStr.Length; i++)
|
|
{
|
|
if (pTemplateStr[i] != 'X' && pRefStr[i] != pTemplateStr[i])
|
|
{
|
|
tMatching = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return tMatching;
|
|
}
|
|
} |