using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameLoader : MonoBehaviour { public GameObject table; public GameObject playerCube; public int myIndex; public int playerCount; public Color[] playerColors; public GameObject cardPrefab; public GameObject handUI; public GameObject deck; public GameObject thrownCards; public static MainMenuController mmc; public static System.Action onReloadPiles; void Start() { mmc = FindObjectOfType(); mmc.gameObject.SetActive(false); var angleDelta = (270) / playerCount; var dst = 15; var angleOffset = 45; for (int i=0;i 0 ? 1 : -1; var angle = (angleDelta * (i - myIndex) + angleOffset * offsetMult); Vector3 pos = new Vector3(dst * Mathf.Sin(angle * Mathf.Deg2Rad), 2.6f, -dst * Mathf.Cos(angle * Mathf.Deg2Rad)); var player = Instantiate(playerCube, pos, Quaternion.AngleAxis(-angle, Vector3.up)); player.GetComponent().material.color = playerColors[i]; } SpawnClientCards(); SpawnCommonCards(); onReloadPiles += SpawnCommonCards; onReloadPiles += SpawnClientCards; } // GameObject SpawnCard(Client.Connection conn, string cardKind) { // var cardImages = conn.GetCardImage(cardKind); // var card = Instantiate(cardPrefab, Vector3.zero, Quaternion.identity, handUI.transform); // var front = new Texture2D(1, 1); // front.LoadImage(cardImages.Face.Span.ToArray()); // var back = new Texture2D(1, 1); // back.LoadImage(cardImages.Back.Span.ToArray()); // card.transform.Find("Images").GetComponentsInChildren()[0].texture = front; // card.transform.Find("Images").GetComponentsInChildren()[1].texture = back; // card.transform.localScale = new Vector3(0.15f, 0.15f, 1f); // return card; // } // GameObject SpawnCardInTable(Client.Connection conn, string cardKind, GameObject parent) { // var cardImages = conn.GetCardImage(cardKind); // var card = Instantiate(cardPrefab, Vector3.zero, Quaternion.identity, parent.transform); // var front = new Texture2D(1, 1); // front.LoadImage(cardImages.Face.Span.ToArray()); // var back = new Texture2D(1, 1); // back.LoadImage(cardImages.Back.Span.ToArray()); // card.transform.Find("Images").GetComponentsInChildren()[0].texture = front; // card.transform.Find("Images").GetComponentsInChildren()[1].texture = back; // card.transform.localScale = new Vector3(0.15f, 0.15f, 1f); // card.GetComponent().ThrowCard(parent); // return card; // } void SpawnClientCards() { // var conn = Client.GetConnection(); // if (conn != null) { // var clientPiles = conn.GetPiles(mmc.currentUsername); // foreach (string key in clientPiles["Owned"].Keys) { // var pile = clientPiles["Owned"][key]; // int idx = 0; // foreach(Game.MessageStatus.Types.Card card in pile.Cards) { // var cardGO = SpawnCard(conn, card.Kind.Kind); // if(cardGO != null) { // cardGO.GetComponent().InitData(key, false, idx); // } // idx++; // } // } // } } void SpawnCommonCards() { // var conn = Client.GetConnection(); // if (conn != null) { // var clientPiles = conn.GetPiles(mmc.currentUsername); // foreach (string key in clientPiles["Common"].Keys) { // var pile = clientPiles["Common"][key]; // int idx = 0; // foreach (Game.MessageStatus.Types.Card card in pile.Cards) { // var cardGO = SpawnCardInTable(conn, card.Kind.Kind, key == "placed" ? thrownCards : deck); // if (cardGO != null) { // cardGO.GetComponent().InitData(key, true, idx); // } // idx++; // } // } // } } // public static void ReloadPiles(Dictionary> piles, bool reloadHand = true) { // var cards = GameObject.FindGameObjectsWithTag("Card"); // foreach (GameObject card in cards) { // Destroy(card); // } // onReloadPiles(); // } void Update() {} }