public override void SetAction() { if (ActionFeed.Count == 0) { if (Dead) { CurrentAction = MirAction.Dead; } else { CurrentAction = MirAction.Standing; } } else { QueuedAction action = ActionFeed[0]; ActionFeed.RemoveAt(0); CurrentAction = action.Action; Direction = action.Direction; Model.transform.rotation = ClientFunctions.GetRotation(Direction); switch (CurrentAction) { case MirAction.Walking: case MirAction.Running: int steps = 1; if (CurrentAction == MirAction.Running) { steps = 2; } Vector3 targetpos = GameManager.CurrentScene.Cells[(int)action.Location.x, (int)action.Location.y].position; TargetPosition = targetpos; Vector2 back = ClientFunctions.Back(action.Location, Direction, steps); gameObject.transform.position = GameManager.CurrentScene.Cells[(int)back.x, (int)back.y].position; GameManager.CurrentScene.Cells[CurrentLocation.x, CurrentLocation.y].RemoveObject(this); GameManager.CurrentScene.Cells[action.Location.x, action.Location.y].AddObject(this); StartPosition = gameObject.transform.position; TargetDistance = Vector3.Distance(transform.position, targetpos); IsMoving = true; break; } CurrentLocation = action.Location; } GetComponentInChildren <Animator>().SetInteger("CurrentAction", (int)CurrentAction); }
public override void SetAction() { if (this == GameManager.User.Player && Time.time > GameManager.NextAction && GameScene.QueuedAction != null) { ActionFeed.Clear(); ActionFeed.Add(GameScene.QueuedAction); GameScene.QueuedAction = null; } if (ActionFeed.Count == 0) { if (Dead) { CurrentAction = MirAction.Dead; } else { CurrentAction = MirAction.Standing; } } else { if (this == GameManager.User.Player && Time.time < GameManager.NextAction) { return; } QueuedAction action = ActionFeed[0]; ActionFeed.RemoveAt(0); CurrentAction = action.Action; Direction = action.Direction; Model.transform.rotation = ClientFunctions.GetRotation(Direction); switch (CurrentAction) { case MirAction.Walking: case MirAction.Running: int steps = 1; if (CurrentAction == MirAction.Running) { steps = 2; } Vector3 targetpos = GameManager.CurrentScene.Cells[action.Location.x, action.Location.y].position; TargetPosition = targetpos; if (this != GameManager.User.Player) { Vector2Int back = ClientFunctions.Back(action.Location, Direction, steps); gameObject.transform.position = GameManager.CurrentScene.Cells[back.x, back.y].position; } GameManager.CurrentScene.Cells[CurrentLocation.x, CurrentLocation.y].RemoveObject(this); GameManager.CurrentScene.Cells[action.Location.x, action.Location.y].AddObject(this); StartPosition = gameObject.transform.position; TargetDistance = Vector3.Distance(transform.position, targetpos); IsMoving = true; RefreshSounds(); break; } CurrentLocation = action.Location; Spell = Spell.None; if (this == GameManager.User.Player) { switch (CurrentAction) { case MirAction.Standing: Network.Enqueue(new C.Turn { Direction = action.Direction }); GameManager.NextAction = Time.time + 2.5f; GameManager.InputDelay = Time.time + 0.5f; GameManager.User.CanRun = false; break; case MirAction.Walking: Network.Enqueue(new C.Walk { Direction = action.Direction }); GameManager.NextAction = Time.time + 2.5f; GameManager.InputDelay = Time.time + 0.5f; GameManager.User.LastRunTime = Time.time; GameManager.User.CanRun = true; break; case MirAction.Running: Network.Enqueue(new C.Run { Direction = action.Direction }); GameManager.NextAction = Time.time + 2.5f; GameManager.InputDelay = Time.time + 0.5f; GameManager.User.LastRunTime = Time.time; break; case MirAction.Attack: if (GameScene.Slaying && GameScene.TargetObject != null) { Spell = Spell.Slaying; GameScene.Slaying = false; } Network.Enqueue(new C.Attack { Direction = Direction, Spell = Spell }); GameManager.NextAction = Time.time + 2.5f; break; case MirAction.Die: Blocking = false; if (HealthBar != null) { HealthBar.gameObject.SetActive(false); } break; case MirAction.Revive: Blocking = true; ActionFeed.Clear(); ActionFeed.Add(new QueuedAction { Action = MirAction.Standing, Direction = action.Direction }); //GameScene.pControl.TextureValid = false; break; } } switch (CurrentAction) { case MirAction.Attack: PlayAnimation("Attack", -1, 0); break; case MirAction.Struck: SetAnimation("Struck", true); break; } } //GetComponentInChildren<Animator>()?.SetInteger("CurrentAction", (int)CurrentAction); SetAnimation("CurrentAction", (int)CurrentAction); }
void SetAction() { if (ActionFeed.Count == 0) { CurrentAction = MirAction.Standing; if (this == GameManager.User.Player) { GameManager.User.WalkStep = 0; } } else { if (Time.time < GameManager.NextAction) { return; } QueuedAction action = ActionFeed[0]; ActionFeed.RemoveAt(0); CurrentAction = action.Action; Direction = action.Direction; switch (CurrentAction) { case MirAction.Walking: case MirAction.Running: int steps = 1; if (CurrentAction == MirAction.Running) { steps = 2; } Vector3 targetpos = GameManager.CurrentScene.Cells[(int)action.Location.x, (int)action.Location.y].position; Model.transform.rotation = ClientFunctions.GetRotation(Direction); TargetPosition = targetpos; if (this != GameManager.User.Player) { Vector2 back = ClientFunctions.Back(action.Location, Direction, steps); gameObject.transform.position = GameManager.CurrentScene.Cells[(int)back.x, (int)back.y].position; } StartPosition = gameObject.transform.position; TargetDistance = Vector3.Distance(transform.position, targetpos); IsMoving = true; break; } CurrentLocation = action.Location; if (this == GameManager.User.Player) { switch (CurrentAction) { case MirAction.Walking: Network.Enqueue(new C.Walk { Direction = action.Direction }); GameManager.NextAction = Time.time + 2.5f; GameManager.InputDelay = Time.time + 0.5f; break; case MirAction.Running: Network.Enqueue(new C.Run { Direction = action.Direction }); GameManager.NextAction = Time.time + 2.5f; GameManager.InputDelay = Time.time + 0.5f; break; } } } GetComponentInChildren <Animator>().SetInteger("CurrentAction", (int)CurrentAction); }
public override void SetAction() { if (this == GameManager.User.Player && GameScene.QueuedAction != null) { ActionFeed.Clear(); ActionFeed.Add(GameScene.QueuedAction); GameScene.QueuedAction = null; } if (ActionFeed.Count == 0) { CurrentAction = MirAction.Standing; } else { if (this == GameManager.User.Player && Time.time < GameManager.NextAction) { return; } QueuedAction action = ActionFeed[0]; ActionFeed.RemoveAt(0); CurrentAction = action.Action; Direction = action.Direction; Model.transform.rotation = ClientFunctions.GetRotation(Direction); switch (CurrentAction) { case MirAction.Walking: case MirAction.Running: int steps = 1; if (CurrentAction == MirAction.Running) { steps = 2; } Vector3 targetpos = GameManager.CurrentScene.Cells[(int)action.Location.x, (int)action.Location.y].position; TargetPosition = targetpos; if (this != GameManager.User.Player) { Vector2 back = ClientFunctions.Back(action.Location, Direction, steps); gameObject.transform.position = GameManager.CurrentScene.Cells[(int)back.x, (int)back.y].position; } GameManager.CurrentScene.Cells[(int)CurrentLocation.x, (int)CurrentLocation.y].RemoveObject(this); GameManager.CurrentScene.Cells[(int)action.Location.x, (int)action.Location.y].AddObject(this); StartPosition = gameObject.transform.position; TargetDistance = Vector3.Distance(transform.position, targetpos); IsMoving = true; break; } CurrentLocation = action.Location; if (this == GameManager.User.Player) { switch (CurrentAction) { case MirAction.Standing: Network.Enqueue(new C.Turn { Direction = action.Direction }); GameManager.NextAction = Time.time + 2.5f; GameManager.InputDelay = Time.time + 0.5f; GameManager.User.CanRun = false; break; case MirAction.Walking: Network.Enqueue(new C.Walk { Direction = action.Direction }); GameManager.NextAction = Time.time + 2.5f; GameManager.InputDelay = Time.time + 0.5f; GameManager.User.LastRunTime = Time.time; GameManager.User.CanRun = true; break; case MirAction.Running: Network.Enqueue(new C.Run { Direction = action.Direction }); GameManager.NextAction = Time.time + 2.5f; GameManager.InputDelay = Time.time + 0.5f; GameManager.User.LastRunTime = Time.time; break; case MirAction.Attack: Network.Enqueue(new C.Attack { Direction = Direction, Spell = Spell.None }); GameManager.NextAction = Time.time + 2.5f; break; } } switch (CurrentAction) { case MirAction.Attack: GetComponentInChildren <Animator>().Play("Attack", -1, normalizedTime: 0f); break; } } GetComponentInChildren <Animator>()?.SetInteger("CurrentAction", (int)CurrentAction); }
public override void SetAction() { if (ActionFeed.Count == 0) { if (Dead) { CurrentAction = MirAction.Dead; } else { CurrentAction = MirAction.Standing; } } else { QueuedAction action = ActionFeed[0]; ActionFeed.RemoveAt(0); CurrentAction = action.Action; Direction = action.Direction; Model.transform.rotation = ClientFunctions.GetRotation(Direction); BossHealupdate(); switch (CurrentAction) { case MirAction.Walking: case MirAction.Running: int steps = 1; if (CurrentAction == MirAction.Running) { steps = 2; } Vector3 targetpos = GameManager.CurrentScene.Cells[(int)action.Location.x, (int)action.Location.y].position; TargetPosition = targetpos; Vector2 back = ClientFunctions.Back(action.Location, Direction, steps); gameObject.transform.position = GameManager.CurrentScene.Cells[(int)back.x, (int)back.y].position; GameManager.CurrentScene.Cells[CurrentLocation.x, CurrentLocation.y].RemoveObject(this); GameManager.CurrentScene.Cells[action.Location.x, action.Location.y].AddObject(this); StartPosition = gameObject.transform.position; TargetDistance = Vector3.Distance(transform.position, targetpos); IsMoving = true; break; case MirAction.Attack: soundPlayer.ExecuteSound(AttackSound, gameObject, "Player"); soundPlayer.Play(); break; case MirAction.Struck: break; case MirAction.Die: soundPlayer.ExecuteSound(DeathSound, gameObject, "Player"); soundPlayer.Play(); Blocking = false; if (HealthBar != null) { HealthBar.gameObject.SetActive(false); } CheckBossDead(); Dead = true; break; } CurrentLocation = action.Location; } GetComponentInChildren <Animator>().SetInteger("CurrentAction", (int)CurrentAction); }