-- title: Controller test
-- author: Al Rado
-- script: lua
-- input: gamepad
TITLE="Controller test"
UP="Up" DOWN="Down"
LEFT="Left" RIGHT="Right"
BTN_A="Btn A" BTN_B="Btn B"
STATE_ON={name="ON", color=11}
STATE_OFF={name="OFF", color=6}
GAMEPAD_ONE={
{code=0, name=UP},
{code=1, name=DOWN},
{code=2, name=LEFT},
{code=3, name=RIGHT},
{code=4, name=BTN_A},
{code=5, name=BTN_B}
}
GAMEPAD_TWO={
{code=8, name=UP},
{code=9, name=DOWN},
{code=10, name=LEFT},
{code=11, name=RIGHT},
{code=12, name=BTN_A},
{code=13, name=BTN_B}
}
PLAYER_ONE_NAME={value="PLAYER ONE", shiftX=6, shiftY=-3, color=7}
PLAYER_TWO_NAME={value="PLAYER TWO", shiftX=6, shiftY=-3, color=7}
GAMEPADS_VIEWS={
{name=PLAYER_ONE_NAME,actions=GAMEPAD_ONE,
x=40, y=40, stateShiftX=50, sinCoeff=1.57, timeShift=0},
{name=PLAYER_TWO_NAME, actions=GAMEPAD_TWO,
x=140, y=40, stateShiftX=50, sinCoeff=0.76, timeShift=0.5}
}
ACTION_STEP_Y=10
SPEED=1/1000
ROTATION_LIMIT=10
SLEEP_DURATION = 3000
wakeUpTime = 0
deltaX = 0 deltaY = 0
function TIC()
cls()
print(TITLE,80,10)
slowedTime = time()*SPEED
for viewIx=1, #GAMEPADS_VIEWS do
wiev = GAMEPADS_VIEWS[viewIx]
if(time() > wakeUpTime) then
deltaX=math.cos(slowedTime+wiev.timeShift)*ROTATION_LIMIT
deltaY=math.sin(slowedTime*wiev.sinCoeff+wiev.timeShift)*ROTATION_LIMIT
end
print(wiev.name.value,
wiev.x+wiev.name.shiftX+deltaX,
wiev.y+wiev.name.shiftY+deltaY,
wiev.name.color)
for actIx=1, #wiev.actions do
act=wiev.actions[actIx]
print(act.name..": ", wiev.x+deltaX, wiev.y+actIx*ACTION_STEP_Y+deltaY)
state=btn(act.code) and STATE_ON or STATE_OFF
print(state.name, wiev.x+wiev.stateShiftX+deltaX,
wiev.y+actIx*ACTION_STEP_Y+deltaY, state.color)
if(state == STATE_ON) then
wakeUpTime = time()+SLEEP_DURATION
deltaX = 0 deltaY = 0
end
end
end
end