Skip to content

Instantly share code, notes, and snippets.

@amirrajan
Created October 9, 2022 01:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amirrajan/75b4e1f1e9ee827e74e1f26d101aa3d7 to your computer and use it in GitHub Desktop.
Save amirrajan/75b4e1f1e9ee827e74e1f26d101aa3d7 to your computer and use it in GitHub Desktop.
A Car That Turns - Input Function
class Game
attr_gtk
def input_game
return if state.scene != :game
if inputs.mouse.click && (inputs.mouse.intersect_rect? state.review_button_rect)
state.next_scene = :review
end
if inputs.keyboard.key_down.r
state.last_checkpoint = nil
state.clock = 0
state.death_count = 0
state.death_at = 0
reset_game!
end
input_gear
return if state.clock - state.death_at < 30
turn_magnitude = 1.0
turn_magnitude = inputs.controller_one.left_analog_x_perc * 1.15 if inputs.controller_one.left_analog_x_perc.abs > 0
drift_down = !!inputs.keyboard.space ||
!!inputs.controller_one.r1 ||
!!inputs.controller_one.r2
left_down = !!inputs.left || !!inputs.keyboard.j
right_down = !!inputs.right || !!inputs.keyboard.k
state.turn_magnitude = turn_magnitude
if gtk.platform? :mobile
if inputs.finger_left
b = args.state.buttons.find { |b| inputs.finger_left.inside_rect? b }
args.outputs.primitives << b.border!(r: 255, g: 255, b: 255, a: 255) if b
if b && b.m == :left
state.input_occurred = true
left_down = true
right_down = false
elsif b && b.m == :right
state.input_occurred = true
left_down = false
right_down = true
end
end
if inputs.finger_right
b = args.state.buttons.find { |b| inputs.finger_right.inside_rect? b }
args.outputs.primitives << b.border!(r: 255, g: 255, b: 255, a: 255) if b
drift_down = false
if b && b.m == :drift
state.input_occurred = true
drift_down = true
end
end
end
if left_down
state.input_occurred = true
state.steering = :left
elsif right_down
state.input_occurred = true
state.steering = :right
else
state.steering = :released
end
if drift_down
state.input_occurred = true
state.drift_mode = :on
else
state.drift_mode = :off
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment