From 7842743dbd5eb3ba9dcf14959c281e087bf2c296 Mon Sep 17 00:00:00 2001 From: Frederic Aust <frederic.aust@hs-bochum.de> Date: Sat, 3 Apr 2021 15:46:01 +0200 Subject: [PATCH] ## GameSettings: * Parameter *length* und *speed* des Obstacle hinzugefuegt * Beim Start wird mit Defaultwerten initialisiert, fall configfiles geladen werden in der Werte fehlen * In der update_settings Funktion wird nun geprueft, ob die Variablen im Objekt data enthalten sind, um Null-Exceptions zu vermeiden ## Obstacle: * Die Geschwindigkeit ist nun statisch und wird im Settings Window eingestellt ## SettingsWindow: * Eingabemaske fuer Obstacle *length* und *speed* erstellt * Inhalt zentriert * Einstellung Obstacle *length* vorerst ausgeblendet --- Battle Pong/GameSettings.gd | 101 +++++++++++++++++++++++--------- Battle Pong/Obstacle.gd | 8 +-- Battle Pong/SettingsWindow.gd | 6 ++ Battle Pong/SettingsWindow.tscn | 87 +++++++++++++++++++++++---- 4 files changed, 154 insertions(+), 48 deletions(-) diff --git a/Battle Pong/GameSettings.gd b/Battle Pong/GameSettings.gd index 905409a..da6f168 100644 --- a/Battle Pong/GameSettings.gd +++ b/Battle Pong/GameSettings.gd @@ -35,6 +35,9 @@ var player_one_speed var player_two_length var player_two_speed +var obstacle_length +var obstacle_speed + var path="data.json" var default_data = { @@ -68,6 +71,10 @@ var default_data = { "player_two":{ "length":60, "speed":300 + }, + "obstacle":{ + "length":60, + "speed":500 } } @@ -75,12 +82,12 @@ var data = default_data # Called when the node enters the scene tree for the first time. func _ready(): + reset_data() # Initialize Values load_data() pass # Replace with function body. func load_data(): var file = File.new() - if not file.file_exists(path): reset_data() return @@ -127,6 +134,10 @@ func save_data(): "player_two":{ "length":$"/root/GameSettings".player_two_length, "speed":$"/root/GameSettings".player_two_speed + }, + "obstacle":{ + "length":$"/root/GameSettings".obstacle_length, + "speed":$"/root/GameSettings".obstacle_speed } } var file @@ -140,33 +151,65 @@ func reset_data(): update_settings() func update_settings(): - game_playtime_per_step = data["game"]["playtime_per_step"] as float - game_wins_to_reset = data["game"]["wins_to_reset"] as int - game_port= data["game"]["port"] as int - - var format = data["image"]["format"] - if format =="RGB8": - image_rgb =true - else: - image_rgb = false; - image_heigth = data["image"]["height"] as int - image_width = data["image"]["width"] as int - - trainer_ip = data["trainer"]["ip"] - trainer_port = data["trainer"]["port"] as int - trainer_position = data["trainer"]["position"] - trainer_realtime_enabled = data["trainer"]["realtime_enabled"] as bool - - ball_height =data["ball"]["height"] as int - ball_width = data["ball"]["width"] as int - ball_speed_min = data["ball"]["speed_min"] as int - ball_speed_max = data["ball"]["speed_max"] as int - ball_speed_increment = data["ball"]["speed_increment"] as int - - player_one_length = data["player_one"]["length"] as int - player_one_speed = data["player_one"]["speed"] as int - - player_two_length = data["player_two"]["length"] as int - player_two_speed = data["player_two"]["speed"] as int + if data.has("game"): + if data["game"].has("playtime_per_step"): + game_playtime_per_step = data["game"]["playtime_per_step"] as float + if data["game"].has("wins_to_reset"): + game_wins_to_reset = data["game"]["wins_to_reset"] as int + if data["game"].has("port"): + game_port= data["game"]["port"] as int + + if data.has("image"): + if data["image"].has("format"): + var format = data["image"]["format"] + if format == "RGB8": + image_rgb =true + else: + image_rgb = false; + if data["image"].has("height"): + image_heigth = data["image"]["height"] as int + if data["image"].has("width"): + image_width = data["image"]["width"] as int + + + if data.has("trainer"): + if data["trainer"].has("ip"): + trainer_ip = data["trainer"]["ip"] + if data["trainer"].has("ip"): + trainer_port = data["trainer"]["ip"] as int + if data["trainer"].has("position"): + trainer_position = data["trainer"]["position"] + if data["trainer"].has("realtime_enabled"): + trainer_realtime_enabled = data["trainer"]["realtime_enabled"] as bool + + if data.has("ball"): + if data["ball"].has("height"): + ball_height =data["ball"]["height"] as int + if data["ball"].has("width"): + ball_width = data["ball"]["width"] as int + if data["ball"].has("speed_min"): + ball_speed_min = data["ball"]["speed_min"] as int + if data["ball"].has("speed_max"): + ball_speed_max = data["ball"]["speed_max"] as int + if data["ball"].has("speed_increment"): + ball_speed_increment = data["ball"]["speed_increment"] as int + + if data.has("player_one"): + if data["player_one"].has("length"): + player_one_length = data["player_one"]["length"] as int + if data["player_one"].has("speed"): + player_one_speed = data["player_one"]["speed"] as int + + if data.has("player_two"): + if data["player_two"].has("length"): + player_two_length = data["player_two"]["length"] as int + if data["player_two"].has("speed"): + player_two_speed = data["player_two"]["speed"] as int + + if data.has("obstacle"): + if data["obstacle"].has("length"): + obstacle_length = data["obstacle"]["length"] as int + if data["obstacle"].has("speed"): + obstacle_speed = data["obstacle"]["speed"] as int diff --git a/Battle Pong/Obstacle.gd b/Battle Pong/Obstacle.gd index 4cbc8b5..9e74b9b 100644 --- a/Battle Pong/Obstacle.gd +++ b/Battle Pong/Obstacle.gd @@ -1,11 +1,5 @@ extends StaticBody2D - -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" -var min_speed = 300 -var max_speed = 700 var speed=0 var start_position var playing = false @@ -17,7 +11,7 @@ var bottom_position func _ready(): randomize() #speed = rand_range(min_speed, max_speed) - speed = 500 + speed = $"/root/GameSettings".obstacle_speed obstacle_size =$CollisionShape2D.shape.extents top_position = 0- obstacle_size.y diff --git a/Battle Pong/SettingsWindow.gd b/Battle Pong/SettingsWindow.gd index cfebdf6..9203634 100644 --- a/Battle Pong/SettingsWindow.gd +++ b/Battle Pong/SettingsWindow.gd @@ -43,6 +43,9 @@ func update_gui(): $VBoxContainer/grid_settings/vbox_player_two_settings/grid_player_two_settings/input_player_two_length.text = str($"/root/GameSettings".player_two_length) $VBoxContainer/grid_settings/vbox_player_two_settings/grid_player_two_settings/input_player_two_speed.text = str($"/root/GameSettings".player_two_speed) + $VBoxContainer/grid_settings/vbox_obstacle_settings/grid_obstacle_settings/input_obstacle_length.text = str($"/root/GameSettings".obstacle_length) + $VBoxContainer/grid_settings/vbox_obstacle_settings/grid_obstacle_settings/input_obstacle_speed.text = str($"/root/GameSettings".obstacle_speed) + func _on_input_trainer_position_pressed(): if $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.is_pressed(): @@ -77,6 +80,9 @@ func _on_but_save_pressed(): $"/root/GameSettings".player_two_length = $VBoxContainer/grid_settings/vbox_player_two_settings/grid_player_two_settings/input_player_two_length.text as int $"/root/GameSettings".player_two_speed = $VBoxContainer/grid_settings/vbox_player_two_settings/grid_player_two_settings/input_player_two_speed.text as int + + $"/root/GameSettings".obstacle_length = $VBoxContainer/grid_settings/vbox_obstacle_settings/grid_obstacle_settings/input_obstacle_length.text as int + $"/root/GameSettings".obstacle_speed = $VBoxContainer/grid_settings/vbox_obstacle_settings/grid_obstacle_settings/input_obstacle_speed.text as int $"/root/GameSettings".save_data() diff --git a/Battle Pong/SettingsWindow.tscn b/Battle Pong/SettingsWindow.tscn index 51b5e09..55cd2bd 100644 --- a/Battle Pong/SettingsWindow.tscn +++ b/Battle Pong/SettingsWindow.tscn @@ -28,17 +28,17 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -margin_left = -141.5 -margin_top = -181.0 -margin_right = 141.5 -margin_bottom = 181.0 +margin_left = -173.5 +margin_top = -206.0 +margin_right = 173.5 +margin_bottom = 206.0 __meta__ = { "_edit_use_anchors_": false } [node name="grid_settings" type="GridContainer" parent="VBoxContainer"] margin_right = 347.0 -margin_bottom = 278.0 +margin_bottom = 332.0 columns = 3 __meta__ = { "_edit_use_anchors_": false @@ -421,27 +421,90 @@ margin_left = 43.0 margin_right = 101.0 margin_bottom = 24.0 -[node name="VSeparator5" type="HSeparator" parent="VBoxContainer"] +[node name="HSeparator8" type="HSeparator" parent="VBoxContainer/grid_settings"] +margin_top = 282.0 +margin_right = 163.0 +margin_bottom = 286.0 + +[node name="VSeparator5" type="HSeparator" parent="VBoxContainer/grid_settings"] +margin_left = 167.0 +margin_top = 282.0 +margin_right = 171.0 +margin_bottom = 286.0 + +[node name="HSeparator3" type="HSeparator" parent="VBoxContainer/grid_settings"] +margin_left = 175.0 margin_top = 282.0 margin_right = 347.0 margin_bottom = 286.0 -[node name="but_save" type="Button" parent="VBoxContainer"] +[node name="vbox_obstacle_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"] margin_top = 290.0 +margin_right = 163.0 +margin_bottom = 332.0 + +[node name="lbl_title_obstacle_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_obstacle_settings"] +margin_right = 163.0 +margin_bottom = 14.0 +text = "Obstacle:" + +[node name="grid_obstacle_settings" type="GridContainer" parent="VBoxContainer/grid_settings/vbox_obstacle_settings"] +margin_top = 18.0 +margin_right = 163.0 +margin_bottom = 42.0 +columns = 2 + +[node name="lbl_obstacle_length" type="Label" parent="VBoxContainer/grid_settings/vbox_obstacle_settings/grid_obstacle_settings"] +visible = false +margin_right = 58.0 +margin_bottom = 14.0 +text = "Length" + +[node name="input_obstacle_length" type="LineEdit" parent="VBoxContainer/grid_settings/vbox_obstacle_settings/grid_obstacle_settings"] +visible = false +margin_left = 47.0 +margin_right = 105.0 +margin_bottom = 24.0 +editable = false + +[node name="lbl_obstacle_speed" type="Label" parent="VBoxContainer/grid_settings/vbox_obstacle_settings/grid_obstacle_settings"] +margin_top = 5.0 +margin_right = 39.0 +margin_bottom = 19.0 +text = "Speed" + +[node name="input_obstacle_speed" type="LineEdit" parent="VBoxContainer/grid_settings/vbox_obstacle_settings/grid_obstacle_settings"] +margin_left = 43.0 +margin_right = 101.0 +margin_bottom = 24.0 + +[node name="VSeparator6" type="VSeparator" parent="VBoxContainer/grid_settings"] +margin_left = 167.0 +margin_top = 290.0 +margin_right = 171.0 +margin_bottom = 332.0 + +[node name="VSeparator7" type="HSeparator" parent="VBoxContainer"] +margin_top = 336.0 +margin_right = 347.0 +margin_bottom = 340.0 + +[node name="but_save" type="Button" parent="VBoxContainer"] +margin_top = 344.0 margin_right = 347.0 -margin_bottom = 310.0 +margin_bottom = 364.0 text = "Save" [node name="but_cancel" type="Button" parent="VBoxContainer"] -margin_top = 314.0 +margin_top = 368.0 margin_right = 347.0 -margin_bottom = 334.0 +margin_bottom = 388.0 text = "Cancel" [node name="but_reset" type="Button" parent="VBoxContainer"] -margin_top = 338.0 +margin_top = 392.0 margin_right = 347.0 -margin_bottom = 358.0 +margin_bottom = 412.0 text = "Reset" [connection signal="pressed" from="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position" to="." method="_on_input_trainer_position_pressed"] [connection signal="pressed" from="VBoxContainer/but_save" to="." method="_on_but_save_pressed"] -- GitLab