summaryrefslogtreecommitdiff
path: root/addons/escoria-wizard/BackgroundItem.gd
diff options
context:
space:
mode:
Diffstat (limited to 'addons/escoria-wizard/BackgroundItem.gd')
-rw-r--r--addons/escoria-wizard/BackgroundItem.gd139
1 files changed, 139 insertions, 0 deletions
diff --git a/addons/escoria-wizard/BackgroundItem.gd b/addons/escoria-wizard/BackgroundItem.gd
new file mode 100644
index 0000000..57aadb7
--- /dev/null
+++ b/addons/escoria-wizard/BackgroundItem.gd
@@ -0,0 +1,139 @@
+@tool
+extends MarginContainer
+
+var source_image:Image
+var image_stream_texture:CompressedTexture2D
+var image_has_been_loaded:bool
+var image_size:Vector2
+
+# Called when the node enters the scene tree for the first time.
+func _ready() -> void:
+ background_item_reset()
+
+
+func background_item_reset() -> void:
+ $Content/GridContainer/ItemName.text = "replace_me"
+ $Content/GridContainer/ItemGlobalID.text = ""
+ $Content/GridContainer/StartsInnteractiveCheckBox.button_pressed = true
+ if $Content/GridContainer/DefaultActionOption.get_item_count() > 0:
+ $Content/GridContainer/DefaultActionOption.clear()
+ for option_list in ["look", "pick up", "open", "close", "use", "push", "pull", "talk"]:
+ $Content/GridContainer/DefaultActionOption.add_item(option_list)
+ $Content/GridContainer/DefaultActionOption.selected = 0
+ image_size = Vector2.ZERO
+ image_has_been_loaded = false
+
+
+func background_on_ItemName_text_changed(new_text: String) -> void:
+ $Content/GridContainer/ItemGlobalID.text = new_text
+
+
+func load_button_pressed() -> void:
+ $LoadObjectGraphic/LoadObjectFileDialog.popup()
+
+
+func LoadObjectFileDialog_file_selected(path: String) -> void:
+ image_stream_texture = load(path)
+
+ $Content/GridContainer/Preview/Preview.texture = image_stream_texture
+
+ var preview_size = $Content/GridContainer/Preview/Preview.size
+
+ # Calculate the scale to make the preview as big as possible in the preview window depending on
+ # the height to width ratio of the frame
+ image_size = image_stream_texture.get_size()
+ var preview_scale = Vector2.ONE
+ preview_scale.x = preview_size.x / image_size.x
+ preview_scale.y = preview_size.y / image_size.y
+
+ if preview_scale.y > preview_scale.x:
+ $Content/GridContainer/Preview/Preview.scale = Vector2(preview_scale.x, preview_scale.x)
+ else:
+ $Content/GridContainer/Preview/Preview.scale = Vector2(preview_scale.y, preview_scale.y)
+
+ $Content/GridContainer/ImageSize.text = "(%s, %s)" % [image_size.x, image_size.y]
+
+ $Content/GridContainer/ImagePath.text = path
+ image_has_been_loaded = true
+
+
+
+func _on_CreateButton_pressed() -> void:
+ var err_window = "../InformationWindows/generic_error_window"
+ if ! image_has_been_loaded:
+ get_node(err_window).dialog_text = \
+ "No image has been loaded."
+ get_node(err_window).popup()
+ return
+ if $Content/GridContainer/ItemName.text == "replace_me":
+ get_node(err_window).dialog_text = \
+ "Please change the object name."
+ get_node(err_window).popup()
+ return
+
+ var item = ESCItem.new()
+ item.name = $Content/GridContainer/ItemName.text
+ item.global_id = $Content/GridContainer/ItemGlobalID.text
+ item.is_interactive = $Content/GridContainer/StartsInnteractiveCheckBox.pressed
+ item.tooltip_name = $Content/GridContainer/ItemName.text
+
+ var selected_index = $Content/GridContainer/DefaultActionOption.selected
+ item.default_action = $Content/GridContainer/DefaultActionOption.get_item_text(selected_index)
+
+ # Add sprite to the background item
+ var item_sprite = Sprite2D.new()
+ item_sprite.texture = $Content/GridContainer/Preview/Preview.texture
+ item.add_child(item_sprite)
+
+ # Add Dialog Position to the background item
+ var interact_position = ESCLocation.new()
+ interact_position.name = "interact_position"
+ interact_position.position.y = image_size.y * 2
+ print("A")
+ item.add_child(interact_position)
+
+ # Add Collision shape to the background item
+ var rectangle_shape = RectangleShape2D.new()
+ var collision_shape = CollisionShape2D.new()
+
+ collision_shape.shape = rectangle_shape
+ collision_shape.shape.extents = image_size / 2
+ print("B")
+ item.add_child(collision_shape)
+ print("c")
+ # Make it so all the nodes can be seen in the scene tree
+ interact_position.set_owner(item)
+ print("d")
+ collision_shape.set_owner(item)
+ print("e")
+
+ item_sprite.set_owner(item)
+
+ print("f")
+
+# get_tree().edited_scene_root.add_child(item)
+# item.set_owner(get_tree().edited_scene_root)
+
+
+ var current_node = EditorPlugin.new().get_editor_interface().get_selection().get_selected_nodes()[0]
+# print("Cur = "+str(current_node))
+# print("Cur0 = "+str(current_node[0]))
+ print("g")
+
+ current_node.add_child(item)
+ print("h")
+
+# item.set_owner(current_node)
+ item.set_owner(get_tree().edited_scene_root)
+ print("Created.")
+ #item.queue_free()
+
+#func get_edited_root() -> Node:
+# var plugin := EditorPlugin.new()
+# var eds:EditorInterface
+# eds = plugin.get_selection()
+# var selected:EditorInterface
+# selected = eds.get_selected_nodes()[0]
+# if selected:
+# return selected.get_tree().get_edited_scene_root()
+# return null