diff --git a/entities/plane.lua b/entities/plane.lua index d5f51ca..587ceb2 100644 --- a/entities/plane.lua +++ b/entities/plane.lua @@ -306,7 +306,7 @@ Plane = Class{ if self.accelerating then self.motorPower = math.min(max_motorPower, self.motorPower + dt * accel_speed) end - if self.decelerating or self.brake then + if self.decelerating then self.motorPower = math.max(0.0, self.motorPower - dt * decel_speed) end self.motorPower = math.max(0.0, math.min(max_motorPower, self.motorPower + dt * self.throttleY * accel_speed)) @@ -499,25 +499,11 @@ Plane = Class{ self.turningCcw = isTurning end; - analog = function(self, controlY, throttleX, throttleY, fire, brake) + analog = function(self, controlY, throttleX, throttleY) if self.health > 0 then self.controlY = controlY self.throttleX = throttleX self.throttleY = -throttleY - self.fire = fire - self.brake = brake - - if fire then - if not self.kbdShooting and not self.joyShooting then - self.machinegun:startShooting() - end - self.joyShooting = true - else - self.joyShooting = false - if not self.kbdShooting and not self.joyShooting then - self.machinegun:stopShooting() - end - end end end; diff --git a/level_state.lua b/level_state.lua index de8ae81..9dca20b 100644 --- a/level_state.lua +++ b/level_state.lua @@ -20,6 +20,8 @@ local players = { [2] = Player(2, 'Nicd') } +local lastJoystickButtons = { nil, nil } + local scoreboards = {} local level_music = nil @@ -113,10 +115,22 @@ function level_state:update(dt) for i = 1, j:getButtonCount(), 1 do buttons[i] = j:isDown(i) end + if lastJoystickButtons[player] ~= nil then + for i = 1, #buttons, 1 do + if buttons[i] ~= lastJoystickButtons[player][i] then + local key = string.format("button%d", i) + if buttons[i] then + players[player]:press(key) + else + players[player]:release(key) + end + end + end + end + lastJoystickButtons[player] = buttons local x1, y1, x2, y2 = j:getAxes() - if #buttons >= 8 and y2 ~= nil then - -- button mapping suitable for XBox original controller - players[player]:joystick(y2 - x2, x1, y1, buttons[8], buttons[7]) + if y2 ~= nil then + players[player]:joystick(y2 - x2, x1, y1) end end end