public override void OnReceiveMessage(assMessageType msgType, object[] args) { switch (msgType) { case assMessageType.Move: if (!Entity.IsAI) { float horizontal = (float)args[0]; MoveEntity(horizontal); Entity.RotateEntity(horizontal); if (Entity.OnGround) { //float horAbsValue = Mathf.Abs(horizontal); MovementAnimation(horizontal); } } else if (!Entity.IsAIBoss) { Transform target = (Transform)args[0]; if (Vector2.Distance(Entity.RgdBdy2D.position, target.position) < Entity.DistanceTreshold) { //TODO send message to do attack state or something Entity.SendMessageToBrain(assMessageType.Attack, target); return; } Vector2 direction = ((Vector2)target.position - Entity.RgdBdy2D.position).normalized; direction.y = 0; MoveEntity(direction); Entity.RotateEntity(direction.x); } break; case assMessageType.Jump: Entity.AnimCtrl.SetFloat("nav_speed", 0); Entity.AnimCtrl.SetTrigger("jump"); Entity.Velocity = new Vector2(Entity.Velocity.x, 0); Entity.RgdBdy2D.AddForce(Vector2.up * Entity.JumpVelocity, ForceMode2D.Impulse); Entity.JumpTimer = 0; break; case assMessageType.Attack: Entity.ChangeState(typeof(assAttackState), args); break; case assMessageType.Flinch: //chance to change state or idk to be discussed break; case assMessageType.FirstPhaseActivate: Entity.ChangeState(typeof(assFirstPhaseState), args); break; case assMessageType.FinalPhaseActivate: Entity.ChangeState(typeof(assFinalPhaseState), args); break; default: break; } }
public override void OnReceiveMessage(assMessageType msgType, object[] args) { switch (msgType) { case assMessageType.FinalPhaseActivate: Entity.ChangeState(typeof(assFinalPhaseState), args); break; } }
public override void OnReceiveMessage(assMessageType msgType, object[] args) { //switch (msgType) { // case assMessageType.Think: // Entity.ThinkingTime = (float)args[0]; // break; // default: // break; //} }
public override void OnReceiveMessage(assMessageType msgType, object[] args) { switch (msgType) { case assMessageType.Attack: //tdAttack currentAtk = (tdAttack)args[0]; //Entity.AnimCtrl.SetInteger("anim_state", (int)currentAtk.AnimState); //TODO if boss AI check if melee or range break; case assMessageType.Flinch: break; case assMessageType.FirstPhaseActivate: Entity.ChangeState(typeof(assFirstPhaseState), args); break; case assMessageType.FinalPhaseActivate: Entity.ChangeState(typeof(assFinalPhaseState), args); break; } }
public abstract void OnReceiveMessage(assMessageType msgType, object[] args);
/// <summary> /// Will be used on the entity controller to separate inputs and behaviour. /// Can also be used as a reaction for AI /// </summary> /// <param name="msgtype">message type</param> /// <param name="args">anything to pass through</param> public void SendMessageToBrain(assMessageType msgType, params object[] args) { _existing.OnReceiveMessage(msgType, args); }
public override void OnReceiveMessage(assMessageType msgType, object[] args) { }