Skip to content
Snippets Groups Projects
Commit 4569db31 authored by Frederic Aust's avatar Frederic Aust
Browse files

TrainingsMode Mensch vs Agent implementiert, Hauptmenue und SettinsWindow fertig gestellt

GameSettings:
* Der Trainingsmodus kann in Realzeit durchgeführt werden oder asap
* Trainerposition wurde entfert, da der Python Code angibt wer trainiert
* Es koennen nun zwei unterschiedliche Agenten gleichzeitig trainiert werden

Main:
* Der WebsocketClient wurde wieder entfertn, da sich der trainierende Agent wie ein normaler Agent verhaelt
* Der Trainingsmodus fuer einen Agenten wird durch die Action training aktiviert (pro Step)
* Der Spielfluss kann fuer die Dauer der Steptime unterbrochen werden, um das Spiel zu verlangsamen und an die reale Zeit anzupassen (keine Auswirkung auf die Agenten)
* Wird die Action training (player_one_training / player_two_training) empfangen wird der aktuelle Input fuer den Spieler abgefragt
  * Ist Hoch gedrueckt
  * oder ist Runter gedrueckt
  * sonst tue nichts
* Der Timer Playtimer wurde entfernt, da dieser durch einen einzeiler Timer ersetzt wurde

MainMenu:
* Die Tainerbutton wechseln jetzt die Scene

