2025-03-12 18:01:57 +09:00

74 lines
2.2 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Stone : MonoBehaviour
{
[SerializeField] private SpriteRenderer stoneMarkerSpriteRenderer;
[SerializeField] private Sprite[] stoneTypeSprites;
[SerializeField] private Sprite[] stoneStateSprites;
private int _index;
private SpriteRenderer _spriteRenderer;
public delegate void OnStoneClicked(int index);
private OnStoneClicked _onStoneClicked;
private void Awake()
{
_spriteRenderer = GetComponent<SpriteRenderer>();
}
//Stone 초기화 함수
public void InitStone(int stoneIndex, OnStoneClicked onStoneClicked)
{
_index = stoneIndex;
SetStone(Enums.StoneType.None);
SetState(Enums.StoneState.None);
_onStoneClicked = onStoneClicked;
}
//Stone 이미지 설정 함수(0: 없음, 1:흑, 2: 백)
public void SetStone(Enums.StoneType stoneType)
{
switch (stoneType)
{
case Enums.StoneType.None:
stoneMarkerSpriteRenderer.sprite = stoneTypeSprites[0];
break;
case Enums.StoneType.Black:
stoneMarkerSpriteRenderer.sprite = stoneTypeSprites[1];
break;
case Enums.StoneType.White:
stoneMarkerSpriteRenderer.sprite = stoneTypeSprites[2];
break;
}
}
//Stone 상태 이미지 설정 함수 (0: 없음, 1: 선택된, 2: 금수, 3: 마지막 배치된)
public void SetState(Enums.StoneState stoneState)
{
switch (stoneState)
{
case Enums.StoneState.None:
_spriteRenderer.sprite = stoneStateSprites[0];
break;
case Enums.StoneState.Selected:
_spriteRenderer.sprite = stoneStateSprites[1];
break;
case Enums.StoneState.Blocked:
_spriteRenderer.sprite = stoneStateSprites[2];
break;
case Enums.StoneState.LastPositioned:
_spriteRenderer.sprite = stoneStateSprites[3];
break;
}
}
private void OnMouseUpAsButton()
{
_onStoneClicked?.Invoke(_index);
}
}