Advertisement
Nancok

MenuHandler.gd

Mar 16th, 2024 (edited)
626
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. extends Node2D
  2. class_name MainMenuHandler
  3.  
  4. enum Transitions {
  5.     INTERPOLATE,
  6.     FADE_TO
  7. }
  8.  
  9. const DEFAULT_ANIM_DURATION: float = 0.5
  10.  
  11.  
  12. @export var menu_defs: Array[MenuDefinition]
  13.  
  14.  
  15. var menu_active: MenuDefinition
  16.  
  17. var running_tweens: Array[Tween]
  18.  
  19.  
  20. func get_view_quadrant(quadrant: Vector2i = Vector2i.ZERO) -> Vector2:
  21.     var output: Vector2 = Vector2(
  22.         get_viewport_rect().size.x * quadrant.x - 1,
  23.         get_viewport_rect().size.y * quadrant.y - 1
  24.     )
  25.     return output
  26.  
  27. func change_to_menu(menu: MenuDefinition):
  28.     get_viewport().gui_release_focus()
  29.     for tween: Tween in running_tweens:
  30.         if is_instance_valid(tween):
  31.             tween.kill()
  32.    
  33.    
  34.     match menu.transition:
  35.         Transitions.INTERPOLATE:
  36.             anim_interpolate_view(menu.position)
  37.        
  38.         Transitions.FADE_TO:
  39.             anim_fade_move_view(menu.position)
  40.  
  41.     menu_active = menu
  42.    
  43.    
  44. func anim_interpolate_view(to: Vector2, duration: float = DEFAULT_ANIM_DURATION):
  45.     var tween: Tween = create_tween()
  46.     tween.tween_property(get_viewport(), "canvas_transform:origin", to, duration)
  47.  
  48. func anim_fade_move_view(to: Vector2, duration: float = DEFAULT_ANIM_DURATION):
  49.     var color_rect : = ColorRect.new()
  50.  
  51. class MenuDefinition extends Node2D:
  52.     var main_node: Node
  53.     var view_pos: Vector2
  54.     var anim_duration: float = DEFAULT_ANIM_DURATION
  55.     var transition: Transitions
  56.  
  57.     func _init(_main_node: Node):
  58.         main_node
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement