mouse.odin 1.4 KB

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