97 lines
2.1 KiB
C#
97 lines
2.1 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class BlockSlot : MonoBehaviour
|
|
{
|
|
public BlockUnit MyUnit => mUnit;
|
|
public bool HasUnit => mUnit != null;
|
|
public int Index => mIndex;
|
|
|
|
private Action<int> mDelPickUp;
|
|
private Action<int> mDelMove;
|
|
private Action<int> mDelDrowDown;
|
|
|
|
[SerializeField] MeshRenderer mRdrFloor;
|
|
|
|
private BoxCollider mCol;
|
|
private BlockUnit mUnit;
|
|
|
|
private int mIndex;
|
|
|
|
private void Awake()
|
|
{
|
|
mUnit = GetComponentInChildren<BlockUnit>();
|
|
}
|
|
|
|
public void Init(int pIndex, Action<int> pDelPickUp = null, Action<int> pDelMove = null, Action<int> pDelDropDown = null)
|
|
{
|
|
if (mCol == null)
|
|
{
|
|
mCol = GetComponent<BoxCollider>();
|
|
}
|
|
|
|
mIndex = pIndex;
|
|
|
|
SetDelegate(pDelPickUp, pDelMove, pDelDropDown);
|
|
|
|
SetState(BlockState.Normal);
|
|
}
|
|
|
|
public void SetDelegate(Action<int> pDelPickUp = null, Action<int> pDelMove = null, Action<int> pDelDropDown = null)
|
|
{
|
|
mDelPickUp = pDelPickUp;
|
|
mDelMove = pDelMove;
|
|
mDelDrowDown = pDelDropDown;
|
|
|
|
mCol.enabled = mDelPickUp != null;
|
|
}
|
|
|
|
public void ShowFloor(bool pShow)
|
|
{
|
|
mRdrFloor.enabled = pShow;
|
|
}
|
|
|
|
public void SetUnit(BlockUnit pUnit)
|
|
{
|
|
mUnit = pUnit;
|
|
if (mUnit != null)
|
|
{
|
|
mUnit.SetGroupID(mIndex);
|
|
mUnit.transform.SetParent(transform);
|
|
Utils.NormalizeGameObject(mUnit.gameObject);
|
|
}
|
|
}
|
|
|
|
public void SetState(BlockState pState)
|
|
{
|
|
mRdrFloor.gameObject.SetActive(pState != BlockState.Normal);
|
|
Material tMat = ResourceManager.Instance.LoadRes<Material>(Const.Path.GetBlockMat(pState));
|
|
mRdrFloor.material = tMat;
|
|
}
|
|
|
|
private void OnMouseDown()
|
|
{
|
|
mDelPickUp?.Invoke(mIndex);
|
|
}
|
|
|
|
private void OnMouseDrag()
|
|
{
|
|
mDelMove?.Invoke(mIndex);
|
|
}
|
|
|
|
private void OnMouseUp()
|
|
{
|
|
mDelDrowDown?.Invoke(mIndex);
|
|
}
|
|
}
|
|
|
|
public enum BlockState
|
|
{
|
|
Normal,
|
|
Picked,
|
|
Movable,
|
|
Mergable,
|
|
Forbidden
|
|
} |