好多新内容

This commit is contained in:
FloatGaming
2026-07-22 05:35:53 +08:00
parent b5d1cdcbc5
commit 15649d02f8
128 changed files with 5956 additions and 673 deletions
@@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "PlayerTitleLibrary", menuName = "Bansonic/Player Title Library")]
public class PlayerTitleLibrary : ScriptableObject
{
[Serializable]
public class PlayerTitleEntry
{
public string titleId;
public Sprite titleSprite;
public string chineseName;
public string englishName;
}
[SerializeField] private List<PlayerTitleEntry> titles = new List<PlayerTitleEntry>();
private Dictionary<string, PlayerTitleEntry> lookup;
public bool TryGetTitle(string key, out PlayerTitleEntry entry)
{
EnsureLookup();
entry = null;
if (string.IsNullOrWhiteSpace(key))
{
return false;
}
return lookup.TryGetValue(NormalizeKey(key), out entry) && entry != null;
}
private void EnsureLookup()
{
if (lookup != null)
{
return;
}
lookup = new Dictionary<string, PlayerTitleEntry>(StringComparer.OrdinalIgnoreCase);
for (int i = 0; i < titles.Count; i++)
{
PlayerTitleEntry entry = titles[i];
if (entry == null)
{
continue;
}
AddLookup(entry.titleId, entry);
AddLookup(entry.chineseName, entry);
AddLookup(entry.englishName, entry);
}
}
private void AddLookup(string key, PlayerTitleEntry entry)
{
string normalized = NormalizeKey(key);
if (!string.IsNullOrEmpty(normalized) && !lookup.ContainsKey(normalized))
{
lookup.Add(normalized, entry);
}
}
private static string NormalizeKey(string key)
{
return string.IsNullOrWhiteSpace(key) ? string.Empty : key.Trim();
}
}