Advertisement
Guest User

Untitled

a guest
May 25th, 2015
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. class button{
  2. attr widget
  3. attr on_trigger
  4. attr mouse_down
  5.  
  6. def button(name, text, origin, size, on_trigger){
  7. this.widget := stage.create_actor()
  8. this.widget.set_origin(origin)
  9. this.widget.set_size(size)
  10. this.widget.add_model("button", origin, size, "green_button.json")
  11.  
  12. var text_color := vec3(1.0f, 1.0f, 1.0f)
  13. this.widget.add_text(name, text, origin, text_color, 24, "ui_font.ttf")
  14.  
  15. var trigger = on_trigger
  16. trigger() // triggers
  17.  
  18. this.on_trigger := on_trigger // does not trigger with this.on_trigger = on_trigger either
  19. this.mouse_down = false
  20.  
  21. on_trigger() // triggers
  22. this.on_trigger() // this does not trigger
  23.  
  24. this.widget.construct(fun(){}, fun(){}, fun[this](delta){this.logic(delta)})
  25. }
  26.  
  27. def logic(delta){
  28. var current_camera := stage.get_scene("current").get_camera("current")
  29. var world_coordinates := current_camera.convert_screen_to_world(core.input.get_mouse_coordinates())
  30.  
  31. var mouse_x = world_coordinates.x
  32. var mouse_y = world_coordinates.y
  33.  
  34. var x = this.widget.get_origin().x
  35. var y = this.widget.get_origin().y
  36.  
  37. var w = this.widget.get_size().x
  38. var h = this.widget.get_size().y
  39.  
  40. if(mouse_x >= x - w / 2.0f && mouse_x <= x + w / 2.0f && mouse_y >= y - h / 2.0f && mouse_y <= y + h / 2.0f){
  41.  
  42. if(core.input.is_key_down("mouse_left")){
  43. if(!this.mouse_down){
  44. this.widget.get_model("button").change_animation("button_on")
  45. this.mouse_down = true
  46. }
  47.  
  48. } else {
  49. if(this.mouse_down){
  50. this.widget.get_model("button").change_animation("button_off")
  51. this.mouse_down = false
  52. this.on_trigger()
  53. }
  54. }
  55. } else {
  56. this.mouse_down = false
  57. this.widget.get_model("button").change_animation("button_off")
  58. }
  59.  
  60. }
  61.  
  62. def get(){
  63. return this.widget
  64. }
  65.  
  66. }
  67.  
  68.  
  69. return fun(name, text, origin, size, on_trigger){
  70. return button(name, text, origin, size, on_trigger)
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement