public void MoveTo(DirectionType direction) { for (int i = 0; i < currentTile.Neighbors.Count; i++) { if (currentTile.Neighbors[i].direction == direction && currentTile.Neighbors[i].tile.content != TileContentType.Character) { currentTile.content = TileContentType.Empty; currentTile.character = null; currentTile = currentTile.Neighbors[i].tile; state = CharacterSate.Moving; onMove.Invoke(); break; } } }
//[Button] void Update() { if (isTurn && !isLocked) { if (state == CharacterSate.Moving) { if (currentTile.transform.position != transform.position) { Move(); arrows.HideArrows(); hasMoved = true; } else { CollectPickUp(); WaitIfNotAttack(); } } else if (state == CharacterSate.Waiting) { WaitIfNotAttack(); if (type == CharacterType.Player) { arrows.ShowArrows(currentTile); } else if (type == CharacterType.IA) { MoveTo((DirectionType)Random.Range(0, 4)); } } else if (state == CharacterSate.Fighting) { arrows.HideArrows(); } } else { transform.position = currentTile.transform.position; state = CharacterSate.Waiting; arrows.HideArrows(); enemy = null; attack = settings.Attack; hasMoved = false; } }
void WaitIfNotAttack() { state = CharacterSate.Waiting; if (hasMoved) { enemy = EnemyNear(); if (enemy != null) { state = CharacterSate.Fighting; hasMoved = false; onAttack.Invoke(); } } else { enemy = null; } }