InputSystem.IReactiveExecuteSystem C# (CSharp) Method

IReactiveExecuteSystem() private method

private IReactiveExecuteSystem ( List entities ) : void
entities List
return void
    void IReactiveExecuteSystem.Execute(List<Entity> entities)
    {
        if (pool.isGameOver
            || pool.isLevelTransitionDelay
            || !pool.hasMoveInput
            || !pool.isControllable
            || !pool.controllableEntity.isActiveTurnBased)
        {
            // ignore input
            return;
        }

        var controllable = pool.controllableEntity;
        pool.ReplaceFoodBag(pool.foodBag.points - 1);

        var movement = pool.moveInput.movement;
        var movementPos = ToVector(movement);

        var currentPos = controllable.position;
        int newX = currentPos.x + (int)movementPos.x;
        int newY = currentPos.y + (int)movementPos.y;

        ICollection<Entity> existing;
        bool canMove = pool.IsGameBoardPositionOpen(newX, newY, out existing);
        if (existing != null)
        {
            canMove = PrepareMove(controllable, existing);
        }

        if (canMove)
        {
            pool.PlayAudio(controllable.audioWalkSource);
            controllable.ReplacePosition(newX, newY);
        }

        controllable.isActiveTurnBased = false;
    }