Ejemplo n.º 1
0
#pragma warning restore 0649
        #endregion

        #region Base - Override

        public override bool PassCondition(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            if (!PassAllCondition(hActorData, lstBehaviourData))
            {
                return(false);
            }

            return(m_bIsHolding == FlagUtility.HasFlagUnsafe(hActorData.m_hInputData.m_eHoldingInput, m_eInput));
        }
#pragma warning restore 0649
        #endregion

        #region Base - Override

        public override bool PassCondition(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            if (!PassAllCondition(hActorData, lstBehaviourData))
            {
                return(false);
            }

            return(m_bIsTrue == FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.IsGrounding));
        }
#pragma warning restore 0649
        #endregion

        #endregion

        #region Base - Override

        public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnCreateBehaviour(hActorData, lstBehaviourData);

            lstBehaviourData.Add(new DoCollisionDamageCacheData
            {
                m_actOnTriggerEnter = TriggerEnter,
            });
        }
        public override void OnStopBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            if (lstBehaviourData.TryGetData(out DoCollisionDamageCacheData hOutData))
            {
                hActorData.m_hTriggerEventCallback.Remove(PhysicEventType.Enter, hOutData.m_actOnTriggerEnter);
            }

            base.OnStopBehaviour(hActorData, lstBehaviourData);
        }
Ejemplo n.º 5
0
        public override void OnStopBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            if (lstBehaviourData.TryGetData(out DoubleJumpCacheData hOutData))
            {
                hActorData.m_hInputData.m_hInputCallback.Remove((InputEventType.Jump, GetInputType.Down), hOutData.m_actJump);
            }

            base.OnStopBehaviour(hActorData, lstBehaviourData);
        }
Ejemplo n.º 6
0
        public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnCreateBehaviour(hActorData, lstBehaviourData);

            lstBehaviourData.Add(new DoubleJumpCacheData
            {
                m_actJump = OnJump
            });
        }
Ejemplo n.º 7
0
#pragma warning restore 0649
        #endregion

        #region Base - Override

        public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnCreateBehaviour(hActorData, lstBehaviourData);

            lstBehaviourData.Add(new GroundPoundCacheData
            {
                m_actDownAttack = OnDownAttack
            });
        }
Ejemplo n.º 8
0
#pragma warning restore 0649
        #endregion

        #region Variable - Property

        #endregion

        #endregion

        #region Main

        public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnCreateBehaviour(hActorData, lstBehaviourData);

            lstBehaviourData.Add(new MoveCacheData
            {
                m_nNextPointIndex = -2
            });
        }
Ejemplo n.º 9
0
        public override void OnStopBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            if (lstBehaviourData.TryGetDataRW(out GroundPoundCacheData hOutData))
            {
                hActorData.m_hInputData.m_hInputCallback.Remove((InputEventType.Attack, GetInputType.Down), hOutData.m_actDownAttack);
            }

            base.OnStopBehaviour(hActorData, lstBehaviourData);
        }
Ejemplo n.º 10
0
        public override void OnStartBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnStartBehaviour(hActorData, lstBehaviourData);

            if (lstBehaviourData.TryGetDataRW(out AttackCacheData hOutData))
            {
                hActorData.m_hInputData.m_hInputCallback.Add((InputEventType.Attack, GetInputType.Down), hOutData.m_actAttack);
            }
        }
#pragma warning restore 0649
        #endregion

        #region Base - Override

        public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnCreateBehaviour(hActorData, lstBehaviourData);

            lstBehaviourData.Add(new WallJumpCacheData
            {
                m_actJump           = OnWallJump,
                m_fWallJumpLastTime = -100,
            });
        }
Ejemplo n.º 12
0
#pragma warning restore 0649
        #endregion

        #endregion

        #region Base - Override

        public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnCreateBehaviour(hActorData, lstBehaviourData);

            lstBehaviourData.Add(new AttackCacheData
            {
                m_actAttack       = OnAttack,
                m_fAttackLastTime = -100,
            });
        }
Ejemplo n.º 13
0
#pragma warning restore 0649
        #endregion

        #region Base - Override

        public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnUpdateBehaviour(hActorData, lstBehaviourData);

            if ((hActorData.m_hInputData.m_fHorizontal > 0 && !FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.FacingRight)) ||
                (hActorData.m_hInputData.m_fHorizontal < 0 && FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.FacingRight)))
            {
                var hController = (DSC_ActorController)hActorData.m_hController;
                hController.Flip();
            }
        }
Ejemplo n.º 14
0
        protected virtual void StartAttack(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData, int nAttack)
        {
            if (lstBehaviourData.TryGetData(out ActorMonoData <Actor_EventController> hEventController))
            {
                hEventController.m_hMono.RunEvent(m_arrAttackData[nAttack].m_nEventIndex);
            }

            hActorData.m_hAiData.m_fPatternLastTime    = Time.time;
            hActorData.m_hAiData.m_fPatternEndCoolDown = m_arrAttackData[nAttack].m_fAttackEndDelay;
            hActorData.m_hAiData.m_bPatterning         = true;
        }
#pragma warning restore 0649
        #endregion

        #region Variable - Property

        #endregion

        #endregion

        #region Base - Override

        public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnUpdateBehaviour(hActorData, lstBehaviourData);

            var hPlayer = Global_GameplayManager.playerController;

            if (hPlayer == null)
            {
                return;
            }

            Vector2 vPlayerPos = hPlayer.actorData.m_hActor.position;
            Vector2 vOwnPos    = hActorData.m_hActor.position;

            if (FlagUtility.HasFlagUnsafe(m_eSearhType, SearchType.X))
            {
                if (vPlayerPos.x > vOwnPos.x && !FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.FacingRight) ||
                    vPlayerPos.x < vOwnPos.x && FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.FacingRight))
                {
                    goto NotFound;
                }

                float fDistanceX = Mathf.Abs(vPlayerPos.x - vOwnPos.x);
                if (fDistanceX > m_fSightXRange)
                {
                    goto NotFound;
                }
            }

            if (FlagUtility.HasFlagUnsafe(m_eSearhType, SearchType.Y))
            {
                float fDistanceY = Mathf.Abs(vPlayerPos.y - vOwnPos.y);
                if (fDistanceY > m_fSightYRange)
                {
                    goto NotFound;
                }
            }

            if (FlagUtility.HasFlagUnsafe(m_eSearhType, SearchType.Angle))
            {
                if (Vector2.Angle(vOwnPos, vPlayerPos) > m_fSightAngle)
                {
                    goto NotFound;
                }
            }

            FoundPlayer(hActorData, lstBehaviourData);
            return;

NotFound:
            NotFoundPlayer(hActorData, lstBehaviourData);
            ;
        }
Ejemplo n.º 16
0
        public override void OnFixedUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnFixedUpdateBehaviour(hActorData, lstBehaviourData);

            if (hActorData.m_hRigid)
            {
                if (FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.GroundPoundCasting))
                {
                    hActorData.m_hRigid.velocity = Vector2.zero;
                }
            }
        }
        protected virtual void OnGravityIncrease(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            if (hActorData.m_hRigid == null || FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.HoldingJump))
            {
                return;
            }

            Vector2 vVelocity = hActorData.m_hRigid.velocity;

            vVelocity.y += Physics2D.gravity.y * hActorData.m_hRigid.gravityScale * m_fGravityMultiplier * Time.deltaTime;
            hActorData.m_hRigid.velocity = vVelocity;
        }
Ejemplo n.º 18
0
        public override void OnDestroyBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnDestroyBehaviour(hActorData, lstBehaviourData);

            if (!HasBehaviourInArray())
            {
                return;
            }

            for (int i = 0; i < m_arrBehaviour.Length; i++)
            {
                m_arrBehaviour[i]?.OnDestroyBehaviour(hActorData, lstBehaviourData);
            }
        }
#pragma warning restore 0649
        #endregion

        #region Base - Override

        public override bool PassCondition(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            if (!PassAllCondition(hActorData, lstBehaviourData))
            {
                return(false);
            }

            if (hActorData.m_hRigid == null)
            {
                return(true);
            }

            Vector2 vVelocity = hActorData.m_hRigid.velocity;

            return(CheckVelocityX(vVelocity) && CheckVelocityY(vVelocity));
        }
