|
|
- 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) { }
- }
|