layer_selecter.gd 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. extends Panel
  2. signal pressed(layer: int)
  3. @onready var buttons: Control = $Buttons
  4. @onready var value_label_pos: PanelContainer = $ValueLabelPos
  5. @onready var value_rich_text_label: RichTextLabel = $ValueLabelPos/VBoxContainer/ValueRichTextLabel
  6. var min_layer = -8
  7. var button_size = Vector2(64.0, 31.0)
  8. var button_pos_origin = Vector2(130.0, 45.0)
  9. var button_pos_step = Vector2(35.0, 33.0)
  10. func _ready() -> void:
  11. var layer = min_layer
  12. var i = 0
  13. for btn in buttons.get_children():
  14. if btn is Button:
  15. btn.position.x = button_pos_origin.x + button_pos_step.x * i
  16. btn.position.y = button_pos_origin.y + button_pos_step.y * btn.z_index
  17. btn.size = button_size
  18. btn.pressed.connect(_on_button_pressed.bind(layer))
  19. btn.mouse_entered.connect(_on_button_mouse_entered.bind(layer))
  20. btn.mouse_exited.connect(_on_button_mouse_exited)
  21. layer += 1
  22. i += 1
  23. func _process(_delta: float) -> void:
  24. pass
  25. func _on_button_pressed(index):
  26. pressed.emit(index)
  27. func _on_button_mouse_entered(index):
  28. value_label_pos.position.x = button_pos_origin.x + button_pos_step.x * (index - min_layer)
  29. value_rich_text_label.text = "[font_size=15][b]%d[/b][/font_size]" % index
  30. func _on_button_mouse_exited():
  31. value_label_pos.position.x = -9999