From c62d7d8927e8d4d295476c1de591da5eb91a938d Mon Sep 17 00:00:00 2001 From: VAILLANT Jeremy Date: Sat, 8 May 2021 20:46:10 +0200 Subject: [PATCH 1/3] Add info about log android --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 53b7351..a33b835 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,10 @@ -# game-source +# Hiiden Object +Integrate scenes [Warcraft](https://www.artstation.com/artwork/9mZ65Q) in Android application. + +## Tips + +See log android : +``` +adb logcat -s godot +``` From 275c0a080f1d0da847deeb7733bde11658763c33 Mon Sep 17 00:00:00 2001 From: VAILLANT Jeremy Date: Sun, 9 May 2021 17:10:24 +0200 Subject: [PATCH 2/3] Configure autoload & input end --- project.godot | 14 ++++++++++ scenes/Global.gd | 60 ++++++++++++++++++++++++++++++++++++++++++ scenes/UI/Loading.tscn | 35 ++++++++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 scenes/Global.gd create mode 100644 scenes/UI/Loading.tscn diff --git a/project.godot b/project.godot index 3cc41f0..6d2e6fb 100644 --- a/project.godot +++ b/project.godot @@ -15,10 +15,24 @@ run/main_scene="res://scenes/main.tscn" config/icon="res://icon.png" config/quit_on_go_back=false +[autoload] + +Global="*res://scenes/Global.gd" +Loading="*res://scenes/UI/Loading.tscn" + [display] window/stretch/mode="2d" +[input] + +ui_end={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777230,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"unicode":0,"echo":false,"script":null) + ] +} + [physics] common/enable_pause_aware_picking=true diff --git a/scenes/Global.gd b/scenes/Global.gd new file mode 100644 index 0000000..268d96b --- /dev/null +++ b/scenes/Global.gd @@ -0,0 +1,60 @@ +extends Control + +var current_scene = null +var loader = null +var wait_frames = 1 +var time_max = 100 # msec + +func _ready(): + print("[global#_ready] get root scene") + var root = get_tree().get_root() + current_scene = root.get_child(root.get_child_count() - 1) + +func goto_scene(path): + print("[global#goto_scene]") + loader = ResourceLoader.load_interactive(path) + if loader == null: + print("Error loading ....") + return + + set_process(true) + current_scene.queue_free() + wait_frames = 1 + +func _process(_delta): + print("[global#_process]") + if loader == null: + set_process(false) + return + + if wait_frames > 0: + wait_frames -= 1 + + var tick = OS.get_ticks_msec() + + # Use "time_max" to control for how long we block this thread + while OS.get_ticks_msec() < tick + time_max: + var err = loader.poll() + + if err == ERR_FILE_EOF: # Finished loading. + var resource = loader.get_resource() + loader = null + set_new_scene(resource) + get_node("/root/Loading").hide() + break + elif err == OK: + update_progress() + else: + print("[global#_process] Error loading") + loader = null + break + +func update_progress(): + var progress = float(loader.get_stage()) / loader.get_stage_count() + print("[global#update_progress] " + String(progress)) + get_node("/root/Loading").visible = true + +func set_new_scene(scene_resource): + print("[global#set_new_scene]") + current_scene = scene_resource.instance() + get_node("/root").add_child(current_scene) diff --git a/scenes/UI/Loading.tscn b/scenes/UI/Loading.tscn new file mode 100644 index 0000000..57cf412 --- /dev/null +++ b/scenes/UI/Loading.tscn @@ -0,0 +1,35 @@ +[gd_scene format=2] + +[node name="Control" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ColorRect" type="ColorRect" parent="."] +margin_right = 1024.0 +margin_bottom = 600.0 +rect_scale = Vector2( 1.00231, 1 ) +color = Color( 0, 0, 0, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CenterContainer" type="CenterContainer" parent="ColorRect"] +margin_right = 1024.0 +margin_bottom = 600.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="ColorRect/CenterContainer"] +margin_left = 479.0 +margin_top = 293.0 +margin_right = 544.0 +margin_bottom = 307.0 + +[node name="Label" type="Label" parent="ColorRect/CenterContainer/VBoxContainer"] +margin_right = 65.0 +margin_bottom = 14.0 +text = "Loading ..." From 78b566f5b8f254efd29de670acd9112e0601c291 Mon Sep 17 00:00:00 2001 From: VAILLANT Jeremy Date: Sun, 9 May 2021 17:10:40 +0200 Subject: [PATCH 3/3] Add loading when load warcraft scene --- scenes/UI/ChooseScene.gd | 3 ++- scenes/UI/ChooseScene.tscn | 15 +++++++++++---- scenes/levels/WarCraft.gd | 14 ++++++++++---- scenes/main.gd | 16 ++++++++-------- 4 files changed, 31 insertions(+), 17 deletions(-) diff --git a/scenes/UI/ChooseScene.gd b/scenes/UI/ChooseScene.gd index 76ab863..f67148f 100644 --- a/scenes/UI/ChooseScene.gd +++ b/scenes/UI/ChooseScene.gd @@ -1,4 +1,5 @@ extends Control +# Load scene warcraft func _on_WarCraft_pressed(): - get_tree().change_scene("res://scenes/levels/WarCraft.tscn") + Global.goto_scene("res://scenes/levels/WarCraft.tscn") diff --git a/scenes/UI/ChooseScene.tscn b/scenes/UI/ChooseScene.tscn index 9df5920..bbdf270 100644 --- a/scenes/UI/ChooseScene.tscn +++ b/scenes/UI/ChooseScene.tscn @@ -6,13 +6,20 @@ [node name="ChooseScene" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 -margin_left = 200.0 script = ExtResource( 1 ) __meta__ = { "_edit_use_anchors_": false } -[node name="GridContainer" type="GridContainer" parent="."] +[node name="games" type="Control" parent="."] +margin_left = 200.0 +margin_right = 1024.0 +margin_bottom = 600.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="GridContainer" type="GridContainer" parent="games"] margin_left = 25.0 margin_top = 26.2599 margin_right = 824.0 @@ -21,10 +28,10 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="WarCraft" type="TextureButton" parent="GridContainer"] +[node name="WarCraft" type="TextureButton" parent="games/GridContainer"] margin_right = 150.0 margin_bottom = 150.0 mouse_default_cursor_shape = 2 texture_normal = ExtResource( 2 ) -[connection signal="pressed" from="GridContainer/WarCraft" to="." method="_on_WarCraft_pressed"] +[connection signal="pressed" from="games/GridContainer/WarCraft" to="." method="_on_WarCraft_pressed"] diff --git a/scenes/levels/WarCraft.gd b/scenes/levels/WarCraft.gd index 6c68e8a..3dbcb12 100644 --- a/scenes/levels/WarCraft.gd +++ b/scenes/levels/WarCraft.gd @@ -1,9 +1,15 @@ extends Spatial -export (PackedScene) var main = load("res://scenes/main.tscn") +func _process(_delta): + # Event key "escape" and "godot event" ui_end + if Input.is_action_just_pressed("ui_end"): + _quit_to_menu() func _notification(what): - # Back to main scene + # Notification for android back action if what == MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST: - var scene = main.instance() - call_deferred("add_child", scene) + _quit_to_menu() + +# Back to main scene +func _quit_to_menu(): + Global.goto_scene("res://scenes/main.tscn") diff --git a/scenes/main.gd b/scenes/main.gd index 62e3dac..db3aa23 100644 --- a/scenes/main.gd +++ b/scenes/main.gd @@ -3,7 +3,7 @@ extends Node export (PackedScene) var about = load("res://scenes/UI/About.tscn") export (PackedScene) var scenes = load("res://scenes/UI/ChooseScene.tscn") -var scene +var current_scene = null # Quit the game func _on_Quit_pressed(): @@ -12,17 +12,17 @@ func _on_Quit_pressed(): # Load scene about func _on_About_pressed(): _prepare_change_scene() - scene = about.instance() - add_child(scene) + current_scene = about.instance() + add_child(current_scene) # Load scene for select game func _on_New_pressed(): _prepare_change_scene() - scene = scenes.instance() - add_child(scene) + current_scene = scenes.instance() + add_child(current_scene) ## PRIVATE func _prepare_change_scene(): - if (scene != null): - remove_child(scene) - scene.call_deferred("free") + if (current_scene != null): + remove_child(current_scene) + current_scene.call_deferred("free")