From 257346db5a1c2f9665810bfc4f88839cb2286694 Mon Sep 17 00:00:00 2001 From: Luna Date: Sun, 20 May 2018 16:52:34 -0400 Subject: [PATCH] Add singleplayer functionality; fix -hero arg --- scenes/menu.tscn | 2 +- scenes/singleplayer_lobby.tscn | 82 ++++++++++++++++++++++++++++++++++++++++++ scripts/hero_select.gd | 2 +- scripts/lobby.gd | 7 +++- scripts/menu.gd | 18 +++------- 5 files changed, 94 insertions(+), 17 deletions(-) create mode 100644 scenes/singleplayer_lobby.tscn diff --git a/scenes/menu.tscn b/scenes/menu.tscn index fb0d0f4..830d17b 100644 --- a/scenes/menu.tscn +++ b/scenes/menu.tscn @@ -135,7 +135,7 @@ toggle_mode = false enabled_focus_mode = 2 shortcut = null group = null -text = "Singleplayer" +text = "Practice Range" flat = false align = 1 diff --git a/scenes/singleplayer_lobby.tscn b/scenes/singleplayer_lobby.tscn new file mode 100644 index 0000000..7cc9ac1 --- /dev/null +++ b/scenes/singleplayer_lobby.tscn @@ -0,0 +1,82 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://scenes/lobby.tscn" type="PackedScene" id=1] +[ext_resource path="res://assets/DejaVuSansMono.ttf" type="DynamicFontData" id=2] + +[sub_resource type="DynamicFont" id=1] + +size = 40 +use_mipmaps = false +use_filter = false +font_data = ExtResource( 2 ) + +[node name="Lobby" instance=ExtResource( 1 )] + +[node name="Label" type="Label" parent="." index="0"] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_left = 602.0 +margin_top = 276.0 +margin_right = 938.0 +margin_bottom = 324.0 +rect_pivot_offset = Vector2( 0, 0 ) +mouse_filter = 2 +mouse_default_cursor_shape = 0 +size_flags_horizontal = 1 +size_flags_vertical = 4 +custom_fonts/font = SubResource( 1 ) +text = "Practice Range" +percent_visible = 1.0 +lines_skipped = 0 +max_lines_visible = -1 + +[node name="HeroSelect" parent="." index="1"] + +margin_top = 62.0 +margin_bottom = 62.0 + +[node name="Username" parent="." index="2"] + +visible = false +margin_top = 308.0 +margin_bottom = 341.0 + +[node name="Spectating" parent="." index="3"] + +visible = false + +[node name="LevelSelect" parent="." index="4"] + +margin_top = 401.0 +margin_bottom = 442.0 +items = [ "Platform map", null, false, 0, null, "City-like thing", null, false, 1, null, "Slide", null, false, 2, null ] + +[node name="TeamLabel" parent="." index="5"] + +visible = false + +[node name="Team" parent="." index="6"] + +visible = false + +[node name="PlayerList" parent="." index="7"] + +visible = false + +[node name="StartGame" parent="." index="8"] + +margin_left = 41.0 +margin_top = 486.0 +margin_right = 163.0 +margin_bottom = 526.0 +text = "Play!" + +[node name="VSeparator" parent="." index="9"] + +visible = false + + +[editable path="HeroSelect"] diff --git a/scripts/hero_select.gd b/scripts/hero_select.gd index eeb433a..38b2726 100644 --- a/scripts/hero_select.gd +++ b/scripts/hero_select.gd @@ -25,11 +25,11 @@ func _ready(): connect("item_selected", self, "set_hero") func set_hero(hero): + select(hero) networking.set_info("hero", hero) func random_hero(): var hero = randi() % hero_names.size() - select(hero) set_hero(hero) return hero diff --git a/scripts/lobby.gd b/scripts/lobby.gd index 9dd6aae..b443e86 100644 --- a/scripts/lobby.gd +++ b/scripts/lobby.gd @@ -19,6 +19,7 @@ func _ready(): var level = util.args.get_value("-level") if level == "r": level = randi() % level_select.get_item_count() + level = int(level) _set_level(level) level_select.show() @@ -34,7 +35,11 @@ func _ready(): func _connected(): _send_name() - hero_select.random_hero() + if util.args.get_value("-hero") == "r": + hero_select.random_hero() + else: + print(util.args.get_value("-hero")) + hero_select.set_hero(int(util.args.get_value("-hero"))) if util.args.get_value("-start-game"): networking.start_game() diff --git a/scripts/menu.gd b/scripts/menu.gd index c004be3..55cab18 100644 --- a/scripts/menu.gd +++ b/scripts/menu.gd @@ -19,7 +19,8 @@ func _custom_game(): get_tree().change_scene("res://scenes/custom_game.tscn") func _singleplayer(): - print("still refactoring singleplayer") + networking.start_server() + get_tree().change_scene("res://scenes/singleplayer_lobby.tscn") # Command line @@ -33,17 +34,6 @@ func _option_sel(button_name, option): func _arg_actions(): var o = util.args - # if o.get_value("-silent"): - # server_playing = false - # if o.get_value("-hero"): - # var hero = o.get_value("-hero") - # _option_sel("PlayerSettings/HeroSelect", hero) - # # For some reason, calling _option_sel doesn't trigger the actual selection - # select_hero(get_node("PlayerSettings/HeroSelect").get_selected_id()) - # if o.get_value("-level"): - # _option_sel("CustomGame/LevelSelect", o.get_value("-level")) - # if o.get_value("-port"): - # port = o.get_value("-port") # if o.get_value("-ai"): # my_info.is_ai = true # if not o.get_value("-no-record") and not o.get_value("-ai"): @@ -56,8 +46,8 @@ func _arg_actions(): if o.get_value("-client"): networking.start_client() get_tree().change_scene("res://scenes/lobby.tscn") - # if o.get_value("-singleplayer"): - # networking.call_deferred("start_singleplayer") + if o.get_value("-singleplayer"): + _singleplayer() if o.get_value('-h'): o.print_help() quit()