chunk 1: core gameplay scripts scenes runtime assets
This commit is contained in:
84
Assets/Scripts/SpecialMoveCardSystem/UIController_Pocket.cs
Normal file
84
Assets/Scripts/SpecialMoveCardSystem/UIController_Pocket.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace SpecialMoveCards
|
||||
{
|
||||
/// <summary>
|
||||
/// Simple UI binder for two pocket slots using two Image components.
|
||||
/// </summary>
|
||||
public class UIController_Pocket : MonoBehaviour
|
||||
{
|
||||
[Header("Images")]
|
||||
public Image slot1Image;
|
||||
public Image slot2Image;
|
||||
// We'll draw card sprites on separate child Images so the assigned slot Images
|
||||
// can remain as the background visuals.
|
||||
private Image slot1Content;
|
||||
private Image slot2Content;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
EnsureContentImage(ref slot1Content, slot1Image, "CardContent1");
|
||||
EnsureContentImage(ref slot2Content, slot2Image, "CardContent2");
|
||||
}
|
||||
|
||||
private static void EnsureContentImage(ref Image content, Image baseImage, string name)
|
||||
{
|
||||
if (content != null || baseImage == null) return;
|
||||
var go = new GameObject(name, typeof(RectTransform));
|
||||
var rt = go.GetComponent<RectTransform>();
|
||||
rt.SetParent(baseImage.transform, worldPositionStays: false);
|
||||
rt.anchorMin = Vector2.zero;
|
||||
rt.anchorMax = Vector2.one;
|
||||
rt.offsetMin = Vector2.zero;
|
||||
rt.offsetMax = Vector2.zero;
|
||||
content = go.AddComponent<Image>();
|
||||
content.raycastTarget = false; // let background handle clicks if needed
|
||||
content.preserveAspect = true;
|
||||
content.enabled = false; // hidden until a card is present
|
||||
// Ensure content renders on top of the background
|
||||
go.transform.SetAsLastSibling();
|
||||
}
|
||||
|
||||
public void UpdateUI(CardData[] cards)
|
||||
{
|
||||
// Make sure content images exist (in case references were added at runtime)
|
||||
if (slot1Content == null && slot1Image != null) EnsureContentImage(ref slot1Content, slot1Image, "CardContent1");
|
||||
if (slot2Content == null && slot2Image != null) EnsureContentImage(ref slot2Content, slot2Image, "CardContent2");
|
||||
|
||||
// Slot 1 content (background image stays untouched)
|
||||
if (slot1Content)
|
||||
{
|
||||
if (cards != null && cards.Length > 0 && cards[0] != null)
|
||||
{
|
||||
slot1Content.enabled = true;
|
||||
slot1Content.sprite = cards[0].icon;
|
||||
slot1Content.color = cards[0].color;
|
||||
}
|
||||
else
|
||||
{
|
||||
// No card: hide only the content sprite; keep background visible
|
||||
slot1Content.sprite = null;
|
||||
slot1Content.enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Slot 2 content (background image stays untouched)
|
||||
if (slot2Content)
|
||||
{
|
||||
if (cards != null && cards.Length > 1 && cards[1] != null)
|
||||
{
|
||||
slot2Content.enabled = true;
|
||||
slot2Content.sprite = cards[1].icon;
|
||||
slot2Content.color = cards[1].color;
|
||||
}
|
||||
else
|
||||
{
|
||||
// No card: hide only the content sprite; keep background visible
|
||||
slot2Content.sprite = null;
|
||||
slot2Content.enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user