TurnBasedStrategyCourse/Assets/Scripts/Actions/SpinAction.cs

35 lines
996 B
C#

using System;
using System.Collections.Generic;
using Grid;
using UnityEngine;
namespace Actions {
public class SpinAction : BaseAction {
private float totalSpinAmount;
private void Update() {
if (!IsActive) return;
float spinAddAmount = 360f * Time.deltaTime;
transform.eulerAngles += new Vector3(0, spinAddAmount, 0);
totalSpinAmount += spinAddAmount;
if (!(totalSpinAmount >= 360f)) return;
IsActive = false;
OnActionComplete();
}
public override void TakeAction(GridPosition gridPosition, Action onSpinComplete) {
OnActionComplete = onSpinComplete;
IsActive = true;
totalSpinAmount = 0f;
}
public override List<GridPosition> GetValidActionGridPositionList() => new() { Unit.GridPosition };
public override string GetActionName() => "Spin";
public override int GetActionPointsCost() => 2;
}
}