Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends TextureRect
- export var menu_parent_path: NodePath
- onready var menu_parent = get_node(menu_parent_path)
- var v_id = 0
- var h_id = 0
- var g_id = Vector2.ZERO
- export var movable: bool = false
- func _process(_delta):
- if visible and movable:
- if menu_parent is HBoxContainer:
- h_input()
- elif menu_parent is VBoxContainer:
- v_input()
- elif menu_parent is GridContainer:
- g_input()
- if visible:
- if menu_parent is HBoxContainer:
- h_id = posmod(h_id, menu_parent.get_child_count())
- rect_global_position = Vector2(menu_parent.get_child(h_id).rect_global_position.x - 20, menu_parent.get_child(h_id).rect_global_position.y)
- elif menu_parent is VBoxContainer:
- v_id = posmod(v_id, menu_parent.get_child_count())
- rect_global_position = Vector2(menu_parent.get_child(v_id).rect_global_position.x - 20, menu_parent.get_child(v_id).rect_global_position.y)
- elif menu_parent is GridContainer:
- var count_col = get_count_at_column(g_id.x)
- var count_row = get_count_at_row(g_id.y)
- g_id.x = posmod(g_id.x, count_row)
- g_id.y = posmod(g_id.y, count_col)
- rect_global_position = Vector2(menu_parent.get_child(g_id.x + g_id.y * menu_parent.columns).rect_global_position.x - 20, menu_parent.get_child(g_id.x + g_id.y * menu_parent.columns).rect_global_position.y)
- func h_input():
- if Input.is_action_just_pressed("left"):
- h_id -= 1
- elif Input.is_action_just_pressed("right"):
- h_id += 1
- func v_input():
- if Input.is_action_just_pressed("up"):
- v_id -= 1
- elif Input.is_action_just_pressed("down"):
- v_id += 1
- func g_input():
- if Input.is_action_just_pressed("left"):
- g_id.x -= 1
- elif Input.is_action_just_pressed("right"):
- g_id.x += 1
- elif Input.is_action_just_pressed("up"):
- g_id.y -= 1
- elif Input.is_action_just_pressed("down"):
- g_id.y += 1
- func get_count_at_column(column: int):
- var elements = menu_parent.get_child_count() / menu_parent.columns
- var remaining_elements = menu_parent.get_child_count() % menu_parent.columns
- if column < remaining_elements:
- return elements + 1
- return elements
- func get_count_at_row(row: int):
- if row < menu_parent.get_child_count() / menu_parent.columns:
- return menu_parent.columns
- else:
- return menu_parent.get_child_count() % menu_parent.columns
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement