Skip to content

Commit

Permalink
Fix editor templates
Browse files Browse the repository at this point in the history
The syntax for placeholders has changed. Also the templates are now
expected to be in a subfolder for the target class name. Using "Node" so
the templates are offered when adding a script to any node in the tree.

Fix ephread#95
  • Loading branch information
manuq committed Feb 26, 2025
1 parent fea9098 commit 390fe57
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 83 deletions.
8 changes: 4 additions & 4 deletions addons/inkgd/editor/ink_editor_plugin.gd
Original file line number Diff line number Diff line change
Expand Up @@ -200,11 +200,11 @@ func _add_templates():
# Setup the templates folder for the project
var template_dir_path = ProjectSettings.get_setting("editor/script/templates_search_path")
if !DirAccess.dir_exists_absolute(template_dir_path):
DirAccess.make_dir_absolute(template_dir_path)
DirAccess.make_dir_recursive_absolute(template_dir_path + "/Node")

for template_name in names:
var template_file_path = template_dir_path + "/" + template_name
DirAccess.copy_absolute("res://addons/inkgd/editor/templates/" + template_name, template_file_path)
var template_file_path = template_dir_path + "/Node/" + template_name
DirAccess.copy_absolute("res://addons/inkgd/editor/templates/Node/" + template_name, template_file_path)


## Unregisters the script templates provided by the plugin.
Expand All @@ -222,7 +222,7 @@ func _remove_templates():
func _get_plugin_templates_names() -> Array:
var plugin_template_names = []

var dir = DirAccess.open("res://addons/inkgd/editor/templates/")
var dir = DirAccess.open("res://addons/inkgd/editor/templates/Node")
if dir:
dir.list_dir_begin()
var temp = dir.get_next()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# warning-ignore-all:return_value_discarded

extends %BASE%
extends _BASE_

# ############################################################################ #
# Imports
Expand All @@ -21,81 +21,81 @@ var InkPlayer = load("res://addons/inkgd/ink_player.gd")
# ############################################################################ #

func _ready():
%TS%# Adds the player to the tree.
%TS%add_child(_ink_player)
_TS_# Adds the player to the tree.
_TS_add_child(_ink_player)

%TS%# Replace the example path with the path to your story.
%TS%# Remove this line if you set 'ink_file' in the inspector.
%TS%_ink_player.ink_file = load("res://path/to/file.ink.json")
_TS_# Replace the example path with the path to your story.
_TS_# Remove this line if you set 'ink_file' in the inspector.
_TS__ink_player.ink_file = load("res://path/to/file.ink.json")

%TS%# It's recommended to load the story in the background. On platforms that
%TS%# don't support threads, the value of this variable is ignored.
%TS%_ink_player.loads_in_background = true
_TS_# It's recommended to load the story in the background. On platforms that
_TS_# don't support threads, the value of this variable is ignored.
_TS__ink_player.loads_in_background = true

%TS%_ink_player.connect("loaded", Callable(self, "_story_loaded"))
_TS__ink_player.connect("loaded", Callable(self, "_story_loaded"))

%TS%# Creates the story. 'loaded' will be emitted once Ink is ready
%TS%# continue the story.
%TS%_ink_player.create_story()
_TS_# Creates the story. 'loaded' will be emitted once Ink is ready
_TS_# continue the story.
_TS__ink_player.create_story()


# ############################################################################ #
# Signal Receivers
# ############################################################################ #

func _story_loaded(successfully: bool):
%TS%if !successfully:
%TS%%TS%return
_TS_if !successfully:
_TS__TS_return

%TS%# _observe_variables()
%TS%# _bind_externals()
_TS_# _observe_variables()
_TS_# _bind_externals()

%TS%_continue_story()
_TS__continue_story()


# ############################################################################ #
# Private Methods
# ############################################################################ #

func _continue_story():
%TS%while _ink_player.can_continue:
%TS%%TS%var text = _ink_player.continue_story()
%TS%%TS%# This text is a line of text from the ink story.
%TS%%TS%# Set the text of a Label to this value to display it in your game.
%TS%%TS%print(text)
%TS%if _ink_player.has_choices:
%TS%%TS%# 'current_choices' contains a list of the choices, as strings.
%TS%%TS%for choice in _ink_player.current_choices:
%TS%%TS%%TS%print(choice.text)
%TS%%TS%%TS%print(choice.tags)
%TS%%TS%# '_select_choice' is a function that will take the index of
%TS%%TS%# your selection and continue the story.
%TS%%TS%_select_choice(0)
%TS%else:
%TS%%TS%# This code runs when the story reaches it's end.
%TS%%TS%print("The End")
_TS_while _ink_player.can_continue:
_TS__TS_var text = _ink_player.continue_story()
_TS__TS_# This text is a line of text from the ink story.
_TS__TS_# Set the text of a Label to this value to display it in your game.
_TS__TS_print(text)
_TS_if _ink_player.has_choices:
_TS__TS_# 'current_choices' contains a list of the choices, as strings.
_TS__TS_for choice in _ink_player.current_choices:
_TS__TS__TS_print(choice.text)
_TS__TS__TS_print(choice.tags)
_TS__TS_# '_select_choice' is a function that will take the index of
_TS__TS_# your selection and continue the story.
_TS__TS__select_choice(0)
_TS_else:
_TS__TS_# This code runs when the story reaches it's end.
_TS__TS_print("The End")


func _select_choice(index):
%TS%_ink_player.choose_choice_index(index)
%TS%_continue_story()
_TS__ink_player.choose_choice_index(index)
_TS__continue_story()


# Uncomment to bind an external function.
#
# func _bind_externals():
# %TS%_ink_player.bind_external_function("<function_name>", self, "_external_function")
# _TS__ink_player.bind_external_function("<function_name>", self, "_external_function")
#
#
# func _external_function(arg1, arg2):
# %TS%pass
# _TS_pass


# Uncomment to observe the variables from your ink story.
# You can observe multiple variables by putting adding them in the array.
# func _observe_variables():
# %TS%_ink_player.observe_variables(["var1", "var2"], self, "_variable_changed")
# _TS__ink_player.observe_variables(["var1", "var2"], self, "_variable_changed")
#
#
# func _variable_changed(variable_name, new_value):
# %TS%print("Variable '%s' changed to: %s" %[variable_name, new_value])
# _TS_print("Variable '%s' changed to: %s" %[variable_name, new_value])
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# warning-ignore-all:return_value_discarded

extends %BASE%
extends _BASE_

# ############################################################################ #
# Imports
Expand All @@ -22,86 +22,86 @@ var InkPlayer = load("res://addons/inkgd/ink_player.gd")
# ############################################################################ #

func _ready():
%TS%# Adds the player to the tree.
%TS%add_child(_ink_player)
_TS_# Adds the player to the tree.
_TS_add_child(_ink_player)

%TS%# Replace the example path with the path to your story.
%TS%# Remove this line if you set 'ink_file' in the inspector.
%TS%_ink_player.ink_file = load("res://path/to/file.ink.json")
_TS_# Replace the example path with the path to your story.
_TS_# Remove this line if you set 'ink_file' in the inspector.
_TS__ink_player.ink_file = load("res://path/to/file.ink.json")

%TS%# It's recommended to load the story in the background. On platforms that
%TS%# don't support threads, the value of this variable is ignored.
%TS%_ink_player.loads_in_background = true
_TS_# It's recommended to load the story in the background. On platforms that
_TS_# don't support threads, the value of this variable is ignored.
_TS__ink_player.loads_in_background = true

%TS%_ink_player.connect("loaded", Callable(self, "_story_loaded"))
%TS%_ink_player.connect("continued", Callable(self, "_continued"))
%TS%_ink_player.connect("prompt_choices", Callable(self, "_prompt_choices"))
%TS%_ink_player.connect("ended", Callable(self, "_ended"))
_TS__ink_player.connect("loaded", Callable(self, "_story_loaded"))
_TS__ink_player.connect("continued", Callable(self, "_continued"))
_TS__ink_player.connect("prompt_choices", Callable(self, "_prompt_choices"))
_TS__ink_player.connect("ended", Callable(self, "_ended"))

%TS%# Creates the story. 'loaded' will be emitted once Ink is ready
%TS%# continue the story.
%TS%_ink_player.create_story()
_TS_# Creates the story. 'loaded' will be emitted once Ink is ready
_TS_# continue the story.
_TS__ink_player.create_story()

# ############################################################################ #
# Signal Receivers
# ############################################################################ #

func _story_loaded(successfully: bool):
%TS%if !successfully:
%TS%%TS%return
_TS_if !successfully:
_TS__TS_return

%TS%# _observe_variables()
%TS%# _bind_externals()
_TS_# _observe_variables()
_TS_# _bind_externals()

%TS%# Here, the story is started immediately, but it could be started
%TS%# at a later time.
%TS%_ink_player.continue_story()
_TS_# Here, the story is started immediately, but it could be started
_TS_# at a later time.
_TS__ink_player.continue_story()


func _continued(text, tags):
%TS%print(text)
%TS%# Here you could yield for an hypothetical signal, before continuing.
%TS%# await self.event
%TS%_ink_player.continue_story()
_TS_print(text)
_TS_# Here you could yield for an hypothetical signal, before continuing.
_TS_# await self.event
_TS__ink_player.continue_story()


# ############################################################################ #
# Private Methods
# ############################################################################ #

func _prompt_choices(choices):
%TS%if !choices.is_empty():
%TS%%TS%print(choices)
_TS_if !choices.is_empty():
_TS__TS_print(choices)

%TS%%TS%# In a real world scenario, _select_choice' could be
%TS%%TS%# connected to a signal, like 'Button.pressed'.
%TS%%TS%_select_choice(0)
_TS__TS_# In a real world scenario, _select_choice' could be
_TS__TS_# connected to a signal, like 'Button.pressed'.
_TS__TS__select_choice(0)


func _ended():
%TS%print("The End")
_TS_print("The End")


func _select_choice(index):
%TS%_ink_player.choose_choice_index(index)
%TS%_ink_player.continue_story()
_TS__ink_player.choose_choice_index(index)
_TS__ink_player.continue_story()


# Uncomment to bind an external function.
#
# func _bind_externals():
# %TS%_ink_player.bind_external_function("<function_name>", self, "_external_function")
# _TS__ink_player.bind_external_function("<function_name>", self, "_external_function")
#
#
# func _external_function(arg1, arg2):
# %TS%pass
# _TS_pass


# Uncomment to observe the variables from your ink story.
# You can observe multiple variables by putting adding them in the array.
# func _observe_variables():
# %TS%_ink_player.observe_variables(["var1", "var2"], self, "_variable_changed")
# _TS__ink_player.observe_variables(["var1", "var2"], self, "_variable_changed")
#
#
# func _variable_changed(variable_name, new_value):
# %TS%print("Variable '%s' changed to: %s" %[variable_name, new_value])
# _TS_print("Variable '%s' changed to: %s" %[variable_name, new_value])

0 comments on commit 390fe57

Please sign in to comment.