generated from mstar/godot-template
Code stuff
This commit is contained in:
parent
cf22890c16
commit
e58093b5a5
153 changed files with 11196 additions and 4 deletions
11
addons/imjp94.yafsm/scenes/state_nodes/StateInspector.gd
Normal file
11
addons/imjp94.yafsm/scenes/state_nodes/StateInspector.gd
Normal file
|
@ -0,0 +1,11 @@
|
|||
extends EditorInspectorPlugin
|
||||
|
||||
const State = preload("res://addons/imjp94.yafsm/src/states/State.gd")
|
||||
|
||||
func _can_handle(object):
|
||||
return object is State
|
||||
|
||||
func _parse_property(object, type, path, hint, hint_text, usage, wide) -> bool:
|
||||
return false
|
||||
# Hide all property
|
||||
return true
|
82
addons/imjp94.yafsm/scenes/state_nodes/StateNode.gd
Normal file
82
addons/imjp94.yafsm/scenes/state_nodes/StateNode.gd
Normal file
|
@ -0,0 +1,82 @@
|
|||
@tool
|
||||
extends "res://addons/imjp94.yafsm/scenes/flowchart/FlowChartNode.gd"
|
||||
const State = preload("../../src/states/State.gd")
|
||||
const StateMachine = preload("../../src/states/StateMachine.gd")
|
||||
|
||||
signal name_edit_entered(new_name) # Emits when focused exit or Enter pressed
|
||||
|
||||
@onready var name_edit = $MarginContainer/NameEdit
|
||||
|
||||
var undo_redo
|
||||
|
||||
var state:
|
||||
set = set_state
|
||||
|
||||
|
||||
func _init():
|
||||
super._init()
|
||||
|
||||
set_state(State.new())
|
||||
|
||||
func _ready():
|
||||
name_edit.focus_exited.connect(_on_NameEdit_focus_exited)
|
||||
name_edit.text_submitted.connect(_on_NameEdit_text_submitted)
|
||||
set_process_input(false) # _input only required when name_edit enabled to check mouse click outside
|
||||
|
||||
func _draw():
|
||||
if state is StateMachine:
|
||||
if selected:
|
||||
draw_style_box(get_theme_stylebox("nested_focus", "StateNode"), Rect2(Vector2.ZERO, size))
|
||||
else:
|
||||
draw_style_box(get_theme_stylebox("nested_normal", "StateNode"), Rect2(Vector2.ZERO, size))
|
||||
else:
|
||||
super._draw()
|
||||
|
||||
func _input(event):
|
||||
if event is InputEventMouseButton:
|
||||
if event.pressed:
|
||||
# Detect click outside rect
|
||||
if get_viewport().gui_get_focus_owner() == name_edit:
|
||||
var local_event = make_input_local(event)
|
||||
if not name_edit.get_rect().has_point(local_event.position):
|
||||
name_edit.release_focus()
|
||||
|
||||
func enable_name_edit(v):
|
||||
if v:
|
||||
set_process_input(true)
|
||||
name_edit.editable = true
|
||||
name_edit.selecting_enabled = true
|
||||
name_edit.mouse_filter = MOUSE_FILTER_PASS
|
||||
mouse_default_cursor_shape = CURSOR_IBEAM
|
||||
name_edit.grab_focus()
|
||||
else:
|
||||
set_process_input(false)
|
||||
name_edit.editable = false
|
||||
name_edit.selecting_enabled = false
|
||||
name_edit.mouse_filter = MOUSE_FILTER_IGNORE
|
||||
mouse_default_cursor_shape = CURSOR_ARROW
|
||||
name_edit.release_focus()
|
||||
|
||||
func _on_state_name_changed(new_name):
|
||||
name_edit.text = new_name
|
||||
size.x = 0 # Force reset horizontal size
|
||||
|
||||
func _on_state_changed(new_state):
|
||||
if state:
|
||||
state.name_changed.connect(_on_state_name_changed)
|
||||
if name_edit:
|
||||
name_edit.text = state.name
|
||||
|
||||
func _on_NameEdit_focus_exited():
|
||||
enable_name_edit(false)
|
||||
name_edit.deselect()
|
||||
emit_signal("name_edit_entered", name_edit.text)
|
||||
|
||||
func _on_NameEdit_text_submitted(new_text):
|
||||
enable_name_edit(false)
|
||||
emit_signal("name_edit_entered", new_text)
|
||||
|
||||
func set_state(s):
|
||||
if state != s:
|
||||
state = s
|
||||
_on_state_changed(s)
|
79
addons/imjp94.yafsm/scenes/state_nodes/StateNode.tscn
Normal file
79
addons/imjp94.yafsm/scenes/state_nodes/StateNode.tscn
Normal file
|
@ -0,0 +1,79 @@
|
|||
[gd_scene load_steps=8 format=3 uid="uid://l3mqbqjwjkc3"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/imjp94.yafsm/scenes/state_nodes/StateNode.gd" id="2"]
|
||||
[ext_resource type="SystemFont" uid="uid://dmcxm8gxsonbq" path="res://addons/imjp94.yafsm/assets/fonts/sans_serif.tres" id="2_352m3"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="1"]
|
||||
bg_color = Color(0.164706, 0.164706, 0.164706, 1)
|
||||
border_width_left = 1
|
||||
border_width_top = 1
|
||||
border_width_right = 1
|
||||
border_width_bottom = 1
|
||||
border_color = Color(0.44, 0.73, 0.98, 1)
|
||||
corner_radius_top_left = 4
|
||||
corner_radius_top_right = 4
|
||||
corner_radius_bottom_right = 4
|
||||
corner_radius_bottom_left = 4
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="2"]
|
||||
bg_color = Color(0.164706, 0.164706, 0.164706, 1)
|
||||
border_width_left = 1
|
||||
border_width_top = 1
|
||||
border_width_right = 1
|
||||
border_width_bottom = 1
|
||||
corner_radius_top_left = 4
|
||||
corner_radius_top_right = 4
|
||||
corner_radius_bottom_right = 4
|
||||
corner_radius_bottom_left = 4
|
||||
corner_detail = 2
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="3"]
|
||||
bg_color = Color(0.164706, 0.164706, 0.164706, 1)
|
||||
border_width_left = 3
|
||||
border_width_top = 3
|
||||
border_width_right = 3
|
||||
border_width_bottom = 3
|
||||
border_color = Color(0.960784, 0.772549, 0.333333, 1)
|
||||
shadow_size = 2
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="4"]
|
||||
bg_color = Color(0.164706, 0.164706, 0.164706, 1)
|
||||
border_width_left = 3
|
||||
border_width_top = 3
|
||||
border_width_right = 3
|
||||
border_width_bottom = 3
|
||||
shadow_size = 2
|
||||
|
||||
[sub_resource type="Theme" id="5"]
|
||||
FlowChartNode/styles/focus = SubResource("1")
|
||||
FlowChartNode/styles/normal = SubResource("2")
|
||||
StateNode/styles/nested_focus = SubResource("3")
|
||||
StateNode/styles/nested_normal = SubResource("4")
|
||||
|
||||
[node name="StateNode" type="HBoxContainer"]
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme = SubResource("5")
|
||||
script = ExtResource("2")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="."]
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="NameEdit" type="LineEdit" parent="MarginContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
mouse_filter = 2
|
||||
mouse_default_cursor_shape = 0
|
||||
theme_override_fonts/font = ExtResource("2_352m3")
|
||||
text = "State"
|
||||
alignment = 1
|
||||
editable = false
|
||||
expand_to_text_length = true
|
||||
selecting_enabled = false
|
||||
caret_blink = true
|
Loading…
Add table
Add a link
Reference in a new issue