using System; using System.Collections.Generic; using UnityEngine; public class PlayerTab : MonoBehaviour { public ColorChip ColorTabPrefab; public SpriteRenderer DemoImage; public SpriteRenderer HatImage; public SpriteRenderer SkinImage; public SpriteRenderer PetImage; public FloatRange XRange = new FloatRange(1.5f, 3f); public FloatRange YRange = new FloatRange(-1f, -3f); private HashSet AvailableColors = new HashSet(); private List ColorChips = new List(); private const int Columns = 3; public void OnEnable() { PlayerControl.SetPlayerMaterialColors((int)PlayerControl.LocalPlayer.Data.ColorId, this.DemoImage); PlayerControl.SetHatImage(SaveManager.LastHat, this.HatImage); PlayerControl.SetSkinImage(SaveManager.LastSkin, this.SkinImage); PlayerControl.SetPetImage(SaveManager.LastPet, (int)PlayerControl.LocalPlayer.Data.ColorId, this.PetImage); float num = (float)Palette.PlayerColors.Length / 3f; for (int i = 0; i < Palette.PlayerColors.Length; i++) { float x = this.XRange.Lerp((float)(i % 3) / 2f); float y = this.YRange.Lerp(1f - (float)(i / 3) / num); ColorChip colorChip = UnityEngine.Object.Instantiate(this.ColorTabPrefab); colorChip.transform.SetParent(base.transform); colorChip.transform.localPosition = new Vector3(x, y, -1f); int j = i; colorChip.Button.OnClick.AddListener(delegate() { this.SelectColor(j); }); colorChip.Inner.color = Palette.PlayerColors[i]; this.ColorChips.Add(colorChip); } } public void OnDisable() { for (int i = 0; i < this.ColorChips.Count; i++) { UnityEngine.Object.Destroy(this.ColorChips[i].gameObject); } this.ColorChips.Clear(); } public void Update() { this.UpdateAvailableColors(); for (int i = 0; i < this.ColorChips.Count; i++) { this.ColorChips[i].InUseForeground.SetActive(!this.AvailableColors.Contains(i)); } } private void SelectColor(int colorId) { this.UpdateAvailableColors(); if (this.AvailableColors.Remove(colorId)) { SaveManager.BodyColor = (byte)colorId; if (PlayerControl.LocalPlayer) { PlayerControl.LocalPlayer.CmdCheckColor((byte)colorId); } } } public void UpdateAvailableColors() { PlayerControl.SetPlayerMaterialColors((int)PlayerControl.LocalPlayer.Data.ColorId, this.DemoImage); PlayerControl.SetPetImage(SaveManager.LastPet, (int)PlayerControl.LocalPlayer.Data.ColorId, this.PetImage); for (int i = 0; i < Palette.PlayerColors.Length; i++) { this.AvailableColors.Add(i); } if (GameData.Instance) { List allPlayers = GameData.Instance.AllPlayers; for (int j = 0; j < allPlayers.Count; j++) { GameData.PlayerInfo playerInfo = allPlayers[j]; this.AvailableColors.Remove((int)playerInfo.ColorId); } } } }