From 3f90518d26c400c70758fabaaa5447b324c8848e Mon Sep 17 00:00:00 2001 From: LUCASTUCIOUS Date: Mon, 29 Jul 2024 22:33:21 +0200 Subject: [PATCH] Travel rework --- core/Door.gd | 24 +++---- core/player.gd | 5 +- core/player.tscn | 16 ++--- core/sceneInstance.gd | 75 ++++++++++++-------- maps/map1.tscn | 9 ++- maps/map2.tscn | 6 +- maps/mapManager.tscn | 158 +++++++++++++++++++++++++++--------------- 7 files changed, 180 insertions(+), 113 deletions(-) diff --git a/core/Door.gd b/core/Door.gd index 683af10..d090706 100644 --- a/core/Door.gd +++ b/core/Door.gd @@ -1,28 +1,26 @@ @tool extends Sprite2D - +@export_group("Travel settings") @export_file("*.tscn") var NextScene:String @export_enum("LEFT","RIGHT","UP","DOWN") var Travel :int +@export var Spawn_Position:Vector2 = Vector2(0,0 +) +var NextSceneLoaded func _on_area_2d_area_entered(area): if(area): if(MapManager and MapManager.player == area.get_parent() and (MapManager.player.Traveling == false) ): MapManager.player.Traveling = true print("enter door",area) - var spawn:Transform2D - match Travel: - 0: - spawn = Transform2D(0,Vector2(433,-2061)) - 1: - spawn = Transform2D(0,Vector2(433,-2061)) - 2: - spawn = Transform2D(0,Vector2(433,-2061)) - 3: - spawn = Transform2D(0,Vector2(101,-2261)) - MapManager.transition_to_scene(NextScene,spawn,Travel) + NextSceneLoaded = load(NextScene) + if (NextSceneLoaded != null): + MapManager.transition_to_scene(NextSceneLoaded,Spawn_Position,Travel) + else: + printerr("error loading ",NextScene) func _ready(): - load(NextScene) + NextSceneLoaded = load(NextScene) + print(NextSceneLoaded) diff --git a/core/player.gd b/core/player.gd index 9dd1bf2..3fcb6f6 100644 --- a/core/player.gd +++ b/core/player.gd @@ -9,10 +9,9 @@ const MOUSESPEED = 10.0 var Traveling = false -func teleport(location:Transform2D , direction:float = 1): - transform = location +func teleport(location:Vector2 , direction:float = 1): + position = location #scale = Vector2(direction,1) - Traveling = false # Change the skin on every sprite func changeSkin(NewSkin:CanvasTexture,_NewHat:CanvasTexture = null): diff --git a/core/player.tscn b/core/player.tscn index 50433a2..4183729 100644 --- a/core/player.tscn +++ b/core/player.tscn @@ -551,23 +551,23 @@ parameters/WalkRun/3/TimeScale/scale = 0.3 position = Vector2(17, 0) [node name="BootL" type="Sprite2D" parent="Skeleton2D"] -position = Vector2(-64.4822, -36.4036) -rotation = 0.211081 +position = Vector2(-93.6914, -35.1428) +rotation = 0.413206 texture = ExtResource("2_w1l4c") region_enabled = true region_rect = Rect2(896, 768, 128, 128) metadata/Type = "Skin" [node name="BootR" type="Sprite2D" parent="Skeleton2D"] -position = Vector2(16.3307, -42.6376) -rotation = -0.421016 +position = Vector2(40.2865, -41.1666) +rotation = -0.671407 texture = ExtResource("2_w1l4c") region_enabled = true region_rect = Rect2(896, 768, 128, 128) metadata/Type = "Skin" [node name="Body" type="Sprite2D" parent="Skeleton2D"] -position = Vector2(51, -231.036) +position = Vector2(51, -234.374) texture = ExtResource("2_w1l4c") offset = Vector2(-15, 0) region_enabled = true @@ -591,7 +591,7 @@ metadata/Type = "Skin" [node name="Tail" type="Sprite2D" parent="Skeleton2D/Body"] show_behind_parent = true -position = Vector2(44, 101.036) +position = Vector2(44, 104.374) rotation = 0.153589 texture = ExtResource("2_w1l4c") offset = Vector2(70, 0) @@ -600,8 +600,8 @@ region_rect = Rect2(768, 640, 256, 128) metadata/Type = "Skin" [node name="Head" type="Sprite2D" parent="Skeleton2D"] -position = Vector2(-40, -404.036) -rotation = 0.0695265 +position = Vector2(-40, -407.374) +rotation = 0.0767937 scale = Vector2(1, 1) texture = ExtResource("2_w1l4c") offset = Vector2(0, -168) diff --git a/core/sceneInstance.gd b/core/sceneInstance.gd index 3220fa9..6cb775e 100644 --- a/core/sceneInstance.gd +++ b/core/sceneInstance.gd @@ -10,49 +10,64 @@ extends Node2D #@onready var scene_transition = $ScreenTransition/AnimationPlayer var player:Object -func transition_to_scene(new_scene: PackedScene, spawn_location = Transform2D.IDENTITY, spawn_direction = 1): + +func _process(_delta): + if($CurrentScene.get_child_count() >0): + if($CurrentScene.get_child(0).position != Vector2(0,0)): + breakpoint + +func transition_to_scene(new_scene: PackedScene, spawn_location: Vector2, spawn_direction = 1): #screen_transition.play('FadeToBlack') if (new_scene): if (current_scene.get_child_count() == 0 ): current_scene.add_child(new_scene.instantiate()) else: next_scene.add_child(new_scene.instantiate()) + #region Anim Map + if (next_scene.get_child(0) != null): + match spawn_direction: + 0: + $AnimationPlayer.play("travel_left",-1,1) + 1: + $AnimationPlayer.play("travel_left",-1,1) + 2: + $AnimationPlayer.play("travel_up",-1,1) + 3: + $AnimationPlayer.play("travel_down",-1,1) + #endregion + #region Spawn Player + if (player): + player.reparent(next_scene.get_child(0)) + player.teleport(spawn_location, spawn_direction) + else: + player = $CurrentScene.find_child("player",true) + if (player): + player.teleport(spawn_location, spawn_direction) + else: #Spawn the player if there is none + if (InitialPlayer): + player = InitialPlayer.instantiate() + player.set_name("player") + current_scene.get_child(0).add_child(player) + else: + printerr("No Initial player found") + #endregion else: printerr("No New Scene") - - #region Spawn Player - if (player): - player.reparent(next_scene.get_child(0)) - player.teleport(spawn_location, spawn_direction) - else: - player = $CurrentScene.find_child("player",true) - if (player): - player.teleport(spawn_location, spawn_direction) - else: #Spawn the player if there is none - if (InitialPlayer): - player = InitialPlayer.instantiate() - player.set_name("player") - current_scene.get_child(0).add_child(player) - else: - printerr("No Initial player found") - #endregion - match spawn_direction: - 0: - $AnimationPlayer.play("travel_left") - 1: - $AnimationPlayer.play_backwards("travel_left") - 2: - $AnimationPlayer.play_backwards("travel_down") - 3: - $AnimationPlayer.play("travel_down") func _on_ready(): transition_to_scene(InitialMap,Vector2(0,0),1) - +func on_travel_end(): + player.Traveling = false + print("end travel") func _on_animation_player_animation_finished(anim_name): print("anim finished") current_scene.get_child(0).queue_free() - next_scene.get_child(0).reparent(current_scene) - next_scene.get_child(0).queue_free() + current_scene.position = Vector2(0,0) + if (next_scene.get_child_count() > 0): + next_scene.get_child(0).reparent(current_scene) + if (next_scene.get_child_count() > 0): + next_scene.get_child(0).queue_free() + print("level unloaded") + await get_tree().create_timer(1).connect("timeout",Callable(self,"on_travel_end")) diff --git a/maps/map1.tscn b/maps/map1.tscn index e6de455..d68f1d6 100644 --- a/maps/map1.tscn +++ b/maps/map1.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=32 format=3 uid="uid://wlqsvbqpcbh"] +[gd_scene load_steps=33 format=3 uid="uid://wlqsvbqpcbh"] [ext_resource type="Texture2D" uid="uid://cacwy4tka88k1" path="res://maps/map1.tres" id="1_pt5vq"] [ext_resource type="Texture2D" uid="uid://cxharyv0ajr37" path="res://textures/atlas/DioramaEntrance_All_01_SPRT.png" id="2_n7y5f"] [ext_resource type="Texture2D" uid="uid://c5bd2ta3esnib" path="res://extracted/4010-A Tiny Sticker Tale review pic 1.jpg" id="3_yh2wy"] +[ext_resource type="PackedScene" uid="uid://do65rgg0p2plt" path="res://core/Door.tscn" id="4_lwk0u"] [ext_resource type="PackedScene" uid="uid://bddcriwo55x8k" path="res://prefab/prefab_woddenbridge.tscn" id="4_okpsn"] [ext_resource type="Texture2D" uid="uid://cun14l52f477p" path="res://textures/atlas/Bushes_All_01_SPRT.png" id="5_xmosd"] [ext_resource type="PackedScene" uid="uid://domcpxdf6lqpb" path="res://prefab/free_sticker.tscn" id="6_3fkbm"] @@ -132,6 +133,12 @@ position = Vector2(325.833, -87.5) scale = Vector2(0.95216, 0.95216) metadata/Tags = ["bridge"] +[node name="Door3" parent="Floors05Sprt" instance=ExtResource("4_lwk0u")] +position = Vector2(-1.5, 455) +NextScene = "res://maps/map2.tscn" +Travel = 3 +Spawn_Position = Vector2(333, -2652) + [node name="4010-aTinyStickerTaleReviewPic1" type="Sprite2D" parent="."] visible = false top_level = true diff --git a/maps/map2.tscn b/maps/map2.tscn index a7a7888..e5b7eeb 100644 --- a/maps/map2.tscn +++ b/maps/map2.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=28 format=3 uid="uid://5tfe84u3gyty"] +[gd_scene load_steps=27 format=3 uid="uid://5tfe84u3gyty"] [ext_resource type="Texture2D" uid="uid://bnmlngwnibfnj" path="res://extracted/ref_map2.jpg" id="1_cdv75"] [ext_resource type="Texture2D" uid="uid://cypb81fuw4w44" path="res://textures/atlas/GroundExtensions_All_01_SPRT.png" id="3_54rqc"] @@ -7,7 +7,6 @@ [ext_resource type="Texture2D" uid="uid://cxharyv0ajr37" path="res://textures/atlas/DioramaEntrance_All_01_SPRT.png" id="4_lgnnp"] [ext_resource type="PackedScene" uid="uid://do65rgg0p2plt" path="res://core/Door.tscn" id="4_yvr3q"] [ext_resource type="Texture2D" uid="uid://dggavne4ueche" path="res://extracted/Texture2D/Tree_Field_01_SPRT.png" id="5_lwnej"] -[ext_resource type="PackedScene" uid="uid://wlqsvbqpcbh" path="res://maps/map1.tscn" id="5_wj7wd"] [ext_resource type="PackedScene" uid="uid://6ww1g2enfdx3" path="res://prefab/solid_sticker.tscn" id="6_k22qa"] [ext_resource type="Texture2D" uid="uid://chuv25pm2vqen" path="res://textures/atlas/Rocks_All_01_SPRT.png" id="7_pykf8"] [ext_resource type="Texture2D" uid="uid://b366mcexlko72" path="res://textures/atlas/LogsAndWood_All_01_SPRT.png" id="8_ugxkt"] @@ -113,8 +112,9 @@ flip_h = true position = Vector2(67.4006, -511.656) scale = Vector2(0.869617, 0.869617) texture = SubResource("AtlasTexture_a0jcl") -NextScene = ExtResource("5_wj7wd") +NextScene = "res://maps/map1.tscn" Travel = 2 +Spawn_Position = Vector2(0, 2317) [node name="RefMap2" type="Sprite2D" parent="."] visible = false diff --git a/maps/mapManager.tscn b/maps/mapManager.tscn index 219e102..de58576 100644 --- a/maps/mapManager.tscn +++ b/maps/mapManager.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://d382cexpr4075"] +[gd_scene load_steps=11 format=3 uid="uid://d382cexpr4075"] [ext_resource type="Script" path="res://core/sceneInstance.gd" id="1_p0vo1"] [ext_resource type="PackedScene" uid="uid://0m1hk2nu4bps" path="res://core/player.tscn" id="2_fyjh8"] @@ -6,53 +6,6 @@ [ext_resource type="PackedScene" uid="uid://bxin06eifwhb5" path="res://core/Background.tscn" id="4_81gsq"] [ext_resource type="Texture2D" uid="uid://cr27nsk1jw2ks" path="res://textures/pattern/Pattern_swamp.png" id="5_pl2si"] -[sub_resource type="Animation" id="Animation_w8b25"] -resource_name = "travel_down" -tracks/0/type = "bezier" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("NextScene:position:x") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"handle_modes": PackedInt32Array(0, 0), -"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0, 1) -} -tracks/1/type = "bezier" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("NextScene:position:y") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"handle_modes": PackedInt32Array(0, 0), -"points": PackedFloat32Array(10000, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0, 1) -} -tracks/2/type = "bezier" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("CurrentScene:position:x") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"handle_modes": PackedInt32Array(0, 0), -"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0, 1) -} -tracks/3/type = "bezier" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("CurrentScene:position:y") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"handle_modes": PackedInt32Array(0, 0), -"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, -10000, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0, 1) -} - [sub_resource type="Animation" id="Animation_gjtj4"] length = 0.001 tracks/0/type = "bezier" @@ -100,6 +53,53 @@ tracks/3/keys = { "times": PackedFloat32Array(0) } +[sub_resource type="Animation" id="Animation_w8b25"] +resource_name = "travel_down" +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("NextScene:position:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 1) +} +tracks/1/type = "bezier" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("NextScene:position:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"handle_modes": PackedInt32Array(0, 0), +"points": PackedFloat32Array(10000, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 1) +} +tracks/2/type = "bezier" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("CurrentScene:position:x") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"handle_modes": PackedInt32Array(0, 0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 0.3, 1) +} +tracks/3/type = "bezier" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("CurrentScene:position:y") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"handle_modes": PackedInt32Array(0, 0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, -10000, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 0.3, 1) +} + [sub_resource type="Animation" id="Animation_pd367"] resource_name = "travel_left" tracks/0/type = "bezier" @@ -109,9 +109,9 @@ tracks/0/path = NodePath("CurrentScene:position:x") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"handle_modes": PackedInt32Array(0, 0), -"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, -10000, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0, 1) +"handle_modes": PackedInt32Array(0, 0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, -10000, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 0.3, 1) } tracks/1/type = "bezier" tracks/1/imported = false @@ -120,9 +120,9 @@ tracks/1/path = NodePath("CurrentScene:position:y") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { -"handle_modes": PackedInt32Array(0, 0), -"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0, 1) +"handle_modes": PackedInt32Array(0, 0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 0.3, 1) } tracks/2/type = "bezier" tracks/2/imported = false @@ -147,11 +147,59 @@ tracks/3/keys = { "times": PackedFloat32Array(0, 1) } +[sub_resource type="Animation" id="Animation_c7s7o"] +resource_name = "travel_up" +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("CurrentScene:position:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0, 0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 0.3, 1) +} +tracks/1/type = "bezier" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("CurrentScene:position:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"handle_modes": PackedInt32Array(0, 0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 10000, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 0.3, 1) +} +tracks/2/type = "bezier" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("NextScene:position:x") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"handle_modes": PackedInt32Array(0, 0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 1) +} +tracks/3/type = "bezier" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("NextScene:position:y") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"handle_modes": PackedInt32Array(0, 0), +"points": PackedFloat32Array(-10000, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 1) +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_q5lfn"] _data = { "RESET": SubResource("Animation_gjtj4"), "travel_down": SubResource("Animation_w8b25"), -"travel_left": SubResource("Animation_pd367") +"travel_left": SubResource("Animation_pd367"), +"travel_up": SubResource("Animation_c7s7o") } [node name="MapManager" type="Node2D"]