// Triggered when the card at this hand index was changed. private void onCardChanged(int index) { if (index == HandIndex) { var handState = SL.Get <GameModel>().MyPlayer.CardState.Hand; // EARLY OUT! // if (handState == null) { Debug.LogWarning("Hand is null"); return; } // Destroy the old figurine. destroyFigurine(); var data = handState[index]; _figurine = createFigurineFromDefinition(data); if (_figurine != null) { _figurine.FigurinePlacedEvent.AddListener(onFigurinePlaced); } // Update if we have enough mana to use this figurine. onManaChanged(); CardChangedEvent.Invoke(); } }
private void destroyFigurine() { if (_figurine != null) { // Destroy the figurine. _figurine.FigurinePlacedEvent.RemoveListener(onFigurinePlaced); Destroy(_figurine.gameObject); _figurine = null; } }
private CardFigurine createFigurineFromDefinition(CardData data) { CardFigurine figurine = null; if (_figurinePrefab != null && data != null) { // Parent to this slot. figurine = Utils.Instantiate(_figurinePrefab, transform); if (figurine != null) { figurine.transform.localPosition = Vector3.zero; figurine.transform.localRotation = Quaternion.identity; figurine.Init(data); } } return(figurine); }