using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// Logic block which deals with moving a character in a direction /// [CreateAssetMenu(menuName = "Major Project/Move Block")] [System.Serializable] public class Move : LogicBlock { [SerializeField] protected Direction direction = Direction.Forward; #region Class Functions /// /// Implementation of BlockLogic, moves the player forward /// /// Player to move protected override void BlockLogic(Character player, float animationTime) { player.Move(direction, animationTime); } public override void CopyToken(BlockToken token) { base.CopyToken(token); direction = ((DirectionToken)token).direction; } public override BlockToken ToToken(BlockToken token = null) { if (token == null) token = new DirectionToken(this); DirectionToken retVal = (DirectionToken) base.ToToken(token); retVal.direction = direction; return retVal; } #endregion Class Functions } [System.Serializable] public class DirectionToken : BlockToken { public Direction direction; public DirectionToken(LogicBlock block) : base(block) { } }