gather-and-defend/Assets/Scripts/AnimationEntity.cs
Felix Boucher 7dba305d30 fixes to berry harvesting
- berry harvester appears on bush tiles
- change berry resource for food instead
- some structural change to reduce bugs
2023-11-12 18:26:36 -05:00

103 lines
2.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AnimationEntity : MonoBehaviour
{
enum EntityAnimationState
{
Idle = 0,
Walking = 1,
Attacking = 2,
Dying = 3
}
private EntityAnimationState entityState;
private Animator _animatorEntity;
private bool _doSomething = false;
private bool _isDead = false;
private bool _isWalking = false;
void Start()
{
AttackSpeedMultiplier = 10;
SpeedMultiplier = 10;
_animatorEntity = GetComponentInChildren<Animator>();
}
void Update()
{
if (!_animatorEntity) return;
if (_doSomething && _animatorEntity.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1f)
{
PlayIdleAnim();
_doSomething = false;
_isWalking = false;
}
_animatorEntity.speed = GetAnimatorSpeed();
}
private float GetAnimatorSpeed()
{
return entityState switch
{
EntityAnimationState.Attacking => AttackSpeedMultiplier,
EntityAnimationState.Walking => SpeedMultiplier,
_ => 1,
};
}
public void PlayIdleAnim()
{
if(!_isDead) {
_animatorEntity.speed = 1;
_animatorEntity.Play("idle", 0, 0f);
entityState = EntityAnimationState.Idle;
}
}
public void PlayWalkAnim()
{
if(!_isDead) {
_animatorEntity.speed = SpeedMultiplier;
_animatorEntity.Play("walk", 0, 0f);
entityState = EntityAnimationState.Walking;
_isWalking = true;
}
}
public void PlayAttackAnim()
{
if(!_isDead) {
_animatorEntity.speed = AttackSpeedMultiplier;
_animatorEntity.Play("attack", 0, 0f);
entityState = EntityAnimationState.Attacking;
_doSomething = true;
}
}
public void PlayDieAnim()
{
_animatorEntity.speed = 1;
_animatorEntity.Play("die", 0, 0f);
entityState = EntityAnimationState.Dying;
_doSomething = true;
_isDead = true;
}
//SETTER GETTER
public bool IsWalking
{
get { return _isWalking; }
set { _isWalking = value; }
}
public float AttackSpeedMultiplier
{
get; set;
}
public float SpeedMultiplier
{
get; set;
}
}