A team game with an emphasis on movement (with no shooting), inspired by Overwatch and Zineth
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.7 KiB

[WIP] Split up lobby -> menu, lobby, custom_game lobby.gd had gotten big, bloated, ugly, and hard to read. It needed a refactor. The first thing I did is split up the *GUI* into the logical steps it should be. So the new flow is: - Start the game - Click "Quick Play" - Matchmaking begins on my dedicated server - Start the game - Click "Custom Game" - *Only now* am I presented with server / client options - Start the game - Click "Singleplayer" - Singleplayer NOW, and only now, and NO MATTER WHAT PATH I TAKE, I am taken to the *lobby*, which now is where I: - Choose my name - Choose hero - See list of players - Get my team assigned - Anything else that I might like to put in The point here is that this has *nothing* to do with handshaking / matchmaking / etc! This is just part of the game! At this point I have *already been connected* to the server. I've already been aquainted with my other players. The game has begun. I put the things that don't belong in any of these flows in networking.gd, a sort of model-view sorta thing. All of these flows use some sort of networking thing like `init_server` that tbh should be *completely* abstracted from the UI. It's totally a WIP!!! Above is the IDEA, but below is what I've actually *done*: - Made the scenes, made a passable UI for each one that at least indicates ~what they'll do - Made the corresponding scripts, and split up the lobby script into ABOUT where I think it'll end up, but no promises It still errors all over the place, and it's nowhere near properly organized. PLUS, I'd also like to rewrite a lot of the code / rename things as part of the initial refactor goal of making me able to actually think about networking.
7 years ago
  1. extends Control
  2. func _ready():
  3. randomize()
  4. _gui_setup()
  5. # GUI
  6. func _gui_setup():
  7. get_node("Center/Play").connect("pressed", self, "_find_game")
  8. get_node("Center/CustomGame").connect("pressed", self, "_custom_game")
  9. get_node("Center/Singleplayer").connect("pressed", self, "_singleplayer")
  10. func _find_game():
  11. print("still refactoring matchmaker")
  12. func _custom_game():
  13. get_tree().change_scene("res://scenes/custom_game.tscn")
  14. func _singleplayer():
  15. print("still refactoring singleplayer")
  16. # Command line
  17. func _option_sel(button_name, option):
  18. var button = get_node(button_name)
  19. if option == "r":
  20. option = randi() % button.get_item_count()
  21. else:
  22. option = int(option)
  23. button.select(option)
  24. # if o.get_value("-silent"):
  25. # server_playing = false
  26. # if o.get_value("-hero"):
  27. # var hero = o.get_value("-hero")
  28. # _option_sel("PlayerSettings/HeroSelect", hero)
  29. # # For some reason, calling _option_sel doesn't trigger the actual selection
  30. # select_hero(get_node("PlayerSettings/HeroSelect").get_selected_id())
  31. # if o.get_value("-level"):
  32. # _option_sel("CustomGame/LevelSelect", o.get_value("-level"))
  33. # if o.get_value("-server"):
  34. # call_deferred("_server_init")
  35. # if o.get_value("-matchmaker"):
  36. # call_deferred("_matchmaker_init")
  37. # if o.get_value("-client"):
  38. # call_deferred("_client_init")
  39. # if o.get_value("-port"):
  40. # port = o.get_value("-port")
  41. # if o.get_value("-start-game"):
  42. # my_info.start_game = true
  43. # if o.get_value("-singleplayer"):
  44. # call_deferred("_singleplayer_init")
  45. # if o.get_value("-ai"):
  46. # my_info.is_ai = true
  47. # if not o.get_value("-no-record") and not o.get_value("-ai"):
  48. # my_info.record = true
  49. # if o.get_value('-h'):
  50. # o.print_help()
  51. # quit()