Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node2D
- class_name MainMenuHandler
- enum Transitions {
- INTERPOLATE,
- FADE_TO
- }
- const DEFAULT_ANIM_DURATION: float = 0.5
- @export var menu_defs: Array[MenuDefinition]
- var menu_active: MenuDefinition
- var running_tweens: Array[Tween]
- func get_view_quadrant(quadrant: Vector2i = Vector2i.ZERO) -> Vector2:
- var output: Vector2 = Vector2(
- get_viewport_rect().size.x * quadrant.x - 1,
- get_viewport_rect().size.y * quadrant.y - 1
- )
- return output
- func change_to_menu(menu: MenuDefinition):
- get_viewport().gui_release_focus()
- for tween: Tween in running_tweens:
- if is_instance_valid(tween):
- tween.kill()
- match menu.transition:
- Transitions.INTERPOLATE:
- anim_interpolate_view(menu.position)
- Transitions.FADE_TO:
- anim_fade_move_view(menu.position)
- menu_active = menu
- func anim_interpolate_view(to: Vector2, duration: float = DEFAULT_ANIM_DURATION):
- var tween: Tween = create_tween()
- tween.tween_property(get_viewport(), "canvas_transform:origin", to, duration)
- func anim_fade_move_view(to: Vector2, duration: float = DEFAULT_ANIM_DURATION):
- var color_rect : = ColorRect.new()
- class MenuDefinition extends Node2D:
- var main_node: Node
- var view_pos: Vector2
- var anim_duration: float = DEFAULT_ANIM_DURATION
- var transition: Transitions
- func _init(_main_node: Node):
- main_node
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement