using System; using System.Collections.Generic; using UnityEngine; namespace XGame { [Serializable] public class CharacterConfigData { public string defaultCharacterId; public Vector3 spawnPosition; public Vector3 spawnEuler; public List characters = new List(); public CharacterConfigItem GetDefault() { CharacterConfigItem item = Find(defaultCharacterId); return item ?? (characters != null && characters.Count > 0 ? characters[0] : null); } public CharacterConfigItem Find(string id) { if (string.IsNullOrEmpty(id) || characters == null) { return null; } for (int i = 0; i < characters.Count; i++) { CharacterConfigItem item = characters[i]; if (item != null && string.Equals(item.id, id, StringComparison.OrdinalIgnoreCase)) { return item; } } return null; } public int GetFigure(string id) { return GetFigure(Find(id) ?? GetDefault()); } public int GetFigure(CharacterConfigItem item) { if (item == null || characters == null) { return 0; } for (int i = 0; i < characters.Count; i++) { if (ReferenceEquals(characters[i], item)) { return i + 1; } } return 0; } public CharacterConfigItem GetByFigure(int figure) { int index = figure - 1; if (characters != null && index >= 0 && index < characters.Count && characters[index] != null) { return characters[index]; } return GetDefault(); } } [Serializable] public class CharacterConfigItem { public string id; public string displayName; public string prefabPath; } }