using System.Collections; using System.Collections.Generic; using UnityEngine; using wildlogicgames; namespace DoomBreakers { public class BaseState : MonoBehaviour { // //All these variables are required for the various Player Behaviours. //So we embody them within a state and use as appropriate with each //dervived player state we create and set. // protected StateMachine _stateMachine; protected Vector3 _velocity; protected const float _maxJumpVelocity = 12.0f; protected float _targetVelocityX, _moveSpeed, _sprintSpeed, _jumpSpeed, _gravity, _maxPowerStruckVelocityY, _maxPowerStruckVelocityX; protected int _quickAttackIncrement; //4+ variations of this animation. protected bool _dodgedLeftFlag;//, _jumpedFlag; private bool _isWaterFlag; protected float _quickAtkWaitTime, _gainedEquipWaitTime; protected ITimer _behaviourTimer;// _dodgedTimer, _spriteColourSwapTimer; public BaseState(Vector3 velocity) { _velocity = velocity;//new Vector3(); _moveSpeed = 4.0f;//3.75f;//3.5f; _sprintSpeed = 1.0f; _targetVelocityX = 1.0f; _jumpSpeed = 4.6f;// 4.0f; _gravity = wildlogicgames.DoomBreakers.GetGravity(); _quickAttackIncrement = 0; _dodgedLeftFlag = false; _quickAtkWaitTime = 0.133f; _gainedEquipWaitTime = 1.5f; } public void BaseSetup(Vector3 velocity) { _velocity = velocity;//new Vector3(); _moveSpeed = 4.0f;//3.75f;//3.5f; _sprintSpeed = 1.0f; _targetVelocityX = 1.0f; _jumpSpeed = 4.6f;// 4.0f; _gravity = wildlogicgames.DoomBreakers.GetGravity(); _quickAttackIncrement = 0; _dodgedLeftFlag = false; _isWaterFlag = false; _quickAtkWaitTime = 0.133f; _gainedEquipWaitTime = 1.5f; } private void UpdateWaterGravity(bool isWater) { if (_isWaterFlag != isWater) { _isWaterFlag = isWater; if (_isWaterFlag) _gravity = wildlogicgames.DoomBreakers.GetMoonGravity(); if (!_isWaterFlag) _gravity = wildlogicgames.DoomBreakers.GetGravity(); return; } return; } public virtual void UpdateBehaviour(ref CharacterController2D controller2D, ref Animator animator, ref BaseState state, ref int buttonJumpIncrement, bool isWater) { UpdateWaterGravity(isWater); UpdateGravity(ref controller2D, ref animator, ref state, ref buttonJumpIncrement); UpdateTransform(ref controller2D); } private void UpdateTransform(ref CharacterController2D controller2D) { //if(_controller2D == null) return; controller2D.UpdateMovement(_velocity * Time.deltaTime, _velocity, false); } private void UpdateGravity(ref CharacterController2D controller2D, ref Animator animator, ref BaseState state, ref int buttonJumpIncrement) { //if (_controller2D == null) return; bool collisionBelow = controller2D._collisionDetail._collidedDirection[0]; if (!collisionBelow) { //animator.Play("Fall"); if (state.GetType() != typeof(PlayerDying)) _velocity.y += _gravity * Time.deltaTime; else _velocity.y += (_gravity * Time.deltaTime)/4; } if (collisionBelow) { buttonJumpIncrement = 0; if (Mathf.Abs(_velocity.y) != 0) { _velocity.y = 0f; } } if (state.GetType() == typeof(PlayerDead)) _velocity.y = 0f; if (state.GetType() == typeof(PlayerDying)) _velocity.y = 0f; if (state.GetType() == typeof(PlayerRevive)) _velocity.y = 0f; } public virtual void IsIdle(ref Animator animator, ref IPlayerSprite playerSprite) { } public virtual void IsClimb(ref Animator animator, ref Vector2 input, ref IPlayerSprite playerSprite) { } public virtual void IsExhausted(ref Animator animator, ref IPlayerSprite playerSprite) { } public virtual void IsGainedEquipment(ref Animator animator, ref IPlayerSprite playerSprite, ref IPlayerEquipment playerEquipment) { } public virtual void IsBrokenEquipment(ref Animator animator, ref IPlayerSprite playerSprite, ref IPlayerEquipment playerEquipment) { } public virtual void IsMoving(ref Animator animator, ref Vector2 input, ref IPlayerSprite playerSprite, ref PlayerCollision playerCollider) { } public virtual void IsSprinting(ref Animator animator, ref Vector2 input, ref IPlayerSprite playerSprite, ref PlayerCollision playerCollider) { } public virtual void IsJumping(ref Animator animator, ref CharacterController2D controller2D, ref Vector2 input, ref IPlayerSprite playerSprite, bool isWater) { } public virtual void IsFalling(ref Animator animator, ref CharacterController2D controller2D, ref Vector2 input, bool isWater) { } public virtual void IsDodging(ref Animator animator, ref CharacterController2D controller2D, ref Vector2 input, bool dodgeLeft, ref IPlayerSprite playerSprite, ref PlayerCollision playerCollider) { } public virtual void IsDodged(ref Animator animator, ref CharacterController2D controller2D, ref Vector2 input) { } public virtual void IsQuickAttack(ref Animator animator, ref IPlayerSprite playerSprite, ref Vector2 input, ref int quickAttackIncrement) { } public virtual void IsUpwardAttack(ref Animator animator, ref IPlayerSprite playerSprite, ref Vector2 input) { } public virtual void IsDownwardAttack(ref Animator animator, ref IPlayerSprite playerSprite, ref Vector2 input, ref CharacterController2D controller2D) { } public virtual void IsKnockAttack(ref Animator animator, ref IPlayerSprite playerSprite, ref Vector2 input) { } public virtual void IsHoldAttack(ref Animator animator, ref IPlayerSprite playerSprite, ref Vector2 input) { } public virtual void IsReleaseAttack(ref Animator animator, ref IPlayerSprite playerSprite, ref Vector2 input) { } public virtual void IsDefending(ref Animator animator, ref Vector2 input) { } public virtual void IsHitByQuickAttack(ref Animator animator, ref IPlayerSprite playerSprite, ref Vector2 input) { } public virtual void IsHitByReleaseAttack(ref Animator animator, ref IPlayerSprite playerSprite, ref Vector2 input) { } public virtual void IsHitByKnockAttack(ref Animator animator, ref IPlayerSprite playerSprite, ref Vector2 input) { } public virtual void IsHitWhileDefending(ref Animator animator, ref Vector2 input) { } public virtual void IsDying(ref Animator animator, ref IPlayerSprite playerSprite) { } public virtual void IsDead(ref Animator animator, ref IPlayerSprite playerSprite) { } public virtual void IsRevive(ref Animator animator, ref IPlayerSprite playerSprite, ref Transform transform, ref PlayerStats playerStats, int playerId) { } } }