From b844b48ad7f54740b898b55822c28fe6784e9afc Mon Sep 17 00:00:00 2001
From: Frederic Aust <frederic.aust@hs-bochum.de>
Date: Sat, 6 Mar 2021 22:21:28 +0100
Subject: [PATCH] =?UTF-8?q?Local=202=20Player=20Modus=20implementiert,=20b?=
 =?UTF-8?q?ei=20dem=20zwei=20Menschen=20lokal=20an=20einem=20Computer=20ge?=
 =?UTF-8?q?geneinander=20spielen=20k=C3=B6nnen.=20Damit=20der=20Spielfluss?=
 =?UTF-8?q?=20m=C3=B6glichst=20fluessig=20ist=20wird=20eine=20PLaytime=20p?=
 =?UTF-8?q?er=20Step=20von=200.01=20empfohlen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Battle Pong/GameSettings.gd |  1 +
 Battle Pong/Main.gd         | 44 ++++++++++++++++++++++++-------------
 Battle Pong/Main.tscn       |  4 ++++
 Battle Pong/MainMenu.gd     |  4 ++++
 4 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/Battle Pong/GameSettings.gd b/Battle Pong/GameSettings.gd
index 874eb08..a3e92d4 100644
--- a/Battle Pong/GameSettings.gd	
+++ b/Battle Pong/GameSettings.gd	
@@ -3,6 +3,7 @@ extends Node
 export var rendering_enabled = false
 export var learn_with_images = true
 export var trainings_mode_enabled = false
+export var local_two_player = false
 
 # Constant values !!!! Keep always up to date !!! 
 var display_window_width = 1024
diff --git a/Battle Pong/Main.gd b/Battle Pong/Main.gd
index 032dd1d..43e7975 100644
--- a/Battle Pong/Main.gd	
+++ b/Battle Pong/Main.gd	
@@ -51,21 +51,26 @@ func _ready():
         $Player1Score.hide()
         $Player2Score.hide()
     
-    # Connect base signals to get notified of new client connections,
-    # disconnections, and disconnect requests.
-    _server.connect("client_connected", self, "_connected")
-    _server.connect("client_disconnected", self, "_disconnected")
-    _server.connect("client_close_request", self, "_close_request")
-    # This signal is emitted when not using the Multiplayer API every time a
-    # full packet is received.
-    # Alternatively, you could check get_peer(PEER_ID).get_available_packets()
-    # in a loop for each connected peer.
-    _server.connect("data_received", self, "_on_data")
-    # Start listening on the given port.
-    var server_err = _server.listen(port)
-    if server_err != OK:
-        print("Unable to start server")
-        set_process(false)
+    if( $"/root/GameSettings".local_two_player):
+        $LocalTwoPlayerTimer.wait_time = $"/root/GameSettings".game_playtime_per_step
+        $LocalTwoPlayerTimer.start()
+        
+    else:
+        # Connect base signals to get notified of new client connections,
+        # disconnections, and disconnect requests.
+        _server.connect("client_connected", self, "_connected")
+        _server.connect("client_disconnected", self, "_disconnected")
+        _server.connect("client_close_request", self, "_close_request")
+        # This signal is emitted when not using the Multiplayer API every time a
+        # full packet is received.
+        # Alternatively, you could check get_peer(PEER_ID).get_available_packets()
+        # in a loop for each connected peer.
+        _server.connect("data_received", self, "_on_data")
+        # Start listening on the given port.
+        var server_err = _server.listen(port)
+        if server_err != OK:
+            print("Unable to start server")
+            set_process(false)
 
     set_ball()
     $PlayerOne.start($StartPositionPlayerOne.position)
@@ -384,3 +389,12 @@ func unpause():
     ball.set_pause(false)
     $PlayerOne.set_pause(false)
     $PlayerTwo.set_pause(false)
+
+
+func _on_LocalTwoPlayerTimer_timeout():
+    unpause()
+    $PlayerOne.run(game_playtime_per_step)
+    $PlayerTwo.run(game_playtime_per_step)
+    ball.run(game_playtime_per_step)
+    timeout()
+    pass # Replace with function body.
diff --git a/Battle Pong/Main.tscn b/Battle Pong/Main.tscn
index 55a9a16..1684f90 100644
--- a/Battle Pong/Main.tscn	
+++ b/Battle Pong/Main.tscn	
@@ -82,5 +82,9 @@ __meta__ = {
 
 [node name="WallBottom" parent="." instance=ExtResource( 3 )]
 position = Vector2( 0, 600 )
+
+[node name="LocalTwoPlayerTimer" type="Timer" parent="."]
+wait_time = 0.01
 [connection signal="hit" from="PlayerTwo" to="." method="_on_PlayerTwo_hit"]
 [connection signal="hit" from="PlayerOne" to="." method="_on_PlayerOne_hit"]
+[connection signal="timeout" from="LocalTwoPlayerTimer" to="." method="_on_LocalTwoPlayerTimer_timeout"]
diff --git a/Battle Pong/MainMenu.gd b/Battle Pong/MainMenu.gd
index d44016d..15e8915 100644
--- a/Battle Pong/MainMenu.gd	
+++ b/Battle Pong/MainMenu.gd	
@@ -12,6 +12,10 @@ func _ready():
 
 
 func _on_but_local_two_player_pressed():
+    $"/root/GameSettings".rendering_enabled = true
+    $"/root/GameSettings".learn_with_images = false
+    $"/root/GameSettings".local_two_player = true;
+    get_tree().change_scene("res://Main.tscn")
     pass # Replace with function body.
 
 
-- 
GitLab