SettingsWindow:
* Die Einstellungen IP, Port und Position fuer den Trainer wurden deaktiviert, da vorerst nicht benoetigt
* Einstellung unter Trainer hinzugefuegt, mit der die Spielzeit pro Step an die Realzeit angepasst wird oder eben so schnell wie die Agenten es erlauben
parent f9172b20
Branches
Tags
1 merge request!5Implemantation main menu
...@@ -16,6 +16,7 @@ var image_width ...@@ -16,6 +16,7 @@ var image_width
var trainer_ip var trainer_ip
var trainer_port var trainer_port
var trainer_position var trainer_position
var trainer_realtime_enabled
var ball_height var ball_height
var ball_width var ball_width
...@@ -45,7 +46,8 @@ var default_data = { ...@@ -45,7 +46,8 @@ var default_data = {
"trainer":{ "trainer":{
"ip":"127.0.0.1", "ip":"127.0.0.1",
"port":"9080", "port":"9080",
"position":"Right" "position":"Right",
"realtime_enabled":true
}, },
"ball":{ "ball":{
"height":30, "height":30,
...@@ -99,7 +101,8 @@ func save_data(): ...@@ -99,7 +101,8 @@ func save_data():
"trainer":{ "trainer":{
"ip":$"/root/GameSettings".trainer_ip, "ip":$"/root/GameSettings".trainer_ip,
"port":$"/root/GameSettings".trainer_port, "port":$"/root/GameSettings".trainer_port,
"position":$"/root/GameSettings".trainer_position "position":$"/root/GameSettings".trainer_position,
"realtime_enabled":$"/root/GameSettings".trainer_realtime_enabled
}, },
"ball":{ "ball":{
"height":$"/root/GameSettings".ball_height, "height":$"/root/GameSettings".ball_height,
...@@ -139,7 +142,7 @@ func update_settings(): ...@@ -139,7 +142,7 @@ func update_settings():
trainer_ip = data["trainer"]["ip"] trainer_ip = data["trainer"]["ip"]
trainer_port = data["trainer"]["port"] as int trainer_port = data["trainer"]["port"] as int
trainer_position = data["trainer"]["position"] trainer_position = data["trainer"]["position"]
trainer_realtime_enabled = data["trainer"]["realtime_enabled"] as bool
ball_height =data["ball"]["height"] as int ball_height =data["ball"]["height"] as int
ball_width = data["ball"]["width"] as int ball_width = data["ball"]["width"] as int
......
...@@ -7,10 +7,15 @@ var _server = WebSocketServer.new() ...@@ -7,10 +7,15 @@ var _server = WebSocketServer.new()
var player_one_client_id var player_one_client_id
var player_two_client_id var player_two_client_id
var action_player_one = InputEventAction.new() var action_player_one = InputEventAction.new()
var next_step_player_one = false var next_step_player_one = false
var action_trainer_one = ""
var action_player_two = InputEventAction.new() var action_player_two = InputEventAction.new()
var next_step_player_two = false var next_step_player_two = false
var action_trainer_two = ""
var Ball = preload("Ball.tscn") var Ball = preload("Ball.tscn")
var ball = Ball.instance() var ball = Ball.instance()
...@@ -56,8 +61,8 @@ func _ready(): ...@@ -56,8 +61,8 @@ func _ready():
# in a loop for each connected peer. # in a loop for each connected peer.
_server.connect("data_received", self, "_on_data") _server.connect("data_received", self, "_on_data")
# Start listening on the given port. # Start listening on the given port.
var err = _server.listen(PORT) var server_err = _server.listen(PORT)
if err != OK: if server_err != OK:
print("Unable to start server") print("Unable to start server")
set_process(false) set_process(false)
...@@ -172,8 +177,6 @@ func _on_PlayerOne_hit(): ...@@ -172,8 +177,6 @@ func _on_PlayerOne_hit():
pass # Replace with function body. pass # Replace with function body.
func _connected(id, proto): func _connected(id, proto):
# This is called when a new peer connects, "id" will be the assigned peer id, # This is called when a new peer connects, "id" will be the assigned peer id,
# "proto" will be the selected WebSocket sub-protocol (which is optional) # "proto" will be the selected WebSocket sub-protocol (which is optional)
...@@ -195,10 +198,6 @@ func _disconnected(id, was_clean = false): ...@@ -195,10 +198,6 @@ func _disconnected(id, was_clean = false):
#print("Player One with Client %d disconnected, clean: %s" % [id, str(was_clean)]) #print("Player One with Client %d disconnected, clean: %s" % [id, str(was_clean)])
if(player_two_client_id == id): if(player_two_client_id == id):
player_two_client_id = null player_two_client_id = null
#print("Player Two with Client %d disconnected, clean: %s" % [id, str(was_clean)])
#else:
#print("Client %d disconnected, clean: %s" % [id, str(was_clean)])
func _on_data(id): func _on_data(id):
...@@ -208,7 +207,7 @@ func _on_data(id): ...@@ -208,7 +207,7 @@ func _on_data(id):
#print("Got data from client %d: %s ... echoing" % [id, pkt.get_string_from_utf8()]) #print("Got data from client %d: %s ... echoing" % [id, pkt.get_string_from_utf8()])
var data = (JSON.parse(pkt.get_string_from_utf8())).get_result() var data = (JSON.parse(pkt.get_string_from_utf8())).get_result()
#print(data) print(data)
if(data): if(data):
for i in data: for i in data:
#print(i) #print(i)
...@@ -255,13 +254,32 @@ func _on_data(id): ...@@ -255,13 +254,32 @@ func _on_data(id):
_server.get_peer(id).put_packet(return_value) _server.get_peer(id).put_packet(return_value)
pass pass
if($"/root/GameSettings".trainings_mode_enabled): if($"/root/GameSettings".trainings_mode_enabled):
if(($"/root/GameSettings".trainer_position == "Left" and next_step_player_two) or ($"/root/GameSettings".trainer_position == "Right" and next_step_player_one)): if(i=="player_one_training"):
unpause() next_step_player_one = true
$PlayerOne.run(game_playtime_per_step) # is w pressed => up
$PlayerTwo.run(game_playtime_per_step) #elif is s pressed => down
ball.run(game_playtime_per_step) # else => nothing
timeout() if(Input.is_action_pressed("player_one_up")):
elif(next_step_player_one and next_step_player_two): action_trainer_one = "up"
elif Input.is_action_pressed("player_one_down"):
action_trainer_one = "down"
else:
action_trainer_one = "nothing"
if(i=="player_two_training"):
next_step_player_two = true
# is arrow_up pressed => up
#elif is arrow_down pressed => down
# else => nothing
if(Input.is_action_pressed("player_two_up")):
action_trainer_two = "up"
elif Input.is_action_pressed("player_two_down"):
action_trainer_two = "down"
else:
action_trainer_two = "nothing"
if(next_step_player_one and next_step_player_two):
if($"/root/GameSettings".trainer_realtime_enabled):
yield(get_tree().create_timer(game_playtime_per_step), "timeout")
unpause() unpause()
$PlayerOne.run(game_playtime_per_step) $PlayerOne.run(game_playtime_per_step)
$PlayerTwo.run(game_playtime_per_step) $PlayerTwo.run(game_playtime_per_step)
...@@ -270,7 +288,7 @@ func _on_data(id): ...@@ -270,7 +288,7 @@ func _on_data(id):
func get_observarion(): func get_observarion():
return {"PlayerOne":{"X":$PlayerOne.position.x,"Y":$PlayerOne.position.y}, "PlayerTwo":{"X":$PlayerTwo.position.x,"Y":$PlayerTwo.position.y}, "ball":ball.get_observation()} return {"PlayerOne":{"X":$PlayerOne.position.x,"Y":$PlayerOne.position.y, "TrainingAction":action_trainer_one}, "PlayerTwo":{"X":$PlayerTwo.position.x,"Y":$PlayerTwo.position.y, "TrainingAction":action_trainer_two}, "ball":ball.get_observation()}
func get_return_value_as_utf8_JSON(): func get_return_value_as_utf8_JSON():
var observation = get_observarion() var observation = get_observarion()
...@@ -330,6 +348,7 @@ func timeout(): ...@@ -330,6 +348,7 @@ func timeout():
if(player_two_client_id): if(player_two_client_id):
_server.get_peer(player_two_client_id).put_packet(return_value) _server.get_peer(player_two_client_id).put_packet(return_value)
func pause(): func pause():
#print("pause") #print("pause")
ball.set_pause(true) ball.set_pause(true)
...@@ -341,9 +360,3 @@ func unpause(): ...@@ -341,9 +360,3 @@ func unpause():
ball.set_pause(false) ball.set_pause(false)
$PlayerOne.set_pause(false) $PlayerOne.set_pause(false)
$PlayerTwo.set_pause(false) $PlayerTwo.set_pause(false)
# Wenn Trainerfunktion aktiv ist wird für einen menschlichen Spieler der Playtimer gestartet und die Eingabe
func _on_Playtimer_timeout():
pass # Replace with function body.
...@@ -27,8 +27,13 @@ __meta__ = { ...@@ -27,8 +27,13 @@ __meta__ = {
} }
[node name="DisplayMessage" type="Label" parent="."] [node name="DisplayMessage" type="Label" parent="."]
margin_right = 40.0 anchor_left = 0.5
margin_bottom = 14.0 anchor_right = 0.5
margin_left = 388.214
margin_top = 43.0813
margin_right = 638.214
margin_bottom = 73.0813
align = 1
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
...@@ -79,9 +84,5 @@ __meta__ = { ...@@ -79,9 +84,5 @@ __meta__ = {
[node name="WallBottom" parent="." instance=ExtResource( 3 )] [node name="WallBottom" parent="." instance=ExtResource( 3 )]
position = Vector2( 0, 600 ) position = Vector2( 0, 600 )
[node name="Playtimer" type="Timer" parent="."]
one_shot = true
[connection signal="hit" from="PlayerTwo" to="." method="_on_PlayerTwo_hit"] [connection signal="hit" from="PlayerTwo" to="." method="_on_PlayerTwo_hit"]
[connection signal="hit" from="PlayerOne" to="." method="_on_PlayerOne_hit"] [connection signal="hit" from="PlayerOne" to="." method="_on_PlayerOne_hit"]
[connection signal="timeout" from="Playtimer" to="." method="_on_Playtimer_timeout"]
...@@ -52,6 +52,7 @@ func _on_but_trainer_with_images_pressed(): ...@@ -52,6 +52,7 @@ func _on_but_trainer_with_images_pressed():
$"/root/GameSettings".rendering_enabled = true $"/root/GameSettings".rendering_enabled = true
$"/root/GameSettings".learn_with_images = true $"/root/GameSettings".learn_with_images = true
$"/root/GameSettings".trainings_mode_enabled = true $"/root/GameSettings".trainings_mode_enabled = true
get_tree().change_scene("res://Main.tscn")
...@@ -59,6 +60,7 @@ func _on_but_trainer_with_position_pressed(): ...@@ -59,6 +60,7 @@ func _on_but_trainer_with_position_pressed():
$"/root/GameSettings".rendering_enabled = true $"/root/GameSettings".rendering_enabled = true
$"/root/GameSettings".learn_with_images = false $"/root/GameSettings".learn_with_images = false
$"/root/GameSettings".trainings_mode_enabled = true $"/root/GameSettings".trainings_mode_enabled = true
get_tree().change_scene("res://Main.tscn")
......
...@@ -21,15 +21,15 @@ func update_gui(): ...@@ -21,15 +21,15 @@ func update_gui():
$VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_height.text = str($"/root/GameSettings".image_heigth) $VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_height.text = str($"/root/GameSettings".image_heigth)
$VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_width.text = str($"/root/GameSettings".image_width) $VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_width.text = str($"/root/GameSettings".image_width)
$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_ip.text = $"/root/GameSettings".trainer_ip #$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_ip.text = $"/root/GameSettings".trainer_ip
$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_port.text = str($"/root/GameSettings".trainer_port) #$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_port.text = str($"/root/GameSettings".trainer_port)
if $"/root/GameSettings".trainer_position =="Left": #if $"/root/GameSettings".trainer_position =="Left":
$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.pressed = false # $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.pressed = false
elif $"/root/GameSettings".trainer_position =="Right": #elif $"/root/GameSettings".trainer_position =="Right":
$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.pressed = true # $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.pressed = true
$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.text = $"/root/GameSettings".trainer_position
#$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.text = $"/root/GameSettings".trainer_position
$VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_realtime_enabled.pressed = $"/root/GameSettings".trainer_realtime_enabled
$VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_height.text = str($"/root/GameSettings".ball_height) $VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_height.text = str($"/root/GameSettings".ball_height)
$VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_width.text = str($"/root/GameSettings".ball_width) $VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_width.text = str($"/root/GameSettings".ball_width)
...@@ -61,9 +61,10 @@ func _on_but_save_pressed(): ...@@ -61,9 +61,10 @@ func _on_but_save_pressed():
$"/root/GameSettings".image_heigth = $VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_height.text as int $"/root/GameSettings".image_heigth = $VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_height.text as int
$"/root/GameSettings".image_width = $VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_width.text as int $"/root/GameSettings".image_width = $VBoxContainer/grid_settings/vbox_image_settings/grid_image_settings/input_image_width.text as int
$"/root/GameSettings".trainer_ip = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_ip.text #$"/root/GameSettings".trainer_ip = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_ip.text
$"/root/GameSettings".trainer_port = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_port.text as int #$"/root/GameSettings".trainer_port = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_port.text as int
$"/root/GameSettings".trainer_position = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.text $"/root/GameSettings".trainer_position = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position.text
$"/root/GameSettings".trainer_realtime_enabled = $VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_realtime_enabled.pressed
$"/root/GameSettings".ball_height = $VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_height.text as int $"/root/GameSettings".ball_height = $VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_height.text as int
$"/root/GameSettings".ball_width = $VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_width.text as int $"/root/GameSettings".ball_width = $VBoxContainer/grid_settings/vbox_ball_settings/grid_ball_settings/input_ball_width.text as int
......
...@@ -36,7 +36,7 @@ __meta__ = { ...@@ -36,7 +36,7 @@ __meta__ = {
} }
[node name="grid_settings" type="GridContainer" parent="VBoxContainer"] [node name="grid_settings" type="GridContainer" parent="VBoxContainer"]
margin_right = 344.0 margin_right = 347.0
margin_bottom = 353.0 margin_bottom = 353.0
columns = 3 columns = 3
__meta__ = { __meta__ = {
...@@ -44,17 +44,17 @@ __meta__ = { ...@@ -44,17 +44,17 @@ __meta__ = {
} }
[node name="vbox_game_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"] [node name="vbox_game_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
margin_right = 160.0 margin_right = 163.0
margin_bottom = 105.0 margin_bottom = 105.0
[node name="lbl_title_game_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_game_settings"] [node name="lbl_title_game_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_game_settings"]
margin_right = 160.0 margin_right = 163.0
margin_bottom = 14.0 margin_bottom = 14.0
text = "Game:" text = "Game:"
[node name="grid_game_settings" type="GridContainer" parent="VBoxContainer/grid_settings/vbox_game_settings"] [node name="grid_game_settings" type="GridContainer" parent="VBoxContainer/grid_settings/vbox_game_settings"]
margin_top = 18.0 margin_top = 18.0
margin_right = 160.0 margin_right = 163.0
margin_bottom = 105.0 margin_bottom = 105.0
columns = 2 columns = 2
...@@ -95,13 +95,13 @@ margin_right = 151.0 ...@@ -95,13 +95,13 @@ margin_right = 151.0
margin_bottom = 87.0 margin_bottom = 87.0
[node name="VSeparator" type="VSeparator" parent="VBoxContainer/grid_settings"] [node name="VSeparator" type="VSeparator" parent="VBoxContainer/grid_settings"]
margin_left = 164.0 margin_left = 167.0
margin_right = 168.0 margin_right = 171.0
margin_bottom = 105.0 margin_bottom = 105.0
[node name="vbox_image_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"] [node name="vbox_image_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
margin_left = 172.0 margin_left = 175.0
margin_right = 344.0 margin_right = 347.0
margin_bottom = 105.0 margin_bottom = 105.0
[node name="lbl_title_image_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_image_settings"] [node name="lbl_title_image_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_image_settings"]
...@@ -156,83 +156,95 @@ margin_bottom = 80.0 ...@@ -156,83 +156,95 @@ margin_bottom = 80.0
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/grid_settings"] [node name="HSeparator" type="HSeparator" parent="VBoxContainer/grid_settings"]
margin_top = 109.0 margin_top = 109.0
margin_right = 160.0 margin_right = 163.0
margin_bottom = 113.0 margin_bottom = 113.0
[node name="HSeparator6" type="HSeparator" parent="VBoxContainer/grid_settings"] [node name="HSeparator6" type="HSeparator" parent="VBoxContainer/grid_settings"]
margin_left = 164.0 margin_left = 167.0
margin_top = 109.0 margin_top = 109.0
margin_right = 168.0 margin_right = 171.0
margin_bottom = 113.0 margin_bottom = 113.0
[node name="HSeparator5" type="HSeparator" parent="VBoxContainer/grid_settings"] [node name="HSeparator5" type="HSeparator" parent="VBoxContainer/grid_settings"]
margin_left = 172.0 margin_left = 175.0
margin_top = 109.0 margin_top = 109.0
margin_right = 344.0 margin_right = 347.0
margin_bottom = 113.0 margin_bottom = 113.0
[node name="vbox_trainer_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"] [node name="vbox_trainer_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
margin_top = 117.0 margin_top = 117.0
margin_right = 160.0 margin_right = 163.0
margin_bottom = 271.0 margin_bottom = 271.0
[node name="lbl_title_trainer_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings"] [node name="lbl_title_trainer_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings"]
margin_right = 160.0 margin_right = 163.0
margin_bottom = 14.0 margin_bottom = 14.0
text = "Trainer:" text = "Trainer:"
[node name="grid_trainer_settings" type="GridContainer" parent="VBoxContainer/grid_settings/vbox_trainer_settings"] [node name="grid_trainer_settings" type="GridContainer" parent="VBoxContainer/grid_settings/vbox_trainer_settings"]
margin_top = 18.0 margin_top = 18.0
margin_right = 160.0 margin_right = 163.0
margin_bottom = 114.0 margin_bottom = 58.0
columns = 2 columns = 2
[node name="lbl_trainer_ip" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"] [node name="lbl_trainer_ip" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
margin_top = 5.0 visible = false
margin_right = 52.0 margin_right = 104.0
margin_bottom = 19.0 margin_bottom = 14.0
text = "IP" text = "IP"
[node name="input_trainer_ip" type="LineEdit" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"] [node name="input_trainer_ip" type="LineEdit" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
visible = false
margin_left = 56.0 margin_left = 56.0
margin_right = 160.0 margin_right = 160.0
margin_bottom = 24.0 margin_bottom = 24.0
[node name="lbl_trainer_port" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"] [node name="lbl_trainer_port" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
margin_top = 33.0 visible = false
margin_top = 5.0
margin_right = 52.0 margin_right = 52.0
margin_bottom = 47.0 margin_bottom = 19.0
text = "Port" text = "Port"
[node name="input_trainer_port" type="LineEdit" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"] [node name="input_trainer_port" type="LineEdit" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
margin_left = 56.0 visible = false
margin_top = 28.0 margin_right = 104.0
margin_right = 160.0 margin_bottom = 24.0
margin_bottom = 52.0
[node name="lbl_trainer_position" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"] [node name="lbl_trainer_position" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
margin_top = 69.0 visible = false
margin_right = 52.0 margin_top = 13.0
margin_bottom = 83.0 margin_right = 83.0
margin_bottom = 27.0
text = "Position" text = "Position"
[node name="input_trainer_position" type="CheckButton" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"] [node name="input_trainer_position" type="CheckButton" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
margin_left = 56.0 visible = false
margin_top = 56.0 margin_right = 104.0
margin_right = 160.0 margin_bottom = 40.0
margin_bottom = 96.0
text = "Left" text = "Left"
[node name="lbl_trainer_realtime_enabled" type="Label" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
margin_top = 13.0
margin_right = 83.0
margin_bottom = 27.0
text = "Use realtime"
[node name="input_trainer_realtime_enabled" type="CheckButton" parent="VBoxContainer/grid_settings/vbox_trainer_settings/grid_trainer_settings"]
margin_left = 87.0
margin_right = 163.0
margin_bottom = 40.0
[node name="VSeparator2" type="VSeparator" parent="VBoxContainer/grid_settings"] [node name="VSeparator2" type="VSeparator" parent="VBoxContainer/grid_settings"]
margin_left = 164.0 margin_left = 167.0
margin_top = 117.0 margin_top = 117.0
margin_right = 168.0 margin_right = 171.0
margin_bottom = 271.0 margin_bottom = 271.0
[node name="vbox_ball_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"] [node name="vbox_ball_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
margin_left = 172.0 margin_left = 175.0
margin_top = 117.0 margin_top = 117.0
margin_right = 344.0 margin_right = 347.0
margin_bottom = 271.0 margin_bottom = 271.0
[node name="lbl_title_ball_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_ball_settings"] [node name="lbl_title_ball_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_ball_settings"]
...@@ -307,34 +319,34 @@ margin_bottom = 136.0 ...@@ -307,34 +319,34 @@ margin_bottom = 136.0
[node name="HSeparator7" type="HSeparator" parent="VBoxContainer/grid_settings"] [node name="HSeparator7" type="HSeparator" parent="VBoxContainer/grid_settings"]
margin_top = 275.0 margin_top = 275.0
margin_right = 160.0 margin_right = 163.0
margin_bottom = 279.0 margin_bottom = 279.0
[node name="VSeparator3" type="HSeparator" parent="VBoxContainer/grid_settings"] [node name="VSeparator3" type="HSeparator" parent="VBoxContainer/grid_settings"]
margin_left = 164.0 margin_left = 167.0
margin_top = 275.0 margin_top = 275.0
margin_right = 168.0 margin_right = 171.0
margin_bottom = 279.0 margin_bottom = 279.0
[node name="HSeparator2" type="HSeparator" parent="VBoxContainer/grid_settings"] [node name="HSeparator2" type="HSeparator" parent="VBoxContainer/grid_settings"]
margin_left = 172.0 margin_left = 175.0
margin_top = 275.0 margin_top = 275.0
margin_right = 344.0 margin_right = 347.0
margin_bottom = 279.0 margin_bottom = 279.0
[node name="vbox_player_one_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"] [node name="vbox_player_one_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
margin_top = 283.0 margin_top = 283.0
margin_right = 160.0 margin_right = 163.0
margin_bottom = 353.0 margin_bottom = 353.0
[node name="lbl_title_player_one_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_player_one_settings"] [node name="lbl_title_player_one_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_player_one_settings"]
margin_right = 160.0 margin_right = 163.0
margin_bottom = 14.0 margin_bottom = 14.0
text = "Player 1:" text = "Player 1:"
[node name="grid_player_one_settings" type="GridContainer" parent="VBoxContainer/grid_settings/vbox_player_one_settings"] [node name="grid_player_one_settings" type="GridContainer" parent="VBoxContainer/grid_settings/vbox_player_one_settings"]
margin_top = 18.0 margin_top = 18.0
margin_right = 160.0 margin_right = 163.0
margin_bottom = 70.0 margin_bottom = 70.0
columns = 2 columns = 2
...@@ -362,15 +374,15 @@ margin_right = 105.0 ...@@ -362,15 +374,15 @@ margin_right = 105.0
margin_bottom = 52.0 margin_bottom = 52.0
[node name="VSeparator4" type="VSeparator" parent="VBoxContainer/grid_settings"] [node name="VSeparator4" type="VSeparator" parent="VBoxContainer/grid_settings"]
margin_left = 164.0 margin_left = 167.0
margin_top = 283.0 margin_top = 283.0
margin_right = 168.0 margin_right = 171.0
margin_bottom = 353.0 margin_bottom = 353.0
[node name="vbox_player_two_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"] [node name="vbox_player_two_settings" type="VBoxContainer" parent="VBoxContainer/grid_settings"]
margin_left = 172.0 margin_left = 175.0
margin_top = 283.0 margin_top = 283.0
margin_right = 344.0 margin_right = 347.0
margin_bottom = 353.0 margin_bottom = 353.0
[node name="lbl_title_player_two_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_player_two_settings"] [node name="lbl_title_player_two_settings" type="Label" parent="VBoxContainer/grid_settings/vbox_player_two_settings"]
...@@ -409,24 +421,24 @@ margin_bottom = 52.0 ...@@ -409,24 +421,24 @@ margin_bottom = 52.0
[node name="VSeparator5" type="HSeparator" parent="VBoxContainer"] [node name="VSeparator5" type="HSeparator" parent="VBoxContainer"]
margin_top = 357.0 margin_top = 357.0
margin_right = 344.0 margin_right = 347.0
margin_bottom = 361.0 margin_bottom = 361.0
[node name="but_save" type="Button" parent="VBoxContainer"] [node name="but_save" type="Button" parent="VBoxContainer"]
margin_top = 365.0 margin_top = 365.0
margin_right = 344.0 margin_right = 347.0
margin_bottom = 385.0 margin_bottom = 385.0
text = "Save" text = "Save"
[node name="but_cancel" type="Button" parent="VBoxContainer"] [node name="but_cancel" type="Button" parent="VBoxContainer"]
margin_top = 389.0 margin_top = 389.0
margin_right = 344.0 margin_right = 347.0
margin_bottom = 409.0 margin_bottom = 409.0
text = "Cancel" text = "Cancel"
[node name="but_reset" type="Button" parent="VBoxContainer"] [node name="but_reset" type="Button" parent="VBoxContainer"]
margin_top = 413.0 margin_top = 413.0
margin_right = 344.0 margin_right = 347.0
margin_bottom = 433.0 margin_bottom = 433.0
text = "Reset" 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/grid_settings/vbox_trainer_settings/grid_trainer_settings/input_trainer_position" to="." method="_on_input_trainer_position_pressed"]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment