// Метод вызываемый из CharacterActionEventListener public void OnTileAction(CharacterAction actionData) { // Получаем текущий активный тайл. Может быть один и тот же для нескольких персонажей ActionableTile activeTile = activeTiles.Find(tile => { return(tile.actionData.endPosition == actionData.endPosition); }); // Если такового нет, значит действие новое - инициализируем тайл if (activeTile == null) { ActionableTile newActiveTile = tilesActions.Find(tile => tile.State == actionData.state); if (newActiveTile != null) { ActionableTile instantiatedTile = Instantiate(newActiveTile); Vector3Int tileIntPosition = grid.WorldToCell(actionData.endPosition); instantiatedTile.Init(actionData, tileIntPosition); instantiatedTile.OnWorkedOut += OnTileWorkedOut; activeTiles.Add(instantiatedTile); } } // Наносим урон тайлу if (activeTile != null) { activeTile.Damage(actionData.SkillValue); } }
public void OnTileWorkedOut(ActionableTile ActionableTile) { activeTiles.Remove(ActionableTile); tileWorkedOutEvent.Raise(ActionableTile.actionData); }