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
No related tags found
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