sokoban.love/0016-on.mouse_press

51 lines
1.8 KiB
Plaintext

on.mouse_press = function(x,y, mouse_button)
if not Show_code then
if car.mouse_press then
call_protected(car.mouse_press, x,y, mouse_button)
end
if car.mousepressed then
call_protected(car.mousepressed, x,y, mouse_button)
end
else
-- == menu area
-- some hysteresis right after a button has been pressed
if Active_button then return end
if mouse_press_consumed_by_any_button(Global_state, x,y, mouse_button) then
Button_pressed = true
return
end
-- == settings area
if mouse_press_consumed_by_any_slider(Global_state, x,y) then
return
end
if Show_menu == 'settings' then
if on_area(Settings_menu_area, x,y) then
-- nothing atm in settings menu that isn't a button or slider
else
Show_menu = nil
-- On mobile devices, we can't depend on on.save_settings() triggering on quit.
-- So save settings every time we close the settings menu.
love.filesystem.write('config', json.encode(settings()))
end
return
end
-- == main area
Show_menu = nil
if on_editor_scrollbar(Current_pane.editor_state, x,y) then
Current_pane.editor_state.scrollbar_drag = true
local sbtopy = compute_scrollbar_topy(Current_pane.editor_state)
Current_pane.editor_state.scrollbar_offset = y - sbtopy
elseif on_editor_scrollbar_area(Current_pane.editor_state, x,y) then
-- nothing
elseif x < Current_pane.editor_state.right + 15 - 5 and y < Current_pane.editor_state.bottom + 5 + 10 - 5 then
love.keyboard.setTextInput(true)
edit.mouse_press(Current_pane.editor_state, x,y, mouse_button)
elseif on_editor_scrollbar(Output_editor_state, x,y) then
Output_editor_state.scrollbar_drag = true
local sbtopy = compute_scrollbar_topy(Output_editor_state)
Output_editor_state.scrollbar_offset = y - sbtopy
elseif on_editor_scrollbar_area(Output_editor_state, x,y) then
-- nothing
end
end
end