Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ability to use functions as control sources. #24

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

KurtLoeffler
Copy link

This change allows functions to be specified in the controls section of the initialization config. This allows complex composite controls to be declared.

It also includes a change that allows negative values from those functions to be handled meaningfully.

Example

input = baton.new {
    controls = {
        left = {'key:left', 'key:a', 'axis:leftx-', 'button:dpleft'},
        right = {'key:right', 'key:d', 'axis:leftx+', 'button:dpright'},
        horizontal = function(input)
            --returns -1 to 1
            return input:get("right")-input:get("left")
        end,

        up = {'key:up', 'key:w', 'axis:lefty-', 'button:dpup'},
        down = {'key:down', 'key:s', 'axis:lefty+', 'button:dpdown'},
        vertical = function(input)
            --returns -1 to 1
            return input:get("down")-input:get("up")
        end,
        
        alt = {'key:lalt', 'key:ralt'},
        enter = {'key:kpenter', 'key:return'},
        toggleFullscreen = function(input)
            return input:down("alt") and input:pressed("enter")
        end
    }
}

function love.update(deltaTime)
    input:update()
    
    print(tostring(input:get("horizontal"))..", "..tostring(input:get("vertical")))

    if input:pressed("toggleFullscreen") then
        love.window.setFullscreen(not love.window.getFullscreen(), "desktop")
    end
end

@tesselode
Copy link
Owner

tesselode commented Nov 25, 2022

Apparently I forgot to look at this in 2019 and haven't checked this repo since...

I can definitely see the utility for defining composite buttons, but I don't understand why you would want controls to return negative numbers. Your example shows separate horizontal and vertical controls; wouldn't those be better handled by pairs?

@KurtLoeffler sorry for the incredibly late reply, is this even relevant to your life anymore?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants