Skip to content

Commit 77b2773

Browse files
committed
Examples: Add in-game blocks demo
Just a demonstration to show the potential capability.
1 parent bde7c25 commit 77b2773

File tree

3 files changed

+153
-0
lines changed

3 files changed

+153
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
extends Control
2+
3+
@onready var _context := BlockEditorContext.get_default()
4+
5+
@onready var block_code_node: BlockCode = %BlockCode
6+
@onready var block_canvas: MarginContainer = %BlockCanvas
7+
@onready var drag_manager: Control = %DragManager
8+
9+
10+
func _ready() -> void:
11+
block_canvas.reconnect_block.connect(drag_manager.connect_block_canvas_signals)
12+
drag_manager.block_dropped.connect(save_script)
13+
drag_manager.block_modified.connect(save_script)
14+
_context.block_code_node = block_code_node
15+
16+
17+
func _input(event):
18+
if event is InputEventMouseButton:
19+
var mouse_event: InputEventMouseButton = event as InputEventMouseButton
20+
if mouse_event.button_index == MOUSE_BUTTON_LEFT:
21+
if mouse_event.pressed:
22+
# Release focus
23+
var focused_node := get_viewport().gui_get_focus_owner()
24+
if focused_node:
25+
focused_node.release_focus()
26+
else:
27+
drag_manager.drag_ended()
28+
29+
30+
func save_script():
31+
if _context.block_code_node == null:
32+
print("No script loaded to save.")
33+
return
34+
35+
var block_script: BlockScriptSerialization = _context.block_script
36+
block_canvas.rebuild_ast_list()
37+
block_canvas.rebuild_block_serialization_trees()
38+
var generated_script = block_canvas.generate_script_from_current_window()
39+
if generated_script != block_script.generated_script:
40+
block_script.generated_script = generated_script
41+
block_code_node._update_parent_script()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
uid://cnoxd00s0tn51
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
[gd_scene load_steps=19 format=3 uid="uid://cytyr4s3vkoqm"]
2+
3+
[ext_resource type="Script" uid="uid://cnoxd00s0tn51" path="res://addons/block_code/examples/demo_ingame/demo_ingame.gd" id="1_6vqkq"]
4+
[ext_resource type="PackedScene" uid="uid://c6vumewgnfquy" path="res://addons/block_code/ui/block_canvas/block_canvas.tscn" id="2_7wcyd"]
5+
[ext_resource type="Texture2D" uid="uid://dk8joxmlxu82l" path="res://icon.png" id="2_saega"]
6+
[ext_resource type="Script" uid="uid://cumxsbxj56dmk" path="res://addons/block_code/block_code_node/block_code.gd" id="3_com2k"]
7+
[ext_resource type="Script" uid="uid://brx1cabdmgu38" path="res://addons/block_code/serialization/block_serialization_tree.gd" id="4_dmtl1"]
8+
[ext_resource type="Script" uid="uid://u035wsjd5tpj" path="res://addons/block_code/serialization/block_serialization.gd" id="5_fjkgv"]
9+
[ext_resource type="Script" uid="uid://tlsvrkc3fubl" path="res://addons/block_code/serialization/block_script_serialization.gd" id="6_nae1f"]
10+
[ext_resource type="Script" uid="uid://duvgxorhfitb7" path="res://addons/block_code/serialization/value_block_serialization.gd" id="7_25a4o"]
11+
[ext_resource type="Script" uid="uid://bwkinr8omutpw" path="res://addons/block_code/code_generation/variable_definition.gd" id="7_qrh5q"]
12+
[ext_resource type="PackedScene" uid="uid://cph1k5cfximbf" path="res://addons/block_code/drag_manager/drag_manager.tscn" id="10_kgp86"]
13+
14+
[sub_resource type="Resource" id="Resource_7j0jm"]
15+
script = ExtResource("5_fjkgv")
16+
name = &"Node2D_change_rotation_degrees"
17+
children = Array[ExtResource("5_fjkgv")]([])
18+
arguments = {
19+
"value": -1.0
20+
}
21+
22+
[sub_resource type="Resource" id="Resource_p7e31"]
23+
script = ExtResource("5_fjkgv")
24+
name = &"Node2D_change_rotation_degrees"
25+
children = Array[ExtResource("5_fjkgv")]([])
26+
arguments = {
27+
"value": 5.0
28+
}
29+
30+
[sub_resource type="Resource" id="Resource_8vvuc"]
31+
script = ExtResource("5_fjkgv")
32+
name = &"process"
33+
children = Array[ExtResource("5_fjkgv")]([SubResource("Resource_7j0jm"), SubResource("Resource_p7e31")])
34+
arguments = {}
35+
36+
[sub_resource type="Resource" id="Resource_43nhb"]
37+
script = ExtResource("4_dmtl1")
38+
root = SubResource("Resource_8vvuc")
39+
canvas_position = Vector2(75, 150)
40+
41+
[sub_resource type="Resource" id="Resource_xn35n"]
42+
script = ExtResource("7_25a4o")
43+
name = &"mouse_position"
44+
arguments = {}
45+
46+
[sub_resource type="Resource" id="Resource_y3fve"]
47+
script = ExtResource("5_fjkgv")
48+
name = &"Node2D_set_position"
49+
children = Array[ExtResource("5_fjkgv")]([])
50+
arguments = {
51+
"value": SubResource("Resource_xn35n")
52+
}
53+
54+
[sub_resource type="Resource" id="Resource_k8cej"]
55+
script = ExtResource("4_dmtl1")
56+
root = SubResource("Resource_y3fve")
57+
canvas_position = Vector2(125, 397)
58+
59+
[sub_resource type="Resource" id="Resource_ydoon"]
60+
script = ExtResource("6_nae1f")
61+
script_inherits = "Sprite2D"
62+
block_serialization_trees = Array[ExtResource("4_dmtl1")]([SubResource("Resource_43nhb"), SubResource("Resource_k8cej")])
63+
variables = Array[ExtResource("7_qrh5q")]([])
64+
generated_script = "extends Sprite2D
65+
66+
67+
func _process(delta):
68+
rotation_degrees += -1
69+
rotation_degrees += 5
70+
71+
"
72+
version = 0
73+
74+
[node name="DemoInGame" type="Control"]
75+
layout_mode = 3
76+
anchors_preset = 15
77+
anchor_right = 1.0
78+
anchor_bottom = 1.0
79+
grow_horizontal = 2
80+
grow_vertical = 2
81+
mouse_filter = 1
82+
script = ExtResource("1_6vqkq")
83+
84+
[node name="HSplitContainer" type="HSplitContainer" parent="."]
85+
layout_mode = 1
86+
anchors_preset = 15
87+
anchor_right = 1.0
88+
anchor_bottom = 1.0
89+
grow_horizontal = 2
90+
grow_vertical = 2
91+
92+
[node name="BlockCanvas" parent="HSplitContainer" instance=ExtResource("2_7wcyd")]
93+
unique_name_in_owner = true
94+
layout_mode = 2
95+
96+
[node name="BoxContainer" type="BoxContainer" parent="HSplitContainer"]
97+
layout_mode = 2
98+
size_flags_horizontal = 3
99+
100+
[node name="Icon" type="Sprite2D" parent="HSplitContainer/BoxContainer"]
101+
position = Vector2(290, 317)
102+
texture = ExtResource("2_saega")
103+
104+
[node name="BlockCode" type="Node" parent="HSplitContainer/BoxContainer/Icon"]
105+
unique_name_in_owner = true
106+
script = ExtResource("3_com2k")
107+
block_script = SubResource("Resource_ydoon")
108+
109+
[node name="DragManager" parent="." instance=ExtResource("10_kgp86")]
110+
unique_name_in_owner = true
111+
block_canvas_path = NodePath("../HSplitContainer/BlockCanvas")

0 commit comments

Comments
 (0)