Ejemplo n.º 20
0
        public override void OnLateUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnLateUpdateBehaviour(hActorData, lstBehaviourData);

            if (!HasBehaviourInArray())
            {
                return;
            }

            for (int i = 0; i < m_arrBehaviour.Length; i++)
            {
                var hBehaviour = m_arrBehaviour[i];
                if (hBehaviour != null && hBehaviour.isRunning)
                {
                    hBehaviour.OnLateUpdateBehaviour(hActorData, lstBehaviourData);
                }
            }
        }
Ejemplo n.º 21
0
#pragma warning restore 0649
        #endregion

        #region Variable - Property

        #endregion

        #endregion

        #region Base - Override

        public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnUpdateBehaviour(hActorData, lstBehaviourData);

            if (hActorData.m_hAiData.m_bPatterning)
            {
                return;
            }

            if (m_arrAttackData == null || m_arrAttackData.Length <= 0)
            {
                return;
            }

            int nAttack = Random.Range(0, m_arrAttackData.Length);

            StartAttack(hActorData, lstBehaviourData, nAttack);
        }
Ejemplo n.º 22
0
        protected virtual void StartAttack(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData, AttackCacheData hData)
        {
            var hPlayer = Global_GameplayManager.playerController;

            if (hPlayer == null)
            {
                return;
            }

            hData.m_vAttackStartPos    = hActorData.m_hActor.position;
            hData.m_vAttackDestination = hPlayer.actorData.m_hActor.position;
            hData.m_vControlPoint      = hData.m_vAttackStartPos + (hData.m_vAttackDestination - hData.m_vAttackStartPos) / 2 + Vector2.down * 2.0f;

            hData.m_fAttackStartTime = Time.time;
            hData.m_fAttackDuration  = (Vector2.Distance(hData.m_vAttackStartPos, hData.m_vAttackDestination) / (hActorData.m_hStatus.status.m_fMoveSpeed * 2));

            hData.m_bAttacking = true;
        }
Ejemplo n.º 23
0
        public override void OnStopBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            if (!isRunning)
            {
                return;
            }

            isRunning = false;

            if (!HasBehaviourInArray())
            {
                return;
            }

            for (int i = 0; i < m_arrBehaviour.Length; i++)
            {
                m_arrBehaviour[i]?.OnStopBehaviour(hActorData, lstBehaviourData);
            }
        }
        public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnUpdateBehaviour(hActorData, lstBehaviourData);

            if (!FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.WallJumping))
            {
                return;
            }

            if (!lstBehaviourData.TryGetDataRW(out WallJumpCacheData hData))
            {
                return;
            }

            if (Time.time >= hData.m_fWallJumpLastTime + m_fWallJumpDuration)
            {
                hActorData.m_eStateFlag &= ~ActorStateFlag.WallJumping;
            }
        }
Ejemplo n.º 25
0
        public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnUpdateBehaviour(hActorData, lstBehaviourData);

            if (!HasBehaviourInArray())
            {
                return;
            }

            for (int i = 0; i < m_arrBehaviour.Length; i++)
            {
                var hBehaviour = m_arrBehaviour[i];
                if (hBehaviour == null)
                {
                    continue;
                }

                bool bRunning = false;

                if (hBehaviour.isRunning)
                {
                    if (!hBehaviour.PassCondition(hActorData, lstBehaviourData))
                    {
                        hBehaviour.OnStopBehaviour(hActorData, lstBehaviourData);
                    }
                    else
                    {
                        isRunning = true;
                    }
                }
                else if (hBehaviour.PassCondition(hActorData, lstBehaviourData))
                {
                    hBehaviour.OnStartBehaviour(hActorData, lstBehaviourData);
                    isRunning = true;
                }

                if (bRunning)
                {
                    hBehaviour.OnUpdateBehaviour(hActorData, lstBehaviourData);
                }
            }
        }
