diff --git a/Nodes/StartNode.tscn b/Nodes/StartNode.tscn new file mode 100644 index 0000000..515c90c --- /dev/null +++ b/Nodes/StartNode.tscn @@ -0,0 +1,73 @@ +[gd_scene load_steps=4 format=3 uid="uid://bqe8ucbruto1j"] + +[ext_resource type="Script" path="res://scripts/Logic/StraightMapNode.gd" id="1_a5pbl"] +[ext_resource type="PackedScene" uid="uid://bup2ps8l2ifj8" path="res://Nodes/StraightMapNode.tscn" id="2_wj4hp"] +[ext_resource type="PackedScene" uid="uid://c3ynfb5ky5p8g" path="res://Nodes/TurnMapNode.tscn" id="3_xy8vi"] + +[node name="StartNode" type="Node" node_paths=PackedStringArray("next")] +script = ExtResource("1_a5pbl") +next = NodePath("StraightMapNode") + +[node name="StraightMapNode" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode2") + +[node name="StraightMapNode2" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../TurnMapNode") + +[node name="TurnMapNode" parent="." node_paths=PackedStringArray("turn_node", "next") instance=ExtResource("3_xy8vi")] +turn_node = NodePath("StraightMapNode") +next = NodePath("../StraightMapNode3") + +[node name="StraightMapNode" parent="TurnMapNode" node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode2") + +[node name="StraightMapNode2" parent="TurnMapNode" node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode3") + +[node name="StraightMapNode3" parent="TurnMapNode" node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode4") + +[node name="StraightMapNode4" parent="TurnMapNode" node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode5") + +[node name="StraightMapNode5" parent="TurnMapNode" node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode6") + +[node name="StraightMapNode6" parent="TurnMapNode" node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode7") + +[node name="StraightMapNode7" parent="TurnMapNode" node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../../StraightMapNode11") + +[node name="StraightMapNode3" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode4") + +[node name="StraightMapNode4" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode5") + +[node name="StraightMapNode5" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode6") + +[node name="StraightMapNode6" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode7") + +[node name="StraightMapNode7" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode8") + +[node name="StraightMapNode8" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode9") + +[node name="StraightMapNode9" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode10") + +[node name="StraightMapNode10" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode11") + +[node name="StraightMapNode11" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode12") + +[node name="StraightMapNode12" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("../StraightMapNode13") + +[node name="StraightMapNode13" parent="." node_paths=PackedStringArray("next") instance=ExtResource("2_wj4hp")] +next = NodePath("..") diff --git a/Nodes/StraightMapNode.tscn b/Nodes/StraightMapNode.tscn new file mode 100644 index 0000000..a52bd3d --- /dev/null +++ b/Nodes/StraightMapNode.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://bup2ps8l2ifj8"] + +[ext_resource type="Script" path="res://scripts/Logic/StraightMapNode.gd" id="1_1ejkw"] + +[node name="StraightMapNode" type="Node"] +script = ExtResource("1_1ejkw") diff --git a/Nodes/TurnMapNode.tscn b/Nodes/TurnMapNode.tscn new file mode 100644 index 0000000..cf8ab9f --- /dev/null +++ b/Nodes/TurnMapNode.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://c3ynfb5ky5p8g"] + +[ext_resource type="Script" path="res://scripts/Logic/TurnMapNode.gd" id="1_wbnsc"] + +[node name="TurnMapNode" type="Node"] +script = ExtResource("1_wbnsc") diff --git a/Nodes/game.tscn b/Nodes/game.tscn index d9a8436..f42b257 100644 --- a/Nodes/game.tscn +++ b/Nodes/game.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=8 format=3 uid="uid://n7w0ff7u25yc"] +[gd_scene load_steps=9 format=3 uid="uid://n7w0ff7u25yc"] [ext_resource type="Script" path="res://scripts/Logic/Game.gd" id="1_iox18"] +[ext_resource type="PackedScene" uid="uid://bqe8ucbruto1j" path="res://Nodes/StartNode.tscn" id="2_61aog"] [ext_resource type="PackedScene" uid="uid://byo1m0n20yl45" path="res://Nodes/cannon.tscn" id="2_vrf6k"] [ext_resource type="Script" path="res://scripts/Train.gd" id="2_xl0he"] [ext_resource type="PackedScene" uid="uid://vwjd5od63jgh" path="res://Nodes/Player.tscn" id="4_1ipcp"] @@ -17,6 +18,8 @@ data = PackedVector3Array(-6.5, 0.5, 12.5, 6.5, 0.5, 12.5, -6.5, -0.5, 12.5, 6.5 [node name="Game" type="Node"] script = ExtResource("1_iox18") +[node name="StartNode" parent="." instance=ExtResource("2_61aog")] + [node name="Camera3D" type="Camera3D" parent="."] transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 20, 0) @@ -38,6 +41,8 @@ shape = SubResource("ConcavePolygonShape3D_p3d4e") [node name="CharacterBody3D" parent="Player1" instance=ExtResource("4_1ipcp")] transform = Transform3D(1, 0, -3.55271e-15, 0, 1, 0, 3.55271e-15, 0, 1, -1.18815, 1, -11.064) +[node name="Cannon2" parent="Player1" instance=ExtResource("2_vrf6k")] + [node name="Player2" type="Node3D" parent="."] transform = Transform3D(-0.0154456, -6.75145e-10, -0.999879, -5.21344e-12, 1, -6.75146e-10, 0.999879, -5.2134e-12, -0.0154456, -8, 0, -32) script = ExtResource("2_xl0he") diff --git a/project.godot b/project.godot index da5d962..68fa51e 100644 --- a/project.godot +++ b/project.godot @@ -43,6 +43,11 @@ _global_script_classes=[{ "class": &"TrainEngine", "language": &"GDScript", "path": "res://scripts/Modules/Engine.gd" +}, { +"base": "StraightMapNode", +"class": &"TurnMapNode", +"language": &"GDScript", +"path": "res://scripts/Logic/TurnMapNode.gd" }] _global_script_class_icons={ "Cannon": "", @@ -51,7 +56,8 @@ _global_script_class_icons={ "Storage": "", "StraightMapNode": "", "Train": "", -"TrainEngine": "" +"TrainEngine": "", +"TurnMapNode": "" } [application] diff --git a/scripts/Logic/Game.gd b/scripts/Logic/Game.gd index 56065d9..5db9c6b 100644 --- a/scripts/Logic/Game.gd +++ b/scripts/Logic/Game.gd @@ -10,12 +10,17 @@ var t = 0.0 @onready var p1_train = $Player1 as Train @onready var p2_train = $Player2 as Train - +@onready var StartNode = $StartNode +var p1_node : MapNode +var p2_node : MapNode func _ready(): + p1_node = StartNode + p2_node = StartNode p2_train.get_node("CharacterBody3D").is_player1 = false p2_train.is_P1 = false p1_train.hit.connect(_on_hit_player) + p2_train.hit.connect(_on_hit_player) func _on_hit_player(player1,dmg): @@ -25,5 +30,19 @@ func _on_hit_player(player1,dmg): p1_train.current_speed -= dmg func _process(delta): + p1_train.current_distance += p1_train.current_speed * delta + p2_train.current_distance += p2_train.current_speed * delta + + if(p1_train.current_distance >= p1_node.LENGTH): + var distance_delta = p1_train.current_distance - p1_node.LENGTH + p1_node = p1_node._on_train_exit(p1_train) + p1_train.current_distance = distance_delta + + if(p2_train.current_distance >= p2_node.LENGTH): + var distance_delta = p2_train.current_distance - p2_node.LENGTH + p2_node = p2_node._on_train_exit(p2_train) + p2_train.current_distance = distance_delta + + if Input.is_action_pressed("test"): emit_signal("shoot") diff --git a/scripts/Logic/StraightMapNode.gd b/scripts/Logic/StraightMapNode.gd index 7a9763f..e970ce6 100644 --- a/scripts/Logic/StraightMapNode.gd +++ b/scripts/Logic/StraightMapNode.gd @@ -1,8 +1,9 @@ extends MapNode class_name StraightMapNode -var next : MapNode +@export var next : MapNode func _on_train_exit(train): next._on_train_entered(train) super._on_train_exit(train) + return next diff --git a/scripts/Logic/TurnMapNode.gd b/scripts/Logic/TurnMapNode.gd index f737172..d98f312 100644 --- a/scripts/Logic/TurnMapNode.gd +++ b/scripts/Logic/TurnMapNode.gd @@ -1,10 +1,11 @@ extends StraightMapNode +class_name TurnMapNode signal turnEvent -var is_left_turn = false var turn = false -var turn_node : MapNode +@export var is_left_turn = false +@export var turn_node : MapNode func _on_train_entered(train): super._on_train_entered(train) @@ -14,5 +15,7 @@ func _on_train_exit(train): if(turn): turn_node._on_train_entered(train) current_trains.erase(train) + return turn_node else: super._on_train_exit(train) + return next diff --git a/scripts/Modules/Storage.gd b/scripts/Modules/Storage.gd index baf1804..9add654 100644 --- a/scripts/Modules/Storage.gd +++ b/scripts/Modules/Storage.gd @@ -15,7 +15,9 @@ func _ready(): func interact(): if currentStashValue >= 1: currentStashValue -= 1 + return + func _on_signal_storing(): if currentStashValue < maxStashValue: currentStashValue += 1 diff --git a/scripts/Train.gd b/scripts/Train.gd index 6bfb2f1..97e5ebd 100644 --- a/scripts/Train.gd +++ b/scripts/Train.gd @@ -5,7 +5,8 @@ signal hit(player, dmg) signal game_over var is_P1 = true -var current_speed = 10 +var current_distance = 0 +var current_speed = 5 var CANNONS = [] var STORAGES = [] #@onready var ENGINE = $Module/Engine @@ -25,7 +26,6 @@ func _on_signal_shooting(): for cannon in CANNONS: if cannon.shoot(): hit.emit(is_P1,cannon.DAMAGE) - print("Shot P2") func is_dead(): if current_speed <= 0: