init public repo

This commit is contained in:
Lurkars
2019-07-23 19:49:04 +02:00
commit d6a3a59d2d
446 changed files with 185897 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
extends Control
var LobbyMenu = preload("res://scenes/menus/LobbyMenu.tscn")
func _ready():
find_node("bots").set_pressed(local_storage.read_value("bots", true))
func _draw():
find_node("host").grab_focus()
func _on_host_pressed():
var port = find_node("port").get_value()
var bots = find_node("bots").is_pressed()
var err = server.host_game(int(port), bots)
if err == OK:
var lobby_menu = LobbyMenu.instance()
get_tree().get_root().add_child(lobby_menu)
gamestate.set_player(get_tree().get_network_unique_id())
queue_free()
else:
_on_back_pressed()
get_tree().get_root().get_node("multiplayer_menu").show_error_dialog(tr("ERROR_SERVER_CREATION"))
func _on_back_pressed():
queue_free()
get_tree().get_root().get_node("multiplayer_menu").show()
+16
View File
@@ -0,0 +1,16 @@
extends Control
func _draw():
find_node("join").grab_focus()
func _on_join_pressed():
var ip = find_node("ip").text
var port = find_node("port").get_value()
client.join_game(ip, int(port))
queue_free()
func _on_back_pressed():
queue_free()
+25
View File
@@ -0,0 +1,25 @@
extends Control
func _draw():
find_node("resume").grab_focus()
func _physics_process(delta):
if Input.is_action_just_pressed("ui_cancel"):
if is_visible_in_tree():
hide()
else:
show()
func _on_resume_pressed():
hide()
func _on_settings_pressed():
pass
func _on_end_pressed():
gamestate.quit_game()
+101
View File
@@ -0,0 +1,101 @@
extends Control
onready var countdown_timer = get_node("countdown_timer")
onready var player_settings = find_node("player_settings")
onready var player_list = find_node("players")
func _ready():
if get_tree().get_root().has_node("multiplayer_menu"):
get_tree().get_root().get_node("multiplayer_menu").hide()
if get_tree().get_root().has_node("main_menu"):
get_tree().get_root().get_node("main_menu").hide()
get_node("menu/back").connect("pressed",self,"_on_back_pressed")
gamestate.connect("players_changed", self, "_players_changed")
gamestate.connect("game_ready", self, "_game_ready")
gamestate.connect("game_started", self, "_game_started")
client.connect("server_disconnected", self, "_server_disconnected")
player_settings.get_name_node().connect("text_changed",self,"_on_name_text_changed")
player_settings.get_color_node().connect("color_changed",self,"_on_color_color_changed")
player_settings.get_color_node().connect("draw",self,"_on_player_changed")
countdown_timer.set_wait_time(server.LOBBY_READY_WAIT_TIME)
if gamestate.game_name:
find_node("server_name").set_text(gamestate.game_name)
find_node("server_name").set_tooltip(gamestate.game_name)
func _draw():
find_node("ready").grab_focus()
func _physics_process(delta):
if not countdown_timer.is_stopped():
get_node("countdown").text = str(int(countdown_timer.get_time_left()) + 1)
func _players_changed(players):
player_list.clear()
for p_id in players:
var player = players[p_id]
if p_id == get_tree().get_network_unique_id():
player_list.add_item(player.name + " (You)")
else:
player_list.add_item(player.name)
player_list.set_item_custom_bg_color(player_list.get_item_count()-1, player.color)
if player.ready:
player_list.set_item_icon(player_list.get_item_count()-1, player_list.get_node("ready_icon").get_button_icon())
else:
player_list.set_item_icon(player_list.get_item_count()-1, player_list.get_node("not_ready_icon").get_button_icon())
find_node("server_bots").set_pressed(gamestate.bots)
func _game_ready(all_ready):
if all_ready:
get_node("countdown").show()
countdown_timer.start()
else:
countdown_timer.stop()
get_node("countdown").hide()
func _game_started():
queue_free()
func _on_name_text_changed(new_text):
_on_player_changed()
func _on_color_color_changed(color):
_on_player_changed()
func _on_ready_toggled(button_pressed):
_on_player_changed()
player_settings.get_name_node().set_editable(not button_pressed)
player_settings.get_color_node().set_disabled(button_pressed)
func _on_player_changed():
var name = player_settings.get_name_node().text
var color = player_settings.get_color_node().color
var ready = find_node("ready").pressed
gamestate.update_player(name,color,ready)
func _on_back_pressed():
gamestate.quit_game()
if get_tree().get_root().has_node("multiplayer_menu"):
get_tree().get_root().get_node("multiplayer_menu").show()
get_tree().get_root().get_node("main_menu").hide()
elif get_tree().get_root().has_node("main_menu"):
get_tree().get_root().get_node("main_menu").show()
queue_free()
func _server_disconnected():
_on_back_pressed()
+24
View File
@@ -0,0 +1,24 @@
extends Control
onready var player_settings = find_node("player_settings")
func _ready():
find_node("bots").set_pressed(local_storage.read_value("bots", true))
func _draw():
find_node("start").grab_focus()
func _on_start_pressed():
var name = player_settings.get_name_node().text
var color = player_settings.get_color_node().color
var bots = find_node("bots").is_pressed()
queue_free()
server.local_game(name,color,bots)
func _on_back_pressed():
queue_free()
get_tree().get_root().get_node("main_menu").show()
+43
View File
@@ -0,0 +1,43 @@
extends Control
var MultiplayerMenu = preload("res://scenes/menus/MultiplayerMenu.tscn")
var LocalGameMenu = preload("res://scenes/menus/LocalGameMenu.tscn")
var SettingsMenu = preload("res://scenes/menus/SettingsMenu.tscn")
func _ready():
gamestate.connect("server_disconnected", self, "_server_disconnected")
func _draw():
find_node("multiplayer").grab_focus()
func _on_multiplayer_pressed():
var multiplayer_menu = MultiplayerMenu.instance()
get_tree().get_root().add_child(multiplayer_menu)
hide()
func _on_practice_pressed():
var local_game_menu = LocalGameMenu.instance()
get_tree().get_root().add_child(local_game_menu)
hide()
func _on_settings_pressed():
var settings_menu = SettingsMenu.instance()
get_tree().get_root().add_child(settings_menu)
hide()
func _on_quit_pressed():
get_tree().quit()
func _server_disconnected():
show_error_dialog(tr("SERVER_DISCONNECTED"))
func show_error_dialog(text:String):
var dialog = get_node("error_dialog")
dialog.set_text(text)
dialog.popup_centered()
+141
View File
@@ -0,0 +1,141 @@
extends Control
var ServerCreateGameMenu = preload("res://scenes/menus/ServerCreateGameMenu.tscn")
var LobbyMenu = preload("res://scenes/menus/LobbyMenu.tscn")
var DirectHostMenu = preload("res://scenes/menus/DirectHostMenu.tscn")
var DirectJoinMenu = preload("res://scenes/menus/DirectJoinMenu.tscn")
onready var games_list = get_node("menu/games")
var games = []
var selected_game = {}
func _ready():
get_node("menu/back").connect("pressed",self,"_on_back_pressed")
client.connect("connection_succeeded", self, "_connection_succeeded")
client.connect("connection_failed", self, "_connection_failed")
client.connect("server_disconnected", self, "_server_disconnected")
func _draw():
find_node("refresh").grab_focus()
func _on_multiplayer_menu_draw():
get_games(find_node("open").is_pressed())
get_node("refresh_timer").start()
func _on_multiplayer_menu_hide():
get_node("refresh_timer").stop()
func _on_back_pressed():
queue_free()
get_tree().get_root().get_node("main_menu").show()
func _on_direct_host_pressed():
var direct_host_menu = DirectHostMenu.instance()
get_tree().get_root().add_child(direct_host_menu)
get_tree().get_root().get_node("main_menu").hide()
func _on_direct_join_pressed():
var direct_join_menu = DirectJoinMenu.instance()
get_tree().get_root().add_child(direct_join_menu)
get_tree().get_root().get_node("main_menu").hide()
func _on_open_toggled(button_pressed):
get_games(button_pressed)
func _on_refresh_pressed():
if get_node("refresh_timer").is_stopped():
get_node("refresh_timer").start()
get_games(find_node("open").is_pressed())
func _on_refresh_timer_timeout():
get_games(find_node("open").is_pressed())
func _server_disconnected():
show_error_dialog(tr("SERVER_DISCONNECTED"))
func show_error_dialog(text:String):
var dialog = get_node("error_dialog")
dialog.set_text(text)
dialog.popup_centered()
func get_games(only_open:bool):
var req = game_server.http()
req.connect_http(self,"_on_get_games")
if only_open:
req.get_request('client/games?open')
else:
req.get_request('client/games')
func _on_get_games(result, response_code, headers, body):
if result == OK && response_code == HTTPClient.RESPONSE_OK:
find_node("create").set_disabled(false)
find_node("open").set_disabled(false)
var json = JSON.parse(body.get_string_from_utf8())
games_list.clear()
games = json.result
for game in games:
var name = game.name
name += " ("
name += str(game.player_count)
name += "/4)"
if game.bots:
name += " [with Bots]"
games_list.add_item(name)
if game.running:
games_list.set_item_icon(games_list.get_item_count()-1, games_list.get_node("running_icon").get_button_icon())
elif game.has('private') && game.private:
games_list.set_item_icon(games_list.get_item_count()-1, games_list.get_node("private_icon").get_button_icon())
else:
games_list.set_item_icon(games_list.get_item_count()-1, games_list.get_node("open_icon").get_button_icon())
else:
find_node("create").set_disabled(true)
find_node("join").set_disabled(true)
find_node("open").set_disabled(true)
show_error_dialog(tr("SERVER_NO_CONNECTION"))
get_node("refresh_timer").stop()
func _on_create_pressed():
var server_create_game_menu = ServerCreateGameMenu.instance()
get_tree().get_root().add_child(server_create_game_menu)
get_tree().get_root().get_node("main_menu").hide()
func _on_join_pressed():
client.join_game(game_server.SERVER_ADDR, int(selected_game['port']))
func _connection_succeeded():
var lobby_menu = LobbyMenu.instance()
if selected_game && selected_game.has('name'):
gamestate.game_name = selected_game.name
get_tree().get_root().add_child(lobby_menu)
get_node("refresh_timer").stop()
hide()
func _connection_failed():
show_error_dialog(tr("CONNECTION_FAILED"))
func _on_games_item_selected(index):
selected_game = games[index]
find_node("join").set_disabled(false)
func _on_games_nothing_selected():
find_node("join").set_disabled(true)
+44
View File
@@ -0,0 +1,44 @@
extends Control
func _ready():
var player_name = local_storage.read_value("player_name", false)
var game_title = "New Game"
if player_name:
game_title += " by " + player_name
find_node("name").set_text(game_title)
find_node("bots").set_pressed(local_storage.read_value("bots", true))
func _draw():
find_node("create").grab_focus()
func _on_create_pressed():
var req = game_server.http()
req.connect_http(self,"_on_game_created")
var server_name = find_node("name").text
var bots = 0
if find_node("bots").is_pressed():
bots = 1
req.post_request('client/game/create', to_json({'name' : server_name, 'bots' : bots}))
func _on_game_created(result, response_code, headers, body):
if result == OK && response_code == HTTPClient.RESPONSE_OK:
var json = JSON.parse(body.get_string_from_utf8())
gamestate.game_name = json.result['name']
client.join_game(game_server.SERVER_ADDR, int(json.result['port']))
queue_free()
func _on_name_text_changed(new_text):
if new_text:
find_node("create").set_disabled(false)
else:
find_node("create").set_disabled(true)
func _on_back_pressed():
queue_free()
get_tree().get_root().get_node("multiplayer_menu").show()
+67
View File
@@ -0,0 +1,67 @@
extends Control
onready var player_settings = find_node("settings_player")
onready var game_tab = find_node("game")
onready var controls_tab = find_node("controls")
onready var graphics_tab = find_node("graphics")
onready var system_tab = find_node("system")
var locale
func _ready():
get_node("menu/back").connect("pressed",self,"_on_back_pressed")
find_node("bots").set_pressed(local_storage.read_value("bots", true))
game_tab.set_name(tr("GAME"))
controls_tab.set_name(tr("CONTROLS"))
graphics_tab.set_name(tr("GRAPHICS"))
system_tab.set_name(tr("SYSTEM"))
func _on_back_pressed():
queue_free()
get_tree().get_root().get_node("main_menu").show()
func _on_locales_item_selected(index):
match index:
0:
locale = "en"
1:
locale = "de"
_:
locale = "en"
TranslationServer.set_locale(locale)
game_tab.set_name(tr("GAME"))
controls_tab.set_name(tr("CONTROLS"))
graphics_tab.set_name(tr("GRAPHICS"))
system_tab.set_name(tr("SYSTEM"))
func _init_locales():
var locales = find_node("locales")
locales.clear()
locales.add_item(tr("LOCALE_EN"))
locales.add_item(tr("LOCALE_DE"))
locale = local_storage.read_value("locale","en")
match locale:
"en":
locales.select(0)
_on_locales_item_selected(0)
"de":
locales.select(1)
_on_locales_item_selected(1)
func _on_locales_tree_exiting():
TranslationServer.set_locale(local_storage.read_value("locale","en"))
func _on_save_pressed():
var values = {}
values['player_name'] = player_settings.get_name_node().text
values['player_color'] = player_settings.get_color_node().color.to_html()
values['bots'] = find_node("bots").is_pressed()
values['locale'] = locale
local_storage.write_values(values)
_on_back_pressed()
+89
View File
@@ -0,0 +1,89 @@
tool
extends Control
onready var grid = find_node("grid")
onready var key_dialog = get_node("key_dialog")
const INPUT_TYPE_KEY = 0
const INPUT_TYPE_JOYPAD = 1
var last_action:String
var last_event:InputEvent
var new_inputs = {}
func _ready():
init_mapping()
func init_mapping():
new_inputs = {}
for action in InputMap.get_actions():
if action.begins_with("controls_"):
var action_label = Label.new()
action_label.set_name(action + "_label")
action_label.set_text(action)
grid.add_child(action_label)
var key_action_button = Button.new()
key_action_button.set_h_size_flags(SIZE_SHRINK_CENTER)
key_action_button.set_flat(true)
key_action_button.set_meta("action",action)
key_action_button.set_button_icon(get_node("icons/key").get_button_icon())
var joypad_action_button = Button.new()
joypad_action_button.set_h_size_flags(SIZE_SHRINK_CENTER)
joypad_action_button.set_flat(true)
joypad_action_button.set_meta("action",action)
for mapping in InputMap.get_action_list(action):
if mapping is InputEventKey:
key_action_button.set_text(mapping.as_text())
key_action_button.set_tooltip(mapping.as_text())
elif mapping is InputEventJoypadButton:
joypad_action_button.set_tooltip(str(mapping.button_index))
if has_node("icons/joypad/" + str(mapping.button_index)):
joypad_action_button.set_button_icon(get_node("icons/joypad/" + str(mapping.button_index)).get_button_icon())
else:
joypad_action_button.set_button_icon(get_node("icons/joypad/other").get_button_icon())
joypad_action_button.set_text(str(mapping.button_index))
grid.add_child(key_action_button)
key_action_button.connect("pressed",self,"_on_button_pressed",[action, INPUT_TYPE_KEY])
grid.add_child(joypad_action_button)
joypad_action_button.connect("pressed",self,"_on_button_pressed",[action, INPUT_TYPE_JOYPAD])
func _unhandled_input(event):
if key_dialog.is_visible_in_tree():
if key_dialog.get_meta("type") == INPUT_TYPE_KEY && event is InputEventKey:
last_event = event
key_dialog.set_text(tr(last_event.as_text()))
key_dialog.get_ok().set_disabled(false)
elif key_dialog.get_meta("type") == INPUT_TYPE_JOYPAD && event is InputEventJoypadButton:
last_event = event
key_dialog.set_text(last_event.as_text())
key_dialog.get_ok().set_disabled(false)
func _on_button_pressed(action, type):
last_action = action
last_event = null
key_dialog.set_text(tr("PRESS_KEY"))
key_dialog.set_meta("type", type)
key_dialog.connect("confirmed",self,"_on_dialog_confirmed")
key_dialog.get_ok().set_disabled(true)
key_dialog.popup_centered()
func _on_dialog_confirmed(type):
if not new_inputs.has(last_action):
new_inputs[last_action] = {}
match key_dialog.get_meta("type"):
INPUT_TYPE_KEY:
if last_event is InputEventKey:
new_inputs[last_action]["key"] = OS.get_scancode_string(last_event.scancode)
INPUT_TYPE_JOYPAD:
if last_event is InputEventJoypadButton:
new_inputs[last_action]["joypad"] = last_event.button_index
+14
View File
@@ -0,0 +1,14 @@
extends Control
func _ready():
get_name_node().set_text(local_storage.read_value("player_name", "Player"))
get_color_node().set_pick_color(Color(local_storage.read_value("player_color", "#000000")))
func get_name_node():
return find_node("name")
func get_color_node():
return find_node("color")