ClientServer/Client/Assets/Scripts/UI/CharacterPool.cs

218 lines
12 KiB
C#
Raw Normal View History

2025-09-06 17:17:39 +04:00
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UIElements;
public class CharacterPool : MonoBehaviour
{
// "Character_Angus",
// "Character_Bonnie",
// "Character_Butch",
// "Character_Chalk",
// "Character_CrazyHorse",
// "Character_Doge",
// "Character_Dulla",
// "Character_Flamma",
// "Character_Jeanette",
// "Character_Koraka",
// "Character_LadyHao",
// "Character_Lozen",
// "Character_Mochizuki",
// "Character_Musashi",
// "Character_Nakano",
// "Character_PinkPigTailGirl",
// "Character_Ragnar",
// "Character_ShiYang",
// "Character_Tlahucole",
// "Character_YaaAntesawa",
// "Character_Zap",
// "Character_Knight",
// "Character_Knight_Female",
// "Character_Stud",
// "Character_Druid",
// "Character_Knight_King",
// "Character_Queen",
// "Character_Biker",
// "Character_FireFighter",
// "Character_Gangster",
// "Character_Grandma",
// "Character_Grandpa",
// "Character_HipsterGirl",
// "Character_HipsterGuy",
// "Character_Jock",
// "Character_Paramedic",
// "Character_PunkGirl",
// "Character_PunkGuy",
// "Character_Roadworker",
// "Character_Ash",
// "Character_Thorn"
// serverIndex => localIndex (в listOfCharacter)
public static Dictionary<string, int> ServerToClientIndex = new Dictionary<string, int>
{
{ "Character_0", 1 }, // Ash => Character_Angus
{ "Character_1", 2 }, // Angus => Character_Bonnie
{ "Character_2", 3 }, // Bonnie => Character_Butch
{ "Character_3", 4 }, // Butch => Character_Chalk
{ "Character_4", 5 }, // Chalk => Character_CrazyHorse
{ "Character_5", 6 }, // Crazy Horse => Character_Doge
{ "Character_6", 7 }, // Doge => Character_Dulla
{ "Character_7", 8 }, // Dulla => Character_Flamma
{ "Character_8", 9 }, // Flamma => Character_Jeanette
{ "Character_9", 10 }, // Jeanette => Character_Koraka
{ "Character_10", 11 }, // Koraka => Character_Lady Hao
{ "Character_11", 12 }, // Lady Hao => Character_Lozen
{ "Character_12", 13 }, // Lozen => Character_Mochizuki
{ "Character_13", 14 }, // Mochizuki => Character_Musashi (selectionName void)
{ "Character_14", 15 }, // Toshiro Miyamoto => Character_Nakano
{ "Character_15", 16 }, // Taka Nakano => Character_Pigtail Girl
{ "Character_16", 17 }, // Pigtail Girl => Character_Ragnar
{ "Character_17", 18 }, // Ragnar => Character_ShiYang
{ "Character_18", 19 }, // Shi Yang => Character_Tlahucole
{ "Character_19", 21 }, // Tlahucole => Character_YaaAntesawa
{ "Character_20", 40 }, // Thorn => Character_Zap
{ "Character_21", 23 }, // Yaa Antesawa => Character_Knight
{ "Character_22", 24 }, // Zap => Character_Bruiser
{ "Character_23", 25 }, // Knight => Character_Tactician
{ "Character_24", 26 }, // Female Knight => Character_Druid
{ "Character_25", 27 }, // Tactician => Character_Knight King
{ "Character_26", 28 }, // Druid => Character_Knight Queen
{ "Character_27", 29 }, // Knight King => Character_Biker
{ "Character_28", 30 }, // Knight Queen => Character_Fire Fighter
{ "Character_29", 31 }, // Biker => Character_Gangster
{ "Character_30", 32 }, // Fire Fighter => Character_Grandma
{ "Character_31", 33 }, // Gangster => Character_Grandpa
{ "Character_32", 34 }, // Grandma => Character_Hipster Girl
{ "Character_33", 35 }, // Grandpa => Character_Hipster Guy
{ "Character_34", 36 }, // Hipster Girl => Character_Jock
{ "Character_35", 37 }, // Hipster Guy => Character_Paramedic
{ "Character_36", 38 }, // Jock => Character_Punk Girl
{ "Character_37", 39 }, // Paramedic => Character_Punk Guy
{ "Character_38", 40 }, // Punk Girl => Character_Engineer
{ "Character_39", 0 }, // Punk Guy => Character_Ash
{ "Character_40", 20 }, // Road Worker => Character_Thorn
};
public static Dictionary<string, string> ServerToClientNameMap = new Dictionary<string, string>
{
{ "Character_Angus", "Character_Ash" },
{ "Character_Bonnie", "Character_Angus" },
{ "Character_Butch", "Character_Bonnie" },
{ "Character_Chalk", "Character_Butch" },
{ "Character_CrazyHorse", "Character_Chalk" },
{ "Character_Doge", "Character_CrazyHorse" },
{ "Character_Dulla", "Character_Doge" },
{ "Character_Flamma", "Character_Dulla" },
{ "Character_Jeanette", "Character_Flamma" },
{ "Character_Koraka", "Character_Jeanette" },
{ "Character_LadyHao", "Character_Koraka" },
{ "Character_Lozen", "Character_LadyHao" },
{ "Character_Mochizuki", "Character_Lozen" },
{ "Character_Musashi", "Character_Mochizuki" },
{ "Character_Nakano", "Character_ToshiroMiyamoto" },
{ "Character_PinkPigTailGirl","Character_Nakano" },
{ "Character_Ragnar", "Character_PinkPigTailGirl" },
{ "Character_ShiYang", "Character_Ragnar" },
{ "Character_Tlahucole", "Character_ShiYang" },
{ "Character_YaaAntesawa", "Character_Tlahucole" },
{ "Character_Zap", "Character_Thorn" },
{ "Character_Knight", "Character_YaaAntesawa" },
{ "Character_FemaleKnight", "Character_Zap" },
{ "Character_Stud", "Character_Knight" },
{ "Character_Druid", "Character_Knight_Female" },
{ "Character_Knight_King", "Character_Stud" },
{ "Character_Queen", "Character_Druid" },
{ "Character_Biker", "Character_Knight_King" },
{ "Character_FireFighter", "Character_Queen" },
{ "Character_Gangster", "Character_Biker" },
{ "Character_Grandma", "Character_FireFighter" },
{ "Character_Grandpa", "Character_Gangster" },
{ "Character_HipsterGirl", "Character_Grandma" },
{ "Character_HipsterGuy", "Character_Grandpa" },
{ "Character_Jock", "Character_HipsterGirl" },
{ "Character_Paramedic", "Character_HipsterGuy" },
{ "Character_PunkGirl", "Character_Jock" },
{ "Character_PunkGuy", "Character_Paramedic" },
{ "Character_Roadworker", "Character_PunkGirl" },
{ "Character_Ash", "Character_PunkGuy" },
{ "Character_Thorn", "Character_Roadworker" }
};
internal static List<CharacterData> listOfCharacter;
public void Awake()
{
listOfCharacter = new List<CharacterData>
{
new CharacterData { skinName = 0, selectionSkinName = "Angus Macaskill", root = GetObjectByInstanceId(0) },
new CharacterData { skinName = 1, selectionSkinName = "Bonnie Oakland", root = GetObjectByInstanceId(1) },
new CharacterData { skinName = 2, selectionSkinName = "Butch Cassidy", root = GetObjectByInstanceId(2) },
new CharacterData { skinName = 3, selectionSkinName = "Chalk", root = GetObjectByInstanceId(3) },
new CharacterData { skinName = 4, selectionSkinName = "Crazy Horse", root = GetObjectByInstanceId(4) },
new CharacterData { skinName = 5, selectionSkinName = "Doge Fan", root = GetObjectByInstanceId(5) },
new CharacterData { skinName = 6, selectionSkinName = "Dulla Bhatti", root = GetObjectByInstanceId(6) },
new CharacterData { skinName = 7, selectionSkinName = "Flamma", root = GetObjectByInstanceId(7) },
new CharacterData { skinName = 8, selectionSkinName = "Jeanette of Arc", root = GetObjectByInstanceId(8) },
new CharacterData { skinName = 9, selectionSkinName = "Koraka", root = GetObjectByInstanceId(9) },
new CharacterData { skinName = 10, selectionSkinName = "Lady Hao", root = GetObjectByInstanceId(10) },
new CharacterData { skinName = 11, selectionSkinName = "Lozen", root = GetObjectByInstanceId(11) },
new CharacterData { skinName = 12, selectionSkinName = "Mochizuki", root = GetObjectByInstanceId(12) },
new CharacterData { skinName = 13, selectionSkinName = "", root = GetObjectByInstanceId(13) },
new CharacterData { skinName = 14, selectionSkinName = "Taka Nakano", root = GetObjectByInstanceId(14) },
new CharacterData { skinName = 15, selectionSkinName = "Pigtail Girl", root = GetObjectByInstanceId(15) },
new CharacterData { skinName = 16, selectionSkinName = "Ragnar", root = GetObjectByInstanceId(16) },
new CharacterData { skinName = 17, selectionSkinName = "Shi Yang", root = GetObjectByInstanceId(17) },
new CharacterData { skinName = 18, selectionSkinName = "Tlahucole", root = GetObjectByInstanceId(18) },
new CharacterData { skinName = 19, selectionSkinName = "Yaa Antesawa", root = GetObjectByInstanceId(19) },
new CharacterData { skinName = 20, selectionSkinName = "Zap", root = GetObjectByInstanceId(20) },
new CharacterData { skinName = 21, selectionSkinName = "Knight", root = GetObjectByInstanceId(21) },
new CharacterData { skinName = 22, selectionSkinName = "Bruiser", root = GetObjectByInstanceId(22) },
new CharacterData { skinName = 23, selectionSkinName = "Tactician", root = GetObjectByInstanceId(23) },
new CharacterData { skinName = 24, selectionSkinName = "Druid", root = GetObjectByInstanceId(24) },
new CharacterData { skinName = 25, selectionSkinName = "Knight King", root = GetObjectByInstanceId(25) },
new CharacterData { skinName = 26, selectionSkinName = "Knight Queen", root = GetObjectByInstanceId(26) },
new CharacterData { skinName = 27, selectionSkinName = "Biker", root = GetObjectByInstanceId(27) },
new CharacterData { skinName = 28, selectionSkinName = "Fire Fighter", root = GetObjectByInstanceId(28) },
new CharacterData { skinName = 29, selectionSkinName = "Gangster", root = GetObjectByInstanceId(29) },
new CharacterData { skinName = 30, selectionSkinName = "Grandma", root = GetObjectByInstanceId(30) },
new CharacterData { skinName = 31, selectionSkinName = "Grandpa", root = GetObjectByInstanceId(31) },
new CharacterData { skinName = 32, selectionSkinName = "Hipster Girl", root = GetObjectByInstanceId(32) },
new CharacterData { skinName = 33, selectionSkinName = "Hipster Guy", root = GetObjectByInstanceId(33) },
new CharacterData { skinName = 34, selectionSkinName = "Jock", root = GetObjectByInstanceId(34) },
new CharacterData { skinName = 35, selectionSkinName = "Paramedic", root = GetObjectByInstanceId(35) },
new CharacterData { skinName = 36, selectionSkinName = "Punk Girl", root = GetObjectByInstanceId(36) },
new CharacterData { skinName = 37, selectionSkinName = "Punk Guy", root = GetObjectByInstanceId(37) },
new CharacterData { skinName = 38, selectionSkinName = "Engineer", root = GetObjectByInstanceId(38) },
new CharacterData { skinName = 39, selectionSkinName = "Ash", root = GetObjectByInstanceId(39) },
new CharacterData { skinName = 40, selectionSkinName = "Thorn", root = GetObjectByInstanceId(40) },
new CharacterData { skinName = 41, selectionSkinName = "Rakshaz", root = GetObjectByInstanceId(41) }
};
}
private static GameObject GetObjectByInstanceId(int id)
{
string targetName = $"Character_{id}";
GameObject root = GameObject.Find("Character_Select_Contents");
Transform[] allChildren = root.GetComponentsInChildren<Transform>(true);
foreach (Transform child in allChildren)
{
if (child.name == targetName)
return child.gameObject;
}
// Debug.LogWarning($"Character GameObject with name '{targetName}' not found in CharactersRoot.");
return null;
}
[System.Serializable]
internal struct CharacterData
{
// public TextMeshProUGUI data;
public int skinName;
public string selectionSkinName;
public GameObject root;
}
}