using System.Collections;
|
|
using UnityEngine;
|
|
|
|
[CreateAssetMenu(menuName = "Major Project/Pick Ups/Replace Block")]
|
|
[System.Serializable]
|
|
public class Replace : LogicBlock
|
|
{
|
|
public GameObject blockPrefab;
|
|
|
|
public override Block GetEndBlock(Block startBlock, Transform transform, LayerMask layerMask)
|
|
{
|
|
return startBlock;
|
|
}
|
|
|
|
protected override IEnumerator BlockLogic(Character player, float animationTime, bool useBlockDirection = false)
|
|
{
|
|
Block oldBlock = player.CurrentBlock;
|
|
Transform parent = oldBlock.transform.parent;
|
|
Vector3 position = oldBlock.position;
|
|
|
|
Block newBlock = Instantiate(blockPrefab, parent).GetComponent<Block>();
|
|
newBlock.transform.position = position;
|
|
|
|
yield return player.StartCoroutine(player.MoveToBlock(newBlock, Character.Animation.None, 0.0f));
|
|
Destroy(oldBlock);
|
|
}
|
|
|
|
public override void CopyToken(BlockToken token)
|
|
{
|
|
base.CopyToken(token);
|
|
blockPrefab= Resources.Load<GameObject>(((ReplaceToken)token).prefabName);
|
|
}
|
|
|
|
public override BlockToken ToToken(BlockToken token = null)
|
|
{
|
|
if (token == null)
|
|
token = new ReplaceToken(this);
|
|
|
|
Debug.Log(base.ToToken(token).GetType().Name);
|
|
ReplaceToken retVal = (ReplaceToken)base.ToToken(token);
|
|
retVal.prefabName = blockPrefab.name;
|
|
|
|
return retVal;
|
|
}
|
|
}
|
|
|
|
[System.Serializable]
|
|
public class ReplaceToken : BlockToken
|
|
{
|
|
public string prefabName;
|
|
public ReplaceToken(LogicBlock block) : base(block) { }
|
|
}
|