/// <summary> /// Moves the permanent based on its movement stats /// </summary> /// <param name="permanent">Permanent to make move</param> private static void Move(CreatureStats permanent) { MapPosition from = permanent.GridPosition; permanentMap[permanent.GridPosition.x, permanent.GridPosition.y] = null; MapPosition to = permanent.GetForward(); permanentMap[to.x, to.y] = permanent; permanent.GridPosition = to; permanent.GetComponent <Animator>().SetBool("IsWalking", true); // Move it and set animating state LeanTween.move(permanent.gameObject, GridToWorld(to), AnimationMoveDuration). setOnComplete(() => { if (!permanent) { return; } permanent.GetComponent <Animator>().SetBool("IsWalking", false); }); StateManager.RegisterAnimation(AnimationMoveDuration); //permanent.transform.position = GridToWorld(to); EventManager.InvokePermanentMoved(permanent, from, to); }
// Does a creature's combat turn private static void ActPermanent(CreatureStats permanent) { if (CanAttackAnything(permanent)) { Attack(permanent); return; } if (permanent.CanMove()) { int movesLeft = (int)permanent.Speed; for (int i = 0; i < movesLeft; i++) { if (CanAttackAnything(permanent)) { Attack(permanent); return; } CreatureStats inFront = GetCreatureAt(permanent.GetForward()); if (!inFront) { Move(permanent); } } } }