From e212bf143b950af46e79909c18c8d973dcbfeafd Mon Sep 17 00:00:00 2001 From: osquallo Date: Wed, 8 Aug 2018 14:55:50 +0200 Subject: [PATCH 1/7] Ajout de la possibilite de supprimer un personnage. --- .../character_selection_menu.gd | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/scenes/GUI/character_selection/character_selection_menu.gd b/scenes/GUI/character_selection/character_selection_menu.gd index f17c365..b02847f 100644 --- a/scenes/GUI/character_selection/character_selection_menu.gd +++ b/scenes/GUI/character_selection/character_selection_menu.gd @@ -32,6 +32,12 @@ func _ready(): slot_box.add_child( choose_button ) choose_button.set_owner( slot_box ) choose_button.connect( "pressed", self, "_on_choose_pressed", [int(section)] ) + + var delete_button = Button.new() + delete_button.text = "delete" + slot_box.add_child( delete_button ) + delete_button.set_owner( slot_box ) + delete_button.connect( "pressed", self, "_on_delete_pressed", [int(section), slot_box] ) var create_new_characer_button = Button.new() @@ -46,7 +52,16 @@ func _on_return_button_pressed(): func _on_choose_pressed( slot ): emit_signal( "character_selected", slot ) +func _on_delete_pressed( slot, node_to_delete ): + var config_file = ConfigFile.new() + var err = config_file.load( "user://player.cfg" ) + if err: + print("Error code when loading player config file: ", err) + config_file.erase_section( str(slot) ) + config_file.save( "user://player.cfg" ) + var parent = node_to_delete.get_parent() + parent.remove_child( node_to_delete ) func _on_slot0_character_button_pressed(): emit_signal( "character_selected", 0 ) From 2a4d823c289deba34440389cde4682b20cd5b255 Mon Sep 17 00:00:00 2001 From: osquallo Date: Wed, 8 Aug 2018 14:59:20 +0200 Subject: [PATCH 2/7] correction d'un erreur avec change_title lorsquele node n'existe pas encore. --- scenes/Main.gd | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/scenes/Main.gd b/scenes/Main.gd index 0988c98..0aece0f 100644 --- a/scenes/Main.gd +++ b/scenes/Main.gd @@ -21,12 +21,13 @@ func on_window_size_changed(): change_title() func change_title(): - var title_node = get_node( WINDOW_TITLE_INPUT ) - var title = "Khanat" - if title_node and not title_node.text.strip_edges() == "": - title = title_node.text.strip_edges() - title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" - OS.set_window_title( title ) + if has_node( WINDOW_TITLE_INPUT ): + var title_node = get_node( WINDOW_TITLE_INPUT ) + var title = "Khanat" + if title_node and not title_node.text.strip_edges() == "": + title = title_node.text.strip_edges() + title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" + OS.set_window_title( title ) func _on_login_scene_character_creation_finished(): var config_file = ConfigFile.new() From d7070c14e57d2487c39425e6a2c2486b99ccf25c Mon Sep 17 00:00:00 2001 From: osquallo Date: Wed, 8 Aug 2018 15:01:53 +0200 Subject: [PATCH 3/7] correction d'un erreur avec change_title lorsquele node n'existe pas encore. --- scenes/Main.gd | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scenes/Main.gd b/scenes/Main.gd index 0aece0f..8f7cecc 100644 --- a/scenes/Main.gd +++ b/scenes/Main.gd @@ -21,13 +21,15 @@ func on_window_size_changed(): change_title() func change_title(): + var title = "Khanat" + if has_node( WINDOW_TITLE_INPUT ): var title_node = get_node( WINDOW_TITLE_INPUT ) - var title = "Khanat" if title_node and not title_node.text.strip_edges() == "": title = title_node.text.strip_edges() - title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" - OS.set_window_title( title ) + + title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" + OS.set_window_title( title ) func _on_login_scene_character_creation_finished(): var config_file = ConfigFile.new() From f6e00035e869616d20c85cbade64f93f2609a574 Mon Sep 17 00:00:00 2001 From: osquallo Date: Wed, 8 Aug 2018 15:48:37 +0200 Subject: [PATCH 4/7] nettoyage commentaire obsoletes et ajout d'un bouton deconnexion (WIP). --- game_scene/game_scene.gd | 15 ++++--- game_scene/game_scene.tscn | 2 + login_scene/login_scene.gd | 6 ++- scenes/GUI/GUI.gd | 26 ++---------- scenes/GUI/GUI.tscn | 4 +- scenes/GUI/Home/Home.gd | 4 +- scenes/GUI/Home/Home.tscn | 40 ++++++++++++++++--- .../character_selection_menu.tscn | 2 +- scenes/Game/Character/Character.gd | 6 --- scenes/Main.gd | 10 ++--- scenes/Main.tscn | 19 ++++----- scenes/global.gd | 32 ++++++++------- 12 files changed, 90 insertions(+), 76 deletions(-) diff --git a/game_scene/game_scene.gd b/game_scene/game_scene.gd index da60884..2e531b8 100644 --- a/game_scene/game_scene.gd +++ b/game_scene/game_scene.gd @@ -1,20 +1,20 @@ extends Node +signal logout_button_pressed + const WINDOW_TITLE_INPUT = "GUI/Settings/Menus/TabContainer/Test/ScrollContainer/VBoxContainer/TitleBox/Title" func _ready(): change_title() get_tree().get_root().connect("size_changed", self, "on_window_size_changed") - global.character = get_node( "Game/Character" ) - global.character_camera = get_node( "Game/Character/Camera_rotation_helper/Camera" ) - - global.character.get_node( "MeshInstance" ).get_surface_material(0).albedo_color = global.character_color + $Game/Character.get_node( "MeshInstance" ).get_surface_material(0).albedo_color = global.character_color print( str(global.character_name) ) print( str(global.character_color) ) $GUI.pause() - global.character_camera.make_current() + + self.connect( "logout_button_pressed", self.get_parent(), "_on_logout_button_pressed" ) func _process(delta): pass @@ -29,3 +29,8 @@ func change_title(): title = title_node.text.strip_edges() title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" OS.set_window_title( title ) + + +func _on_GUI_logout_button_pressed(): + emit_signal( "logout_button_pressed" ) +# global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) diff --git a/game_scene/game_scene.tscn b/game_scene/game_scene.tscn index 65eeb4a..40daa47 100644 --- a/game_scene/game_scene.tscn +++ b/game_scene/game_scene.tscn @@ -16,4 +16,6 @@ _sections_unfolded = [ "Pause" ] pause_mode = 2 _sections_unfolded = [ "Margin", "Mouse", "Pause", "Size Flags", "Theme", "custom_constants" ] +[connection signal="logout_button_pressed" from="GUI" to="." method="_on_GUI_logout_button_pressed"] + diff --git a/login_scene/login_scene.gd b/login_scene/login_scene.gd index 5c6b91d..06d7f7b 100644 --- a/login_scene/login_scene.gd +++ b/login_scene/login_scene.gd @@ -4,7 +4,11 @@ signal character_creation_finished func _ready(): - global.character_creation_camera = get_node( "character_creation_menu/v_box_container/h_box_container/center_container/character_creation_scene/camera" ) + print("login_scene_ready") + $login_menu.show() + + self.connect( "character_creation_finished", self.get_parent(), "_on_login_scene_character_creation_finished" ) + func _on_login_menu_login_button_pressed(): $login_menu.hide() diff --git a/scenes/GUI/GUI.gd b/scenes/GUI/GUI.gd index 0304e87..f7fcb43 100644 --- a/scenes/GUI/GUI.gd +++ b/scenes/GUI/GUI.gd @@ -1,6 +1,6 @@ extends MarginContainer -signal character_creation_finished +signal logout_button_pressed func _on_Home_setting_pressed(): $Home.hide() @@ -89,25 +89,5 @@ func _on_login_menu_login_button_pressed(): $login_menu.hide() $character_selection_menu.show() - -func _on_character_creation_menu_valid_button_pressed(): - $character_creation_menu.hide() - $HUD.show() - pause() - - emit_signal( "character_creation_finished" ) - -func _on_character_selection_menu_character_selected(slot): - print( "selected character slot "+str( slot )+"." ) - $character_selection_menu.hide() - $character_creation_menu.show() - - -func _on_character_creation_menu_return_button_pressed(): - $character_creation_menu.hide() - $character_selection_menu.show() - - -func _on_character_selection_menu_return_button_pressed(): - $login_menu.show() - $character_selection_menu.hide() +func _on_Home_logout_pressed(): + emit_signal( "logout_button_pressed" ) diff --git a/scenes/GUI/GUI.tscn b/scenes/GUI/GUI.tscn index 6c0f6c2..1189276 100644 --- a/scenes/GUI/GUI.tscn +++ b/scenes/GUI/GUI.tscn @@ -52,7 +52,6 @@ anchor_right = 0.0 anchor_bottom = 0.0 margin_right = 1024.0 margin_bottom = 600.0 -mouse_filter = 1 _sections_unfolded = [ "Mouse", "Size Flags", "Visibility", "custom_constants" ] [node name="Settings" parent="." index="2" instance=ExtResource( 5 )] @@ -62,7 +61,6 @@ anchor_right = 0.0 anchor_bottom = 0.0 margin_right = 1024.0 margin_bottom = 600.0 -mouse_filter = 1 _sections_unfolded = [ "Mouse", "Size Flags", "Theme", "custom_constants" ] [node name="Help" parent="." index="3" instance=ExtResource( 6 )] @@ -72,6 +70,8 @@ margin_right = 256.0 margin_bottom = 256.0 _sections_unfolded = [ "Margin", "Mouse", "Size Flags", "custom_constants" ] +[connection signal="logout_pressed" from="Home" to="." method="_on_Home_logout_pressed"] + [connection signal="play_pressed" from="Home" to="." method="_on_Home_play_pressed"] [connection signal="setting_pressed" from="Home" to="." method="_on_Home_setting_pressed"] diff --git a/scenes/GUI/Home/Home.gd b/scenes/GUI/Home/Home.gd index 215b11b..f28a237 100644 --- a/scenes/GUI/Home/Home.gd +++ b/scenes/GUI/Home/Home.gd @@ -2,6 +2,7 @@ extends MarginContainer signal play_pressed signal setting_pressed +signal logout_pressed func _on_PlayButton_pressed(): emit_signal("play_pressed" ) @@ -12,4 +13,5 @@ func _on_SettingsButton_pressed(): func _on_QuitButton_pressed(): get_tree().quit() - +func _on_LogoutButton_pressed(): + emit_signal("logout_pressed" ) diff --git a/scenes/GUI/Home/Home.tscn b/scenes/GUI/Home/Home.tscn index 268cf71..ab03f26 100644 --- a/scenes/GUI/Home/Home.tscn +++ b/scenes/GUI/Home/Home.tscn @@ -80,7 +80,7 @@ size_flags_horizontal = 1 size_flags_vertical = 1 theme = SubResource( 2 ) alignment = 0 -_sections_unfolded = [ "Grow Direction", "Rect", "Theme", "custom_constants" ] +_sections_unfolded = [ "Grow Direction", "Mouse", "Rect", "Theme", "custom_constants" ] [node name="Title" type="Label" parent="Menu" index="0"] @@ -89,7 +89,7 @@ anchor_top = 0.0 anchor_right = 0.0 anchor_bottom = 0.0 margin_right = 1024.0 -margin_bottom = 146.0 +margin_bottom = 103.0 rect_pivot_offset = Vector2( 0, 0 ) rect_clip_content = false mouse_filter = 2 @@ -116,9 +116,9 @@ anchor_top = 0.0 anchor_right = 0.0 anchor_bottom = 0.0 margin_left = 470.0 -margin_top = 150.0 +margin_top = 107.0 margin_right = 554.0 -margin_bottom = 450.0 +margin_bottom = 493.0 rect_pivot_offset = Vector2( 0, 0 ) rect_clip_content = false mouse_filter = 0 @@ -139,7 +139,7 @@ anchor_right = 0.0 anchor_bottom = 0.0 margin_top = 42.0 margin_right = 84.0 -margin_bottom = 258.0 +margin_bottom = 344.0 rect_pivot_offset = Vector2( 0, 0 ) rect_clip_content = false mouse_filter = 1 @@ -200,7 +200,7 @@ flat = false align = 1 _sections_unfolded = [ "Anchor", "Rect", "custom_fonts" ] -[node name="QuitButton" type="Button" parent="Menu/Buttons/VBoxContainer" index="2"] +[node name="LogoutButton" type="Button" parent="Menu/Buttons/VBoxContainer" index="2"] anchor_left = 0.0 anchor_top = 0.0 @@ -220,9 +220,35 @@ toggle_mode = false enabled_focus_mode = 2 shortcut = null group = null +text = "Logout" +flat = false +align = 1 +_sections_unfolded = [ "Focus", "Mouse" ] + +[node name="QuitButton" type="Button" parent="Menu/Buttons/VBoxContainer" index="3"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_top = 258.0 +margin_right = 84.0 +margin_bottom = 302.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +focus_mode = 2 +mouse_filter = 0 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +toggle_mode = false +enabled_focus_mode = 2 +shortcut = null +group = null text = "Quit" flat = false align = 1 +_sections_unfolded = [ "Mouse" ] [node name="Container" type="MarginContainer" parent="Menu" index="2"] @@ -294,6 +320,8 @@ _sections_unfolded = [ "Size Flags", "custom_colors", "custom_constants", "custo [connection signal="pressed" from="Menu/Buttons/VBoxContainer/SettingsButton" to="." method="_on_SettingsButton_pressed"] +[connection signal="pressed" from="Menu/Buttons/VBoxContainer/LogoutButton" to="." method="_on_LogoutButton_pressed"] + [connection signal="pressed" from="Menu/Buttons/VBoxContainer/QuitButton" to="." method="_on_QuitButton_pressed"] diff --git a/scenes/GUI/character_selection/character_selection_menu.tscn b/scenes/GUI/character_selection/character_selection_menu.tscn index 2e1603e..37728c0 100644 --- a/scenes/GUI/character_selection/character_selection_menu.tscn +++ b/scenes/GUI/character_selection/character_selection_menu.tscn @@ -4,7 +4,7 @@ [ext_resource path="res://assets/GUI/images/new_launcher_bg_0-1.png" type="Texture" id=2] [ext_resource path="res://assets/GUI/images/new_char.png" type="Texture" id=3] -[node name="character_selection_menu" type="Control" index="0"] +[node name="character_selection_menu" type="Control"] anchor_left = 0.0 anchor_top = 0.0 diff --git a/scenes/Game/Character/Character.gd b/scenes/Game/Character/Character.gd index 54b065f..174e1bd 100644 --- a/scenes/Game/Character/Character.gd +++ b/scenes/Game/Character/Character.gd @@ -23,16 +23,10 @@ func set_info_billboard_position(): var above_head = $infos_spatial player_infos_billboard.get_node("label").text = global.character_name var offset = Vector2(-(player_infos_billboard.get_size().x/2), 0) -# var offset = Vector2( 0.0, 0.0 ) -# player_infos_billboard.rect_position = (camera.unproject_position(above_head.get_translation()) - offset) var unprojected_translation = camera.unproject_position(above_head.global_transform.xform(Vector3(0,0,0))) -# player_infos_billboard.rect_position = Vector2( unprojected_translation.x, unprojected_translation.y player_infos_billboard.rect_position = (unprojected_translation + offset) -# player_infos_billboard.rect_position = Vector2( above_head.get_translation().x, above_head.get_translation().y ) func _ready(): -# camera_rotation = $Camera_rotation_helper -# camera = $Camera_rotation_helper/Camera camera.make_current() set_info_billboard_position() diff --git a/scenes/Main.gd b/scenes/Main.gd index 8f7cecc..ed735ec 100644 --- a/scenes/Main.gd +++ b/scenes/Main.gd @@ -1,16 +1,14 @@ extends Node -# class member variables go here, for example: -# var a = 2 -# var b = "textvar" - const WINDOW_TITLE_INPUT = "GUI/Settings/Menus/TabContainer/Test/ScrollContainer/VBoxContainer/TitleBox/Title" func _ready(): change_title() get_tree().get_root().connect("size_changed", self, "on_window_size_changed") - global.character_creation_camera.make_current() + global.goto_first_scene_loading( "res://login_scene/login_scene.tscn" ) +# if global.character_creation_camera: +# global.character_creation_camera.make_current() @@ -44,3 +42,5 @@ func _on_login_scene_character_creation_finished(): print("test") global.goto_scene_loading( "res://game_scene/game_scene.tscn" ) +func _on_logout_button_pressed(): + global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) \ No newline at end of file diff --git a/scenes/Main.tscn b/scenes/Main.tscn index 3419b91..2e90a4e 100644 --- a/scenes/Main.tscn +++ b/scenes/Main.tscn @@ -1,18 +1,15 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://scenes/Main.gd" type="Script" id=1] -[ext_resource path="res://login_scene/login_scene.tscn" type="PackedScene" id=2] -[ext_resource path="res://assets/GUI/loading_screens/new_loading_bg_0.tga" type="Texture" id=3] -[ext_resource path="res://assets/GUI/loading_screens/new_loading_bg_1.tga" type="Texture" id=4] +[ext_resource path="res://assets/GUI/loading_screens/new_loading_bg_0.tga" type="Texture" id=2] +[ext_resource path="res://assets/GUI/loading_screens/new_loading_bg_1.tga" type="Texture" id=3] -[node name="Main" type="Node"] +[node name="Main" type="Node" index="0"] script = ExtResource( 1 ) _sections_unfolded = [ "Pause" ] -[node name="login_scene" parent="." index="0" instance=ExtResource( 2 )] - -[node name="background_loader" type="Panel" parent="." index="1"] +[node name="background_loader" type="Panel" parent="." index="0"] visible = false self_modulate = Color( 0, 0, 0, 1 ) @@ -63,14 +60,12 @@ page = 0.0 value = 0.0 exp_edit = false rounded = false -texture_under = ExtResource( 3 ) +texture_under = ExtResource( 2 ) texture_over = null -texture_progress = ExtResource( 4 ) +texture_progress = ExtResource( 3 ) radial_fill_degrees = 360.0 radial_center_offset = Vector2( 0, 0 ) nine_patch_stretch = false _sections_unfolded = [ "Textures" ] -[connection signal="character_creation_finished" from="login_scene" to="." method="_on_login_scene_character_creation_finished"] - diff --git a/scenes/global.gd b/scenes/global.gd index b2194af..c273459 100644 --- a/scenes/global.gd +++ b/scenes/global.gd @@ -1,10 +1,6 @@ extends Node var current_scene = null -var character = null -var character_camera = null -var character_creation_mesh = null -var character_creation_camera = null var character_name = null var character_color = null @@ -21,24 +17,28 @@ func _ready(): var root = get_tree().get_root() # current_scene = root.get_child(root.get_child_count() -1) current_scene = root.get_node( "Main/login_scene" ) -# character = get_tree().get_root().get_node( "Main/Game/Character" ) -# character_camera = get_tree().get_root().get_node( "Main/Game/Character/Camera_rotation_helper/Camera" ) -# character_creation_camera = get_tree().get_root().get_node( "Main/login_scene/character_creation_menu/v_box_container/h_box_container/center_container/character_creation_scene/camera" ) main_scene = root.get_node( "Main" ) +func goto_first_scene_loading( path ): + get_tree().get_root().get_node("Main/background_loader").show() + loader = ResourceLoader.load_interactive( path ) + if loader == null: # check for errors +# show_error() + return + set_process(true) + + wait_frames = 1 + func goto_scene_loading( path ): get_tree().get_root().get_node("Main/background_loader").show() loader = ResourceLoader.load_interactive( path ) if loader == null: # check for errors - show_error() +# show_error() return set_process(true) current_scene.queue_free() # get rid of the old scene - # start your "loading..." animation -# get_node("animation").play("loading") - wait_frames = 1 func _process(time): @@ -53,13 +53,13 @@ func _process(time): var t = OS.get_ticks_msec() while OS.get_ticks_msec() < t + time_max: # use "time_max" to control how much time we block this thread - # poll your loader var err = loader.poll() update_progress() if err == ERR_FILE_EOF: # load finished # update_progress() + var resource = loader.get_resource() loader = null set_new_scene( resource ) @@ -71,7 +71,6 @@ func _process(time): show_error() loader = null break - func update_progress(): var progress_texture = get_tree().get_root().get_node("Main/background_loader/center_container/texture_progress") var progress = (float(loader.get_stage()) / loader.get_stage_count()) * progress_texture.max_value @@ -83,10 +82,15 @@ func update_progress(): # call this on a paused animation. use "true" as the second parameter to force the animation to update # get_node("animation").seek(progress * len, true) -func set_new_scene( scene_resource ): + +func set_new_scene( scene_resource ): + var progress_texture = get_tree().get_root().get_node("Main/background_loader/center_container/texture_progress") + progress_texture.value = 0 get_tree().get_root().get_node("Main/background_loader").hide() + current_scene = scene_resource.instance() main_scene.add_child(current_scene) +# get_tree().set_current_scene( current_scene ) func goto_scene( path ): # This function will usually be called from a signal callback, From 3252a52530a7235b69bd77946d1c77dc83ea9e0c Mon Sep 17 00:00:00 2001 From: osquallo Date: Thu, 9 Aug 2018 09:36:14 +0200 Subject: [PATCH 5/7] remplacement de la scene Main par une scene autoload. --- .../background_loader.tscn | 66 +++++++ game_scene/game_scene.gd | 4 +- global.gd | 173 ++++++++++++++++++ global.tscn | 12 ++ login_scene/login_scene.gd | 4 +- project.godot | 2 +- scenes/Main.gd | 90 ++++----- scenes/Main.tscn | 65 +------ scenes/global.gd | 123 ------------- 9 files changed, 305 insertions(+), 234 deletions(-) create mode 100644 background_loader_scene/background_loader.tscn create mode 100644 global.gd create mode 100644 global.tscn delete mode 100644 scenes/global.gd diff --git a/background_loader_scene/background_loader.tscn b/background_loader_scene/background_loader.tscn new file mode 100644 index 0000000..c146df8 --- /dev/null +++ b/background_loader_scene/background_loader.tscn @@ -0,0 +1,66 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://assets/GUI/loading_screens/new_loading_bg_0.tga" type="Texture" id=1] +[ext_resource path="res://assets/GUI/loading_screens/new_loading_bg_1.tga" type="Texture" id=2] + +[node name="background_loader" type="Panel"] + +visible = false +self_modulate = Color( 0, 0, 0, 1 ) +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 2 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +_sections_unfolded = [ "Mouse", "Visibility", "custom_constants" ] + +[node name="center_container" type="MarginContainer" parent="." index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 2 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +_sections_unfolded = [ "Mouse" ] + +[node name="texture_progress" type="TextureProgress" parent="center_container" index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 8.0 +margin_right = 1032.0 +margin_bottom = 600.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 2 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 1 +min_value = 0.0 +max_value = 100.0 +step = 1.0 +page = 0.0 +value = 0.0 +exp_edit = false +rounded = false +texture_under = ExtResource( 1 ) +texture_over = null +texture_progress = ExtResource( 2 ) +radial_fill_degrees = 360.0 +radial_center_offset = Vector2( 0, 0 ) +nine_patch_stretch = false +_sections_unfolded = [ "Mouse", "Textures" ] + + diff --git a/game_scene/game_scene.gd b/game_scene/game_scene.gd index 2e531b8..ed6ab77 100644 --- a/game_scene/game_scene.gd +++ b/game_scene/game_scene.gd @@ -14,8 +14,8 @@ func _ready(): $GUI.pause() - self.connect( "logout_button_pressed", self.get_parent(), "_on_logout_button_pressed" ) - + self.connect( "logout_button_pressed", global, "_on_logout_button_pressed" ) + func _process(delta): pass diff --git a/global.gd b/global.gd new file mode 100644 index 0000000..4ba9534 --- /dev/null +++ b/global.gd @@ -0,0 +1,173 @@ +extends Node + +const WINDOW_TITLE_INPUT = "GUI/Settings/Menus/TabContainer/Test/ScrollContainer/VBoxContainer/TitleBox/Title" + +var current_scene = null + +var character_name = null +var character_color = null +var character_sex = null +var character_slot = null + +# BG loader +var loader +var wait_frames +var time_max = 100 # msec +#var current_scene +var main_scene = null +func _ready(): + var root = get_tree().get_root() + current_scene = root.get_child(root.get_child_count() -1) + +# current_scene = root.get_node( "Main/login_scene" ) +# main_scene = root.get_node( "Main" ) + + + change_title() + get_tree().get_root().connect("size_changed", self, "on_window_size_changed") + +# global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) +# if global.character_creation_camera: +# global.character_creation_camera.make_current() + + global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) +# get_tree().change_scene( "res://login_scene/login_scene.tscn" ) + + + +func goto_scene_loading( path ): + get_node("background_loader").show() + loader = ResourceLoader.load_interactive( path ) + if loader == null: # check for errors +# show_error() + return + set_process(true) + + if current_scene: + current_scene.queue_free() # get rid of the old scene + + wait_frames = 1 + +func _process(time): + if loader == null: + # no need to process anymore + set_process(false) + return + + if wait_frames > 0: # wait for frames to let the "loading" animation to show up + wait_frames -= 1 + return + + var t = OS.get_ticks_msec() + while OS.get_ticks_msec() < t + time_max: # use "time_max" to control how much time we block this thread + # poll your loader + var err = loader.poll() + update_progress() + + if err == ERR_FILE_EOF: # load finished +# update_progress() + + var resource = loader.get_resource() + loader = null + set_new_scene( resource ) + break + elif err == OK: +# update_progress() + pass + else: # error during loading + show_error() + loader = null + break + + +func update_progress(): + var progress_texture = get_node("background_loader/center_container/texture_progress") + var progress = (float(loader.get_stage()) / loader.get_stage_count()) * progress_texture.max_value + + progress_texture.value = progress + + +func set_new_scene( scene_resource ): + var progress_texture = get_node("background_loader/center_container/texture_progress") + + progress_texture.value = 0 + + get_node("background_loader").hide() + + current_scene = scene_resource.instance() + get_tree().get_root().add_child(current_scene) +# get_tree().set_current_scene( current_scene ) + + + +######################################## +#### deffered goto without loading ##### +func goto_scene( path ): + # This function will usually be called from a signal callback, + # or some other function from the running scene. + # Deleting the current scene at this point might be + # a bad idea, because it may be inside of a callback or function of it. + # The worst case will be a crash or unexpected behavior. + + # The way around this is deferring the load to a later time, when + # it is ensured that no code from the current scene is running: + + call_deferred("_deferred_goto_scene", path) + + +func _deferred_goto_scene( path ): + # Immediately free the current scene, + # there is no risk here. + if current_scene: + current_scene.free() + + # Load new scene. + var s = ResourceLoader.load( path ) + + # Instance the new scene. + current_scene = s.instance() + + # Add it to the active scene, as child of root. + main_scene.add_child( current_scene ) + + # Optional, to make it compatible with the SceneTree.change_scene() API. + get_tree().set_current_scene( current_scene ) + +######################################## +######################################## + + + +######################################## +############### Main ################### +func on_window_size_changed(): + change_title() + +func change_title(): + var title = "Khanat" + + if has_node( WINDOW_TITLE_INPUT ): + var title_node = get_node( WINDOW_TITLE_INPUT ) + if title_node and not title_node.text.strip_edges() == "": + title = title_node.text.strip_edges() + + title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" + OS.set_window_title( title ) + +func _on_login_scene_character_creation_finished(): + var config_file = ConfigFile.new() + var err = config_file.load( "user://player.cfg" ) + if err: + print("Error code when loading config file: ", err) + + config_file.set_value(str(global.character_slot), "name", global.character_name) + config_file.set_value(str(global.character_slot), "color", global.character_color) + + config_file.save( "user://player.cfg" ) + print("test") + global.goto_scene_loading( "res://game_scene/game_scene.tscn" ) +# get_tree().change_scene( "res://game_scene/game_scene.tscn" ) + +func _on_logout_button_pressed(): + global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) +# get_tree().change_scene( "res://login_scene/login_scene.tscn" ) diff --git a/global.tscn b/global.tscn new file mode 100644 index 0000000..31aad6e --- /dev/null +++ b/global.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://global.gd" type="Script" id=1] +[ext_resource path="res://background_loader_scene/background_loader.tscn" type="PackedScene" id=2] + +[node name="global" type="Node" index="0"] + +script = ExtResource( 1 ) + +[node name="background_loader" parent="." index="0" instance=ExtResource( 2 )] + + diff --git a/login_scene/login_scene.gd b/login_scene/login_scene.gd index 06d7f7b..5c16e4a 100644 --- a/login_scene/login_scene.gd +++ b/login_scene/login_scene.gd @@ -4,10 +4,8 @@ signal character_creation_finished func _ready(): - print("login_scene_ready") $login_menu.show() - - self.connect( "character_creation_finished", self.get_parent(), "_on_login_scene_character_creation_finished" ) + self.connect( "character_creation_finished", global, "_on_login_scene_character_creation_finished" ) func _on_login_menu_login_button_pressed(): diff --git a/project.godot b/project.godot index 1f50a41..10f4a87 100644 --- a/project.godot +++ b/project.godot @@ -17,7 +17,7 @@ config/icon="res://icon.png" [autoload] -global="*res://scenes/global.gd" +global="*res://global.tscn" [display] diff --git a/scenes/Main.gd b/scenes/Main.gd index ed735ec..1f4c535 100644 --- a/scenes/Main.gd +++ b/scenes/Main.gd @@ -1,46 +1,52 @@ extends Node -const WINDOW_TITLE_INPUT = "GUI/Settings/Menus/TabContainer/Test/ScrollContainer/VBoxContainer/TitleBox/Title" - -func _ready(): - change_title() - get_tree().get_root().connect("size_changed", self, "on_window_size_changed") - - global.goto_first_scene_loading( "res://login_scene/login_scene.tscn" ) -# if global.character_creation_camera: -# global.character_creation_camera.make_current() +#const WINDOW_TITLE_INPUT = "GUI/Settings/Menus/TabContainer/Test/ScrollContainer/VBoxContainer/TitleBox/Title" +# +#func _ready(): +# change_title() +# get_tree().get_root().connect("size_changed", self, "on_window_size_changed") +# +## global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) +## if global.character_creation_camera: +## global.character_creation_camera.make_current() +# +# get_tree().change_scene( "res://login_scene/login_scene.tscn" ) +# - -func _process(delta): - pass - -func on_window_size_changed(): - change_title() - -func change_title(): - var title = "Khanat" - - if has_node( WINDOW_TITLE_INPUT ): - var title_node = get_node( WINDOW_TITLE_INPUT ) - if title_node and not title_node.text.strip_edges() == "": - title = title_node.text.strip_edges() - - title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" - OS.set_window_title( title ) - -func _on_login_scene_character_creation_finished(): - var config_file = ConfigFile.new() - var err = config_file.load( "user://player.cfg" ) - if err: - print("Error code when loading config file: ", err) - - config_file.set_value(str(global.character_slot), "name", global.character_name) - config_file.set_value(str(global.character_slot), "color", global.character_color) - - config_file.save( "user://player.cfg" ) - print("test") - global.goto_scene_loading( "res://game_scene/game_scene.tscn" ) - -func _on_logout_button_pressed(): - global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) \ No newline at end of file +# +#func _process(delta): +# pass +# +#func on_window_size_changed(): +# change_title() +# +#func change_title(): +# var title = "Khanat" +# +# if has_node( WINDOW_TITLE_INPUT ): +# var title_node = get_node( WINDOW_TITLE_INPUT ) +# if title_node and not title_node.text.strip_edges() == "": +# title = title_node.text.strip_edges() +# +# title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" +# OS.set_window_title( title ) +# +#func _on_login_scene_character_creation_finished(): +# var config_file = ConfigFile.new() +# var err = config_file.load( "user://player.cfg" ) +# if err: +# print("Error code when loading config file: ", err) +# +# config_file.set_value(str(global.character_slot), "name", global.character_name) +# config_file.set_value(str(global.character_slot), "color", global.character_color) +# +# config_file.save( "user://player.cfg" ) +# print("test") +## global.goto_scene_loading( "res://game_scene/game_scene.tscn" ) +# get_tree().change_scene( "res://game_scene/game_scene.tscn" ) +# +#func _on_logout_button_pressed(): +## global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) +# get_tree().change_scene( "res://login_scene/login_scene.tscn" ) +## pass \ No newline at end of file diff --git a/scenes/Main.tscn b/scenes/Main.tscn index 2e90a4e..24f791c 100644 --- a/scenes/Main.tscn +++ b/scenes/Main.tscn @@ -1,71 +1,10 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=2 format=2] [ext_resource path="res://scenes/Main.gd" type="Script" id=1] -[ext_resource path="res://assets/GUI/loading_screens/new_loading_bg_0.tga" type="Texture" id=2] -[ext_resource path="res://assets/GUI/loading_screens/new_loading_bg_1.tga" type="Texture" id=3] -[node name="Main" type="Node" index="0"] +[node name="Main" type="Node"] script = ExtResource( 1 ) _sections_unfolded = [ "Pause" ] -[node name="background_loader" type="Panel" parent="." index="0"] - -visible = false -self_modulate = Color( 0, 0, 0, 1 ) -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 2 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -_sections_unfolded = [ "Mouse", "Visibility", "custom_constants" ] - -[node name="center_container" type="MarginContainer" parent="background_loader" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 0 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 - -[node name="texture_progress" type="TextureProgress" parent="background_loader/center_container" index="0"] - -anchor_left = 0.0 -anchor_top = 0.0 -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_left = 8.0 -margin_right = 1032.0 -margin_bottom = 600.0 -rect_pivot_offset = Vector2( 0, 0 ) -rect_clip_content = false -mouse_filter = 1 -mouse_default_cursor_shape = 0 -size_flags_horizontal = 1 -size_flags_vertical = 1 -min_value = 0.0 -max_value = 100.0 -step = 1.0 -page = 0.0 -value = 0.0 -exp_edit = false -rounded = false -texture_under = ExtResource( 2 ) -texture_over = null -texture_progress = ExtResource( 3 ) -radial_fill_degrees = 360.0 -radial_center_offset = Vector2( 0, 0 ) -nine_patch_stretch = false -_sections_unfolded = [ "Textures" ] - diff --git a/scenes/global.gd b/scenes/global.gd deleted file mode 100644 index c273459..0000000 --- a/scenes/global.gd +++ /dev/null @@ -1,123 +0,0 @@ -extends Node - -var current_scene = null - -var character_name = null -var character_color = null -var character_sex = null -var character_slot = null - -# BG loader -var loader -var wait_frames -var time_max = 100 # msec -#var current_scene -var main_scene = null -func _ready(): - var root = get_tree().get_root() -# current_scene = root.get_child(root.get_child_count() -1) - current_scene = root.get_node( "Main/login_scene" ) - main_scene = root.get_node( "Main" ) - -func goto_first_scene_loading( path ): - get_tree().get_root().get_node("Main/background_loader").show() - loader = ResourceLoader.load_interactive( path ) - if loader == null: # check for errors -# show_error() - return - set_process(true) - - wait_frames = 1 - -func goto_scene_loading( path ): - get_tree().get_root().get_node("Main/background_loader").show() - loader = ResourceLoader.load_interactive( path ) - if loader == null: # check for errors -# show_error() - return - set_process(true) - - current_scene.queue_free() # get rid of the old scene - - wait_frames = 1 - -func _process(time): - if loader == null: - # no need to process anymore - set_process(false) - return - - if wait_frames > 0: # wait for frames to let the "loading" animation to show up - wait_frames -= 1 - return - - var t = OS.get_ticks_msec() - while OS.get_ticks_msec() < t + time_max: # use "time_max" to control how much time we block this thread - # poll your loader - var err = loader.poll() - update_progress() - - if err == ERR_FILE_EOF: # load finished -# update_progress() - - var resource = loader.get_resource() - loader = null - set_new_scene( resource ) - break - elif err == OK: -# update_progress() - pass - else: # error during loading - show_error() - loader = null - break -func update_progress(): - var progress_texture = get_tree().get_root().get_node("Main/background_loader/center_container/texture_progress") - var progress = (float(loader.get_stage()) / loader.get_stage_count()) * progress_texture.max_value - progress_texture.value = progress - - - # or update a progress animation? -# var len = get_node("animation").get_current_animation_length() - # call this on a paused animation. use "true" as the second parameter to force the animation to update -# get_node("animation").seek(progress * len, true) - - -func set_new_scene( scene_resource ): - var progress_texture = get_tree().get_root().get_node("Main/background_loader/center_container/texture_progress") - progress_texture.value = 0 - get_tree().get_root().get_node("Main/background_loader").hide() - - current_scene = scene_resource.instance() - main_scene.add_child(current_scene) -# get_tree().set_current_scene( current_scene ) - -func goto_scene( path ): - # This function will usually be called from a signal callback, - # or some other function from the running scene. - # Deleting the current scene at this point might be - # a bad idea, because it may be inside of a callback or function of it. - # The worst case will be a crash or unexpected behavior. - - # The way around this is deferring the load to a later time, when - # it is ensured that no code from the current scene is running: - - call_deferred("_deferred_goto_scene", path) - - -func _deferred_goto_scene( path ): - # Immediately free the current scene, - # there is no risk here. - current_scene.free() - - # Load new scene. - var s = ResourceLoader.load( path ) - - # Instance the new scene. - current_scene = s.instance() - - # Add it to the active scene, as child of root. - path.add_child( current_scene ) - - # Optional, to make it compatible with the SceneTree.change_scene() API. - get_tree().set_current_scene( current_scene ) \ No newline at end of file From 0c5d43e98522c780c1564bd12af7677a87055120 Mon Sep 17 00:00:00 2001 From: osquallo Date: Thu, 9 Aug 2018 10:08:33 +0200 Subject: [PATCH 6/7] nettoyage --- global.gd | 125 +++++++++++++++++++++++------------------------ project.godot | 2 +- scenes/Main.gd | 52 -------------------- scenes/Main.tscn | 10 ---- 4 files changed, 61 insertions(+), 128 deletions(-) delete mode 100644 scenes/Main.gd delete mode 100644 scenes/Main.tscn diff --git a/global.gd b/global.gd index 4ba9534..3571d5f 100644 --- a/global.gd +++ b/global.gd @@ -2,8 +2,6 @@ extends Node const WINDOW_TITLE_INPUT = "GUI/Settings/Menus/TabContainer/Test/ScrollContainer/VBoxContainer/TitleBox/Title" -var current_scene = null - var character_name = null var character_color = null var character_sex = null @@ -12,43 +10,55 @@ var character_slot = null # BG loader var loader var wait_frames -var time_max = 100 # msec -#var current_scene -var main_scene = null +var time_max = 10 # msec +var current_scene = null + func _ready(): var root = get_tree().get_root() current_scene = root.get_child(root.get_child_count() -1) - -# current_scene = root.get_node( "Main/login_scene" ) -# main_scene = root.get_node( "Main" ) - - + change_title() get_tree().get_root().connect("size_changed", self, "on_window_size_changed") + +######## +#### change title #### +func on_window_size_changed(): + change_title() -# global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) -# if global.character_creation_camera: -# global.character_creation_camera.make_current() - - global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) -# get_tree().change_scene( "res://login_scene/login_scene.tscn" ) +func change_title(): + var title = "Khanat" + if has_node( WINDOW_TITLE_INPUT ): + var title_node = get_node( WINDOW_TITLE_INPUT ) + if title_node and not title_node.text.strip_edges() == "": + title = title_node.text.strip_edges() + + title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" + OS.set_window_title( title ) +######## - + +######## +#### scene loading func goto_scene_loading( path ): + print( "goto: "+str(path) ) + get_node("background_loader").show() loader = ResourceLoader.load_interactive( path ) if loader == null: # check for errors -# show_error() + show_error() return + set_process(true) - + if current_scene: + print( "queue_free: "+str(current_scene.name) ) current_scene.queue_free() # get rid of the old scene wait_frames = 1 -func _process(time): +func _process( time ): + print( "process" ) if loader == null: # no need to process anymore set_process(false) @@ -60,19 +70,21 @@ func _process(time): var t = OS.get_ticks_msec() while OS.get_ticks_msec() < t + time_max: # use "time_max" to control how much time we block this thread + + print( "poll: "+str((float(loader.get_stage()) / loader.get_stage_count())*100)+"%" ) + # poll your loader var err = loader.poll() - update_progress() +# update_progress() if err == ERR_FILE_EOF: # load finished # update_progress() - var resource = loader.get_resource() loader = null set_new_scene( resource ) break elif err == OK: -# update_progress() + update_progress() pass else: # error during loading show_error() @@ -92,16 +104,36 @@ func set_new_scene( scene_resource ): progress_texture.value = 0 - get_node("background_loader").hide() current_scene = scene_resource.instance() get_tree().get_root().add_child(current_scene) # get_tree().set_current_scene( current_scene ) + + get_node("background_loader").hide() + +func _on_login_scene_character_creation_finished(): + var config_file = ConfigFile.new() + var err = config_file.load( "user://player.cfg" ) + if err: + print("Error code when loading config file: ", err) + + config_file.set_value(str(global.character_slot), "name", global.character_name) + config_file.set_value(str(global.character_slot), "color", global.character_color) + config_file.save( "user://player.cfg" ) + print("test") +# global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) + global.goto_scene_loading( "res://game_scene/game_scene.tscn" ) +# get_tree().change_scene( "res://game_scene/game_scene.tscn" ) -######################################## -#### deffered goto without loading ##### +func _on_logout_button_pressed(): + global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) +# get_tree().change_scene( "res://login_scene/login_scene.tscn" ) +######## + +######## +#### defered goto without loading func goto_scene( path ): # This function will usually be called from a signal callback, # or some other function from the running scene. @@ -128,46 +160,9 @@ func _deferred_goto_scene( path ): current_scene = s.instance() # Add it to the active scene, as child of root. - main_scene.add_child( current_scene ) + get_tree().get_root().add_child( current_scene ) # Optional, to make it compatible with the SceneTree.change_scene() API. get_tree().set_current_scene( current_scene ) - -######################################## -######################################## +######## - - -######################################## -############### Main ################### -func on_window_size_changed(): - change_title() - -func change_title(): - var title = "Khanat" - - if has_node( WINDOW_TITLE_INPUT ): - var title_node = get_node( WINDOW_TITLE_INPUT ) - if title_node and not title_node.text.strip_edges() == "": - title = title_node.text.strip_edges() - - title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" - OS.set_window_title( title ) - -func _on_login_scene_character_creation_finished(): - var config_file = ConfigFile.new() - var err = config_file.load( "user://player.cfg" ) - if err: - print("Error code when loading config file: ", err) - - config_file.set_value(str(global.character_slot), "name", global.character_name) - config_file.set_value(str(global.character_slot), "color", global.character_color) - - config_file.save( "user://player.cfg" ) - print("test") - global.goto_scene_loading( "res://game_scene/game_scene.tscn" ) -# get_tree().change_scene( "res://game_scene/game_scene.tscn" ) - -func _on_logout_button_pressed(): - global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) -# get_tree().change_scene( "res://login_scene/login_scene.tscn" ) diff --git a/project.godot b/project.godot index 10f4a87..a4d2cdc 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=3 [application] config/name="Khanat" -run/main_scene="res://scenes/Main.tscn" +run/main_scene="res://login_scene/login_scene.tscn" boot_splash/image="res://assets/GUI/images/new_launcher_bg_0-1.png" config/icon="res://icon.png" diff --git a/scenes/Main.gd b/scenes/Main.gd deleted file mode 100644 index 1f4c535..0000000 --- a/scenes/Main.gd +++ /dev/null @@ -1,52 +0,0 @@ -extends Node - -#const WINDOW_TITLE_INPUT = "GUI/Settings/Menus/TabContainer/Test/ScrollContainer/VBoxContainer/TitleBox/Title" -# -#func _ready(): -# change_title() -# get_tree().get_root().connect("size_changed", self, "on_window_size_changed") -# -## global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) -## if global.character_creation_camera: -## global.character_creation_camera.make_current() -# -# get_tree().change_scene( "res://login_scene/login_scene.tscn" ) -# - - -# -#func _process(delta): -# pass -# -#func on_window_size_changed(): -# change_title() -# -#func change_title(): -# var title = "Khanat" -# -# if has_node( WINDOW_TITLE_INPUT ): -# var title_node = get_node( WINDOW_TITLE_INPUT ) -# if title_node and not title_node.text.strip_edges() == "": -# title = title_node.text.strip_edges() -# -# title += " (" + String(OS.get_window_size().x) + "x" + String(OS.get_window_size().y) + ")" -# OS.set_window_title( title ) -# -#func _on_login_scene_character_creation_finished(): -# var config_file = ConfigFile.new() -# var err = config_file.load( "user://player.cfg" ) -# if err: -# print("Error code when loading config file: ", err) -# -# config_file.set_value(str(global.character_slot), "name", global.character_name) -# config_file.set_value(str(global.character_slot), "color", global.character_color) -# -# config_file.save( "user://player.cfg" ) -# print("test") -## global.goto_scene_loading( "res://game_scene/game_scene.tscn" ) -# get_tree().change_scene( "res://game_scene/game_scene.tscn" ) -# -#func _on_logout_button_pressed(): -## global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) -# get_tree().change_scene( "res://login_scene/login_scene.tscn" ) -## pass \ No newline at end of file diff --git a/scenes/Main.tscn b/scenes/Main.tscn deleted file mode 100644 index 24f791c..0000000 --- a/scenes/Main.tscn +++ /dev/null @@ -1,10 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://scenes/Main.gd" type="Script" id=1] - -[node name="Main" type="Node"] - -script = ExtResource( 1 ) -_sections_unfolded = [ "Pause" ] - - From d6a0c6920500607f33686622caae61981385c068 Mon Sep 17 00:00:00 2001 From: osquallo Date: Thu, 9 Aug 2018 10:16:41 +0200 Subject: [PATCH 7/7] fix du probleme de chargement d'une scene depuis la scene game_scene. --- global.gd | 42 +----------------------------------------- global.tscn | 2 ++ 2 files changed, 3 insertions(+), 41 deletions(-) diff --git a/global.gd b/global.gd index 3571d5f..b7fc4c2 100644 --- a/global.gd +++ b/global.gd @@ -37,7 +37,6 @@ func change_title(): OS.set_window_title( title ) ######## - ######## #### scene loading func goto_scene_loading( path ): @@ -107,7 +106,6 @@ func set_new_scene( scene_resource ): current_scene = scene_resource.instance() get_tree().get_root().add_child(current_scene) -# get_tree().set_current_scene( current_scene ) get_node("background_loader").hide() @@ -122,47 +120,9 @@ func _on_login_scene_character_creation_finished(): config_file.set_value(str(global.character_slot), "color", global.character_color) config_file.save( "user://player.cfg" ) - print("test") -# global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) global.goto_scene_loading( "res://game_scene/game_scene.tscn" ) -# get_tree().change_scene( "res://game_scene/game_scene.tscn" ) func _on_logout_button_pressed(): global.goto_scene_loading( "res://login_scene/login_scene.tscn" ) -# get_tree().change_scene( "res://login_scene/login_scene.tscn" ) + get_tree().paused = false ######## - -######## -#### defered goto without loading -func goto_scene( path ): - # This function will usually be called from a signal callback, - # or some other function from the running scene. - # Deleting the current scene at this point might be - # a bad idea, because it may be inside of a callback or function of it. - # The worst case will be a crash or unexpected behavior. - - # The way around this is deferring the load to a later time, when - # it is ensured that no code from the current scene is running: - - call_deferred("_deferred_goto_scene", path) - - -func _deferred_goto_scene( path ): - # Immediately free the current scene, - # there is no risk here. - if current_scene: - current_scene.free() - - # Load new scene. - var s = ResourceLoader.load( path ) - - # Instance the new scene. - current_scene = s.instance() - - # Add it to the active scene, as child of root. - get_tree().get_root().add_child( current_scene ) - - # Optional, to make it compatible with the SceneTree.change_scene() API. - get_tree().set_current_scene( current_scene ) -######## - diff --git a/global.tscn b/global.tscn index 31aad6e..0fda1bc 100644 --- a/global.tscn +++ b/global.tscn @@ -5,7 +5,9 @@ [node name="global" type="Node" index="0"] +pause_mode = 2 script = ExtResource( 1 ) +_sections_unfolded = [ "Pause" ] [node name="background_loader" parent="." index="0" instance=ExtResource( 2 )]