void ProcessOneMove() { for (int i = moveIndex; i < moves.Count; i++) { moveIndex++; GameMove move = moves[i]; Actor activeActor = actors.Find(a => a.name == move.actionAuthorName); if (activeActor == null) { Debug.LogError("Couldn't find actor: " + move.actionAuthorName); } if (activeActor.hp <= 0) { continue; } bool hasProcessedAMove = false; if (ProcessMove(move, actors, gameData)) { if (move.gameAction == GameAction.StabAttack) { move.actionAuthorName = ""; } foreach (var controller in actorControllers) { controller.moveHistory.Add(move.Clone()); } hasProcessedAMove = true; } gameState = GetGameState(gameData, killer); if (hasProcessedAMove) { isWaiting = true; break; } } }