Ejemplo n.º 26
0
        public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnUpdateBehaviour(hActorData, lstBehaviourData);

            if (!lstBehaviourData.TryGetDataRW(out GroundPoundCacheData hData))
            {
                return;
            }

            if (hActorData.m_hRigid)
            {
                if (FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.GroundPoundCasting))
                {
                    if (Time.time >= hData.m_fGroundPoundStartTime + m_fCastingTime)
                    {
                        hActorData.m_eStateFlag &= ~ActorStateFlag.GroundPoundCasting;
                        GroundPound(hActorData, lstBehaviourData);
                    }
                }
            }
        }
Ejemplo n.º 27
0
        protected virtual void OnDownAttack(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            if (hActorData.m_hInputData.m_fVertical >= 0 || hActorData.m_hRigid == null || hActorData.m_hStatus == null ||
                FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.GroundPoundCasting) ||
                FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.GroundPounding) ||
                !lstBehaviourData.TryGetDataRW(out GroundPoundCacheData hData))
            {
                return;
            }


            hActorData.m_eStateFlag      |= ActorStateFlag.GroundPoundCasting;
            hActorData.m_hRigid.velocity  = Vector2.zero;
            hData.m_fGroundPoundStartTime = Time.time;

            if (hActorData.m_hAnimation)
            {
                hActorData.m_hAnimation.m_hSpineAnimationState.SetAnimation(0,
                                                                            hActorData.m_hAnimation.m_sGroundPoundCastingAnimation, false);
            }
        }
        protected virtual void TriggerEnter(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData, Collider2D hCollider)
        {
            if (!hCollider.gameObject.CompareTag(TagUtility.Name.player))
            {
                return;
            }

            var hTargetActor = hCollider.GetComponent <DSC_ActorController>();

            if (hTargetActor && FlagUtility.HasFlagUnsafe(hTargetActor.actorData.m_eStateFlag, ActorStateFlag.IsDamage))
            {
                return;
            }


            var hDamageable = hCollider.gameObject.GetComponent <IDamageable>();

            if (hDamageable != null)
            {
                hDamageable.DoDamage(Mathf.RoundToInt(hActorData.m_hStatus.status.m_nAttack * m_fDamageMultiplier), hActorData.m_hActor.position);
            }
        }
#pragma warning disable 0649

#pragma warning restore 0649
        #endregion

        #region Variable - Property

        #endregion

        #endregion

        #region Base - Override

        public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnUpdateBehaviour(hActorData, lstBehaviourData);

            if (hActorData.m_hAnimation == null || hActorData.m_hRigid == null)
            {
                return;
            }

            var hAnim     = hActorData.m_hAnimation.m_hSpineAnimationState;
            var vVelocity = hActorData.m_hRigid.velocity;

            if (hActorData.m_eCurrentAnimation == ActorAnimation.Airing)
            {
                if (vVelocity.y <= 0 && FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.IsGrounding) && !FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.Jumping))
                {
                    hAnim.SetAnimation(0, hActorData.m_hAnimation.m_sLandingAnimation, false);
                    hAnim.AddAnimation(0, hActorData.m_hAnimation.m_sIdleAnimation, true, 0.1f);
                    hActorData.m_eCurrentAnimation = ActorAnimation.Idle;
                }
            }
            else if (FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.Walking))
            {
                if (hActorData.m_eCurrentAnimation != ActorAnimation.Running)
                {
                    hAnim.SetAnimation(0, hActorData.m_hAnimation.m_sRunAnimationName, true);
                    hActorData.m_eCurrentAnimation = ActorAnimation.Running;
                }
            }
            else
            {
                if (hActorData.m_eCurrentAnimation != ActorAnimation.Idle)
                {
                    hAnim.SetAnimation(0, hActorData.m_hAnimation.m_sIdleAnimation, true);
                    hActorData.m_eCurrentAnimation = ActorAnimation.Idle;
                }
            }
        }
Ejemplo n.º 30
0
        public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData)
        {
            base.OnUpdateBehaviour(hActorData, lstBehaviourData);

            if (!FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.Fighting))
            {
                return;
            }

            if (!lstBehaviourData.TryGetDataRW(out AttackCacheData hData))
            {
                return;
            }

            if (!hData.m_bAttacking)
            {
                StartAttack(hActorData, lstBehaviourData, hData);
            }
            else
            {
                ProcessAttack(hActorData, lstBehaviourData, hData);
            }
        }