|
|
|
@ -17,6 +17,7 @@ public class GameLoader : MonoBehaviour { |
|
|
|
public GameObject thrownCards; |
|
|
|
public static MainMenuController mmc; |
|
|
|
public static GameLoader myself; |
|
|
|
public Dictionary<string, Texture2D[]> cardImages = new Dictionary<string, Texture2D[]>(); |
|
|
|
|
|
|
|
void Awake() { |
|
|
|
myself = this; |
|
|
|
@ -43,11 +44,18 @@ public class GameLoader : MonoBehaviour { |
|
|
|
void SpawnCard(Client.ConnectionImpl conn, string cardKind, GameObject parent, System.Action<GameObject> callback) { |
|
|
|
string uuid = Guid.NewGuid().ToString(); |
|
|
|
conn.eventManager.AddHandler("game_card_image_"+uuid, (Game.Image image) => { |
|
|
|
if (cardKind != image.Kind) return; |
|
|
|
var card = Instantiate(cardPrefab, Vector3.zero, Quaternion.identity, parent.transform); |
|
|
|
var front = new Texture2D(1, 1); |
|
|
|
front.LoadImage(image.Face.Span.ToArray()); |
|
|
|
var back = new Texture2D(1, 1); |
|
|
|
if (cardImages.ContainsKey(cardKind)) { |
|
|
|
front = cardImages[cardKind][0]; |
|
|
|
back = cardImages[cardKind][1]; |
|
|
|
} else { |
|
|
|
front.LoadImage(image.Face.Span.ToArray()); |
|
|
|
back.LoadImage(image.Back.Span.ToArray()); |
|
|
|
cardImages.Add(cardKind, new Texture2D[] { front, back }); |
|
|
|
} |
|
|
|
card.transform.Find("Images").GetComponentsInChildren<RawImage>()[0].texture = front; |
|
|
|
card.transform.Find("Images").GetComponentsInChildren<RawImage>()[1].texture = back; |
|
|
|
card.transform.localScale = new Vector3(0.15f, 0.15f, 1f); |
|
|
|
@ -66,8 +74,10 @@ public class GameLoader : MonoBehaviour { |
|
|
|
var pile = clientPiles[key]; |
|
|
|
int idx = 0; |
|
|
|
foreach (Game.GameStatus.Types.Card card in pile.Cards) { |
|
|
|
string key2 = key; |
|
|
|
int idx2 = idx; |
|
|
|
SpawnCard(conn, card.Kind.Kind, handUI, (GameObject card) => { |
|
|
|
card.GetComponent<Card>().InitData(key, false, idx); |
|
|
|
card.GetComponent<Card>().InitData(key2, false, idx2); |
|
|
|
}); |
|
|
|
idx++; |
|
|
|
} |
|
|
|
@ -83,9 +93,11 @@ public class GameLoader : MonoBehaviour { |
|
|
|
var pile = clientPiles[key]; |
|
|
|
int idx = 0; |
|
|
|
foreach (Game.GameStatus.Types.Card card in pile.Cards) { |
|
|
|
string key2 = key; |
|
|
|
int idx2 = idx; |
|
|
|
SpawnCard(conn, card.Kind.Kind, key == "placed" ? thrownCards : deck, (GameObject card) => { |
|
|
|
card.GetComponent<Card>().ThrowCard(key == "placed" ? thrownCards : deck); |
|
|
|
card.GetComponent<Card>().InitData(key, true, idx); |
|
|
|
card.GetComponent<Card>().InitData(key2, true, idx2); |
|
|
|
card.GetComponent<Card>().ThrowCard(key2 == "placed" ? thrownCards : deck); |
|
|
|
}); |
|
|
|
idx++; |
|
|
|
} |
|
|
|
|