mouse.odin 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package karl2d_gamepad_example
  2. import k2 "../.."
  3. import "core:log"
  4. import "core:fmt"
  5. init :: proc() {
  6. k2.init(1000, 600, "Karl2D Mouse Demo")
  7. }
  8. wheel: f32
  9. step :: proc() -> bool {
  10. k2.new_frame()
  11. k2.process_events()
  12. k2.clear(k2.BLUE)
  13. pos := k2.get_mouse_position()
  14. k2.draw_circle(pos, 50, k2.WHITE)
  15. left_pos := pos - {30, 20}
  16. middle_pos := pos - {0, 30}
  17. right_pos := pos - {-30, 20}
  18. left_color := k2.BLACK
  19. middle_color := k2.BLACK
  20. right_color := k2.BLACK
  21. if k2.mouse_button_went_down(.Left) {
  22. left_color = k2.GREEN
  23. } else if k2.mouse_button_is_held(.Left) {
  24. left_color = k2.RED
  25. } else if k2.mouse_button_went_up(.Left) {
  26. left_color = k2.BLUE
  27. }
  28. if k2.mouse_button_went_down(.Middle) {
  29. middle_color = k2.GREEN
  30. } else if k2.mouse_button_is_held(.Middle) {
  31. middle_color = k2.RED
  32. } else if k2.mouse_button_went_up(.Middle) {
  33. middle_color = k2.BLUE
  34. }
  35. if k2.mouse_button_went_down(.Right) {
  36. right_color = k2.GREEN
  37. } else if k2.mouse_button_is_held(.Right) {
  38. right_color = k2.RED
  39. } else if k2.mouse_button_went_up(.Right) {
  40. right_color = k2.BLUE
  41. }
  42. k2.draw_circle(left_pos, 10, left_color)
  43. k2.draw_circle(middle_pos, 10, middle_color)
  44. k2.draw_circle(right_pos, 10, right_color)
  45. wheel += k2.get_mouse_wheel_delta()
  46. wheel_msg := fmt.tprintf("Wheel: %.1f", wheel)
  47. wheel_msg_width := k2.measure_text(wheel_msg, 20).x
  48. k2.draw_text(wheel_msg, pos + {-wheel_msg_width/2, 70}, 20, k2.WHITE)
  49. k2.present()
  50. free_all(context.temp_allocator)
  51. return !k2.shutdown_wanted()
  52. }
  53. shutdown :: proc() {
  54. k2.shutdown()
  55. }
  56. main :: proc() {
  57. context.logger = log.create_console_logger()
  58. init()
  59. run := true
  60. for run {
  61. run = step()
  62. }
  63. shutdown()
  64. }