Browse Source

Rework card system with uuids

new_protocol
KeyKoder 5 years ago
parent
commit
6516c99f88
  1. 26
      unity/Assets/Prefabs/CardCanvas.prefab
  2. 8
      unity/Assets/Prefabs/CardPrefab.prefab
  3. 1
      unity/Assets/Scenes/SampleScene.unity
  4. 80
      unity/Assets/Scripts/Card.cs
  5. 1
      unity/Assets/Scripts/Client.cs
  6. 200
      unity/Assets/Scripts/GameLoader.cs

26
unity/Assets/Prefabs/CardCanvas.prefab

@ -10,11 +10,10 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 5463950459347836266} - component: {fileID: 5463950459347836266}
- component: {fileID: 5463950459347836267} - component: {fileID: 5463950459347836267}
- component: {fileID: 5463950459347836260}
- component: {fileID: 5463950459347836261} - component: {fileID: 5463950459347836261}
m_Layer: 5 m_Layer: 5
m_Name: CardCanvas m_Name: CardCanvas
m_TagString: Untagged m_TagString: Card
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
@ -59,29 +58,6 @@ Canvas:
m_SortingLayerID: 0 m_SortingLayerID: 0
m_SortingOrder: 0 m_SortingOrder: 0
m_TargetDisplay: 0 m_TargetDisplay: 0
--- !u!114 &5463950459347836260
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5463950459347836262}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!114 &5463950459347836261 --- !u!114 &5463950459347836261
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

8
unity/Assets/Prefabs/CardPrefab.prefab

@ -159,6 +159,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Navigation: m_Navigation:
m_Mode: 3 m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0} m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0} m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0} m_SelectOnLeft: {fileID: 0}
@ -433,6 +434,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Navigation: m_Navigation:
m_Mode: 3 m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0} m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0} m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0} m_SelectOnLeft: {fileID: 0}
@ -488,7 +490,7 @@ GameObject:
- component: {fileID: -8289338857814124153} - component: {fileID: -8289338857814124153}
m_Layer: 5 m_Layer: 5
m_Name: CardPrefab m_Name: CardPrefab
m_TagString: Card m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
m_StaticEditorFlags: 0 m_StaticEditorFlags: 0
@ -536,6 +538,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Navigation: m_Navigation:
m_Mode: 0 m_Mode: 0
m_WrapAround: 0
m_SelectOnUp: {fileID: 0} m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0} m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0} m_SelectOnLeft: {fileID: 0}
@ -580,3 +583,6 @@ MonoBehaviour:
cardCanvas: {fileID: 5463950459347836262, guid: fc20f9d5ae7f3364d8425ba33a8d0c81, type: 3} cardCanvas: {fileID: 5463950459347836262, guid: fc20f9d5ae7f3364d8425ba33a8d0c81, type: 3}
preparedCard: 0 preparedCard: 0
thrown: 0 thrown: 0
inPileName:
isInCommonPile: 0
idx: 0

1
unity/Assets/Scenes/SampleScene.unity

@ -209,6 +209,7 @@ MonoBehaviour:
- {r: 0.5613208, g: 0.6479967, b: 1, a: 1} - {r: 0.5613208, g: 0.6479967, b: 1, a: 1}
- {r: 0.41706753, g: 0.12615702, b: 0.5943396, a: 1} - {r: 0.41706753, g: 0.12615702, b: 0.5943396, a: 1}
cardPrefab: {fileID: 8916404675478908303, guid: 5a10ceea9da08e942b8e357fed3ca916, type: 3} cardPrefab: {fileID: 8916404675478908303, guid: 5a10ceea9da08e942b8e357fed3ca916, type: 3}
cardCanvas: {fileID: 5463950459347836262, guid: fc20f9d5ae7f3364d8425ba33a8d0c81, type: 3}
handUI: {fileID: 1854025636} handUI: {fileID: 1854025636}
deck: {fileID: 378514925} deck: {fileID: 378514925}
thrownCards: {fileID: 171776933} thrownCards: {fileID: 171776933}

80
unity/Assets/Scripts/Card.cs

@ -13,16 +13,18 @@ public class Card : MonoBehaviour {//, IPointerEnterHandler, IPointerExitHandler
public static GameObject cardBeingPrepared; public static GameObject cardBeingPrepared;
public bool preparedCard = false; public bool preparedCard = false;
public static Vector3 preparingOffset = new Vector3(0f,40f); public static Vector3 preparingOffset = new Vector3(0f,40f);
public bool thrown = false;
private GameObject actionMenu; private GameObject actionMenu;
private static GameObject thrownCards; private static GameObject thrownCards;
private static float yOffsetTable = 0.51f/2; private static float yOffsetTable = 0.51f/2;
private MainMenuController mmc; private MainMenuController mmc;
private Quaternion currentRotation;
public string inPileName; public string inPileName;
public bool isInCommonPile; public bool isInCommonPile;
public int idx; public int idx;
public string uuid;
void Start() { void Start() {
currentRotation = Quaternion.identity;
mmc = GameLoader.mmc; mmc = GameLoader.mmc;
cardPreview = GameObject.FindGameObjectsWithTag("CardPreview")[0]; cardPreview = GameObject.FindGameObjectsWithTag("CardPreview")[0];
thrownCards = GameObject.Find("ThrownCards"); thrownCards = GameObject.Find("ThrownCards");
@ -31,31 +33,20 @@ public class Card : MonoBehaviour {//, IPointerEnterHandler, IPointerExitHandler
GetComponent<Button>().onClick.AddListener(OnClickCard); GetComponent<Button>().onClick.AddListener(OnClickCard);
} }
public void InitData(string pileName, bool isCommonPile, int index) {
inPileName = pileName;
isInCommonPile = isCommonPile;
idx = index;
}
// Card Previewing Code // Card Previewing Code
// public void OnPointerEnter(PointerEventData edata) { // public void OnPointerEnter(PointerEventData edata) {
// if(cardPreview && !cardBeingPrepared) { // if(cardPreview && !cardBeingPrepared) {
// SetPreview(); // SetPreview();
// } // }
// } // }
//public void OnPointerExit(PointerEventData edata) { //public void OnPointerExit(PointerEventData edata) {
// if(cardPreview && !cardBeingPrepared) { // if(cardPreview && !cardBeingPrepared) {
// HidePreview(); // HidePreview();
// } // }
// } // }
public void OnClickCard() { public void OnClickCard() {
// var conn = Client.GetConnection(); if ((!preparingCard || cardBeingPrepared != gameObject) && !IsThrown()) {
// if (conn != null) {
// Debug.Log(conn.GetLobby());
// Debug.Log(conn.CreateLobby());
// }
if ((!preparingCard || cardBeingPrepared != gameObject) && !thrown) {
cardBeingPrepared = gameObject; cardBeingPrepared = gameObject;
//SetPreview(); //SetPreview();
@ -63,13 +54,15 @@ public class Card : MonoBehaviour {//, IPointerEnterHandler, IPointerExitHandler
} else { } else {
var conn = Client.GetConnection(); var conn = Client.GetConnection();
if (conn != null) { if (conn != null) {
conn.OnClickCard(inPileName, isInCommonPile, idx, mmc.currentUsername); CardProperties card = GameLoader.GetCard(uuid);
PileProperties pile = GameLoader.GetPile(card.pileName);
conn.OnClickCard(pile.name, pile.owner == "", card.idx, mmc.currentUsername);
} }
} }
} }
public void Update() { public void Update() {
if(cardBeingPrepared == gameObject && !thrown) { if(cardBeingPrepared == gameObject && !IsThrown()) {
if (!preparedCard) { if (!preparedCard) {
transform.position += preparingOffset; transform.position += preparingOffset;
preparedCard = true; preparedCard = true;
@ -91,29 +84,42 @@ public class Card : MonoBehaviour {//, IPointerEnterHandler, IPointerExitHandler
private void HidePreview() { private void HidePreview() {
cardPreview.GetComponentsInChildren<RawImage>()[0].enabled = false; cardPreview.GetComponentsInChildren<RawImage>()[0].enabled = false;
} }
public void ThrowCard(GameObject pos = null) { //public void ThrowCard() {
if (pos == null) pos = thrownCards; // GameObject pos = GameLoader.GetPile(GameLoader.GetCard(uuid).pileName).gameObject;
var canvas = Instantiate(cardCanvas, pos.transform.position+new Vector3(0, yOffsetTable + pos.transform.childCount * 0.01f, 0), transform.rotation); // var canvas = Instantiate(cardCanvas, pos.transform.position+new Vector3(0, yOffsetTable + pos.transform.childCount * 0.0075f, 0), transform.rotation);
canvas.GetComponent<Canvas>().worldCamera = Camera.main; // canvas.GetComponent<Canvas>().worldCamera = Camera.main;
var newCard = Instantiate(gameObject, Vector3.zero, Quaternion.identity, canvas.transform); // var newCard = Instantiate(gameObject, Vector3.zero, Quaternion.identity, canvas.transform);
newCard.transform.localScale = Vector3.one; // newCard.transform.localScale = Vector3.one;
newCard.GetComponent<Card>().thrown = true; // newCard.GetComponent<Card>().thrown = true;
newCard.GetComponent<Card>().inPileName = "placed"; // newCard.GetComponent<Card>().inPileName = inPileName;
newCard.GetComponent<Card>().idx = pos.transform.childCount; // newCard.GetComponent<Card>().idx = pos.transform.childCount-1;
newCard.GetComponent<Card>().isInCommonPile = true; // newCard.GetComponent<Card>().isInCommonPile = true;
canvas.transform.SetParent(pos.transform); // canvas.transform.SetParent(pos.transform);
canvas.tag = "ThrownCard"; // canvas.tag = "ThrownCard";
canvas.transform.localScale = new Vector3(0.01f, 0.01f); // canvas.transform.localScale = new Vector3(0.01f, 0.01f);
canvas.transform.Rotate(new Vector3(90f, 0f, 0f)); // if (!thrown) {
canvas.transform.Rotate(new Vector3(0f, 0f, Random.Range(-20, 20))); // canvas.transform.Rotate(new Vector3(90f, 0f, 0f));
Destroy(gameObject); // canvas.transform.Rotate(new Vector3(0f, 0f, Random.Range(-20, 20)));
// }else {
// canvas.transform.rotation = currentRotation;
// }
// newCard.GetComponent<Card>().currentRotation = canvas.transform.rotation;
// Destroy(gameObject);
//}
public bool IsThrown() {
CardProperties card = GameLoader.GetCard(uuid);
PileProperties pile = GameLoader.GetPile(card.pileName);
return pile.owner == "";
} }
public void DoContextualAction() { public void DoContextualAction() {
if (preparedCard) { if (preparedCard) {
var conn = Client.GetConnection(); var conn = Client.GetConnection();
if (conn != null) { if (conn != null) {
conn.OnClickCard(inPileName, isInCommonPile, idx, mmc.currentUsername); CardProperties card = GameLoader.GetCard(uuid);
PileProperties pile = GameLoader.GetPile(card.pileName);
conn.OnClickCard(pile.name, pile.owner == "", card.idx, mmc.currentUsername);
} }
} }
} }

1
unity/Assets/Scripts/Client.cs

@ -55,7 +55,6 @@ public class Client : MonoBehaviour {
public void Update() { public void Update() {
Protocol.ServerClientPacket p = null; Protocol.ServerClientPacket p = null;
while (queue.TryDequeue(out p)) { while (queue.TryDequeue(out p)) {
Debug.Log("Message " + p.DataCase);
switch (p.DataCase) { switch (p.DataCase) {
case Protocol.ServerClientPacket.DataOneofCase.ReturnName: { case Protocol.ServerClientPacket.DataOneofCase.ReturnName: {
var v = new Action<Common.Name>[this.returnNameHandlers.Count]; var v = new Action<Common.Name>[this.returnNameHandlers.Count];

200
unity/Assets/Scripts/GameLoader.cs

@ -1,10 +1,26 @@
using System; using System;
using System.Linq;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using Random = UnityEngine.Random; using Random = UnityEngine.Random;
public class PileProperties {
public string name;
public string owner;
public Game.GameStatus.Types.Card[] cards;
public GameObject gameObject;
}
public class CardProperties {
public Quaternion rotation;
public string pileName;
public int idx;
public string kind;
public GameObject gameObject;
}
public class GameLoader : MonoBehaviour { public class GameLoader : MonoBehaviour {
public GameObject table; public GameObject table;
public GameObject playerCube; public GameObject playerCube;
@ -12,105 +28,169 @@ public class GameLoader : MonoBehaviour {
public int playerCount; public int playerCount;
public Color[] playerColors; public Color[] playerColors;
public GameObject cardPrefab; public GameObject cardPrefab;
public GameObject cardCanvas;
public GameObject handUI; public GameObject handUI;
public GameObject deck; public GameObject deck;
public GameObject thrownCards; public GameObject thrownCards;
private static float yOffsetTable = 0.51f / 2;
public static MainMenuController mmc; public static MainMenuController mmc;
public static GameLoader myself; public static GameLoader myself;
public Dictionary<string, Texture2D[]> cardImages = new Dictionary<string, Texture2D[]>(); public Dictionary<string, Texture2D[]> cardImages = new Dictionary<string, Texture2D[]>();
public static Dictionary<string, CardProperties> cardRegistry = new Dictionary<string, CardProperties>();
public static Dictionary<string, PileProperties> pileRegistry = new Dictionary<string, PileProperties>();
private Client.ConnectionImpl conn;
void Awake() { void Awake() {
myself = this; myself = this;
} }
void Start() { void Start() {
conn = Client.GetConnection();
mmc = FindObjectOfType<MainMenuController>(); mmc = FindObjectOfType<MainMenuController>();
mmc.gameObject.SetActive(false); mmc.gameObject.SetActive(false);
var angleDelta = (270) / playerCount; var angleDelta = (270) / playerCount;
var dst = 15; var dst = 15;
var angleOffset = 45; var angleOffset = 45;
for (int i=0;i<playerCount;i++) { for (int i = 0; i < playerCount; i++) {
if (i == myIndex) if (i == myIndex)
continue; continue;
var offsetMult = (i - myIndex) > 0 ? 1 : -1; var offsetMult = (i - myIndex) > 0 ? 1 : -1;
var angle = (angleDelta * (i - myIndex) + angleOffset * offsetMult); 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)); 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)); var player = Instantiate(playerCube, pos, Quaternion.AngleAxis(-angle, Vector3.up));
player.GetComponent<Renderer>().material.color = playerColors[i]; player.GetComponent<Renderer>().material.color = playerColors[i];
} }
ReloadPiles(); }
public static void RegisterCard(string uuid, CardProperties properties) {
if (!cardRegistry.ContainsKey(uuid)) cardRegistry.Add(uuid, properties);
}
public static void UpdateCard(string uuid, CardProperties properties) {
if (cardRegistry.ContainsKey(uuid)) cardRegistry[uuid] = properties;
}
public static CardProperties GetCard(string uuid) {
if (cardRegistry.ContainsKey(uuid)) return cardRegistry[uuid];
else return null;
}
public static void DeleteCard(string uuid) {
if (cardRegistry.ContainsKey(uuid)) cardRegistry.Remove(uuid);
} }
void SpawnCard(Client.ConnectionImpl conn, string cardKind, GameObject parent, System.Action<GameObject> callback) {
string uuid = Guid.NewGuid().ToString(); public static void RegisterPile(string name, PileProperties properties) {
conn.eventManager.AddHandler("game_card_image_"+uuid, (Game.Image image) => { if (!pileRegistry.ContainsKey(name)) pileRegistry.Add(name, properties);
if (cardKind != image.Kind) return; }
var card = Instantiate(cardPrefab, Vector3.zero, Quaternion.identity, parent.transform); public static void UpdatePile(string name, PileProperties properties) {
var front = new Texture2D(1, 1); if (pileRegistry.ContainsKey(name)) pileRegistry[name] = properties;
var back = new Texture2D(1, 1); }
if (cardImages.ContainsKey(cardKind)) { public static PileProperties GetPile(string name) {
front = cardImages[cardKind][0]; if (pileRegistry.ContainsKey(name)) return pileRegistry[name];
back = cardImages[cardKind][1]; else return null;
} else { }
front.LoadImage(image.Face.Span.ToArray()); public static void DeletePile(string name) {
back.LoadImage(image.Back.Span.ToArray()); if (pileRegistry.ContainsKey(name)) pileRegistry.Remove(name);
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);
callback.Invoke(card);
conn.eventManager.RemoveHandler(Protocol.ServerClientPacket.DataOneofCase.ReturnCardImage, "game_card_image_"+uuid);
});
conn.GetCardImage(cardKind);
} }
void SpawnClientCards() { bool SpawnCard(string uuid, string cardKind, int index, string pileName, bool visible, Game.Image image) {
var conn = Client.GetConnection(); if (image != null && cardKind != image.Kind) return false;
if (conn != null) {
var clientPiles = conn.GetPlayerPiles(mmc.currentUsername); PileProperties pileProps = GetPile(pileName);
if (clientPiles == null) return; var card = Instantiate(cardPrefab, Vector3.zero, Quaternion.identity, pileProps.gameObject.transform);
foreach (string key in clientPiles.Keys) { var front = new Texture2D(1, 1);
var pile = clientPiles[key]; var back = new Texture2D(1, 1);
int idx = 0; if (cardImages.ContainsKey(cardKind)) {
foreach (Game.GameStatus.Types.Card card in pile.Cards) { front = cardImages[cardKind][0];
string key2 = key; back = cardImages[cardKind][1];
int idx2 = idx; } else {
SpawnCard(conn, card.Kind.Kind, handUI, (GameObject card) => { front.LoadImage(image.Face.Span.ToArray());
card.GetComponent<Card>().InitData(key2, false, idx2); back.LoadImage(image.Back.Span.ToArray());
}); cardImages.Add(cardKind, new Texture2D[] { front, back });
idx++; }
} 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);
card.GetComponent<Card>().uuid = uuid;
CardProperties cardProps = GetCard(uuid);
GameObject canvas = null;
if (pileProps.owner == "") {
canvas = Instantiate(cardCanvas, pileProps.gameObject.transform.position + new Vector3(0, yOffsetTable + pileProps.gameObject.transform.childCount * 0.0075f, 0), cardProps != null ? cardProps.rotation : Quaternion.identity);
canvas.GetComponent<Canvas>().worldCamera = Camera.main;
card.transform.localScale = Vector3.one;
card.transform.SetParent(canvas.transform, false);
canvas.transform.SetParent(pileProps.gameObject.transform);
canvas.tag = "ThrownCard";
canvas.transform.localScale = new Vector3(0.01f, 0.01f);
if (canvas.transform.rotation == Quaternion.identity) {
canvas.transform.Rotate(new Vector3(90f, 0f, 0f));
canvas.transform.Rotate(new Vector3(0f, 0f, Random.Range(-20, 20)));
} }
} }
if(!visible) {
card.transform.GetChild(1).Rotate(0, 180f, 0);
}
if (cardProps != null) {
if (cardProps.kind != cardKind) cardProps.kind = cardKind;
if (cardProps.idx != index) cardProps.idx = index;
if (cardProps.pileName != pileName) cardProps.pileName = pileName;
if (cardProps.gameObject != card) cardProps.gameObject = card;
if (canvas != null && cardProps.rotation != canvas.transform.rotation) cardProps.rotation = canvas.transform.rotation;
UpdateCard(uuid, cardProps);
} else {
cardProps = new CardProperties { kind = cardKind, idx = index, pileName = pileName, rotation = canvas != null ? canvas.transform.rotation : Quaternion.identity, gameObject = card };
RegisterCard(uuid, cardProps);
}
return true;
} }
void SpawnCommonCards() {
var conn = Client.GetConnection(); void SpawnCards() {
if (conn != null) { foreach (string key in pileRegistry.Keys) {
var clientPiles = conn.GetCommonPiles(); int idx = 0;
if (clientPiles == null) return; foreach (Game.GameStatus.Types.Card card in pileRegistry[key].cards) {
foreach (string key in clientPiles.Keys) { if (cardImages.ContainsKey(card.Kind.Kind)) {
var pile = clientPiles[key]; SpawnCard(card.Uuid, card.Kind.Kind, idx, key, card.Visible, null);
int idx = 0; } else {
foreach (Game.GameStatus.Types.Card card in pile.Cards) { string uuid = card.Uuid;
string key2 = key; string kind = card.Kind.Kind;
int idx2 = idx; int idx2 = idx;
SpawnCard(conn, card.Kind.Kind, key == "placed" ? thrownCards : deck, (GameObject card) => { string key2 = key;
card.GetComponent<Card>().InitData(key2, true, idx2); bool visible = card.Visible;
card.GetComponent<Card>().ThrowCard(key2 == "placed" ? thrownCards : deck); conn.eventManager.AddHandler("game_card_image_" + uuid, (Game.Image image) => {
if(!SpawnCard(uuid, kind, idx2, key2, visible, image)) return;
conn.eventManager.RemoveHandler(Protocol.ServerClientPacket.DataOneofCase.ReturnCardImage, "game_card_image_" + uuid);
}); });
idx++; conn.GetCardImage(card.Kind.Kind);
} }
idx++;
} }
} }
} }
public static void ReloadPiles() { public static void ReloadPiles() {
if (myself == null) return; if (myself == null) return;
var cards = GameObject.FindGameObjectsWithTag("Card");
foreach (GameObject card in cards) { // Hardcoded values for pile gameobjects
Destroy(card); var piles = myself.conn.GetPlayerPiles(mmc.currentUsername);
foreach(var pair in piles.Keys.Zip(piles.Values, (key, value) => new dynamic[] { key, value })) {
string key = (string)pair[0];
Game.GameStatus.Types.Pile value = (Game.GameStatus.Types.Pile)pair[1];
if(GetPile(key+mmc.currentUsername) == null) RegisterPile(key + mmc.currentUsername, new PileProperties { name = key, owner = mmc.currentUsername, cards = value.Cards.ToArray(), gameObject = myself.handUI});
else UpdatePile(key + mmc.currentUsername, new PileProperties { name = key, owner = mmc.currentUsername, cards = value.Cards.ToArray(), gameObject = myself.handUI });
}
piles = myself.conn.GetCommonPiles();
foreach (var pair in piles.Keys.Zip(piles.Values, (key, value) => new dynamic[] { key, value })) {
string key = (string)pair[0];
Game.GameStatus.Types.Pile value = (Game.GameStatus.Types.Pile)pair[1];
if (GetPile(key + "_common") == null) RegisterPile(key + "_common", new PileProperties { name = key, owner = "", cards = value.Cards.ToArray(), gameObject = key == "placed" ? myself.thrownCards : myself.deck });
else UpdatePile(key+"_common", new PileProperties { name = key, owner = "", cards = value.Cards.ToArray(), gameObject = key == "placed" ? myself.thrownCards : myself.deck });
}
var cards = FindObjectsOfType<Card>();
foreach (Card card in cards) {
if (card.IsThrown()) Destroy(card.transform.parent.gameObject);
else Destroy(card.gameObject);
} }
myself.SpawnCommonCards(); myself.SpawnCards();
myself.SpawnClientCards();
} }
} }

Loading…
Cancel
Save