コード例 #1
0
    // Метод вызываемый из 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);
        }
    }
コード例 #2
0
 public void OnTileWorkedOut(ActionableTile ActionableTile)
 {
     activeTiles.Remove(ActionableTile);
     tileWorkedOutEvent.Raise(ActionableTile.actionData);
 }