88 lines
2.7 KiB
GDScript
88 lines
2.7 KiB
GDScript
class_name SavedServerEntry
|
|
extends RefCounted
|
|
|
|
enum Kind {
|
|
SAVED,
|
|
RECENT,
|
|
}
|
|
|
|
var kind: Kind = Kind.SAVED
|
|
var entry_id: String = ""
|
|
var display_name: String = ""
|
|
var route_kind: String = "DIRECT"
|
|
var host: String = ""
|
|
var normalized_host: String = ""
|
|
var port: int = EndpointParser.DEFAULT_PORT
|
|
var normalized_endpoint: String = ""
|
|
var favorite: bool = false
|
|
var created_at_unix: int = 0
|
|
var updated_at_unix: int = 0
|
|
var last_success_at_unix: int = 0
|
|
var last_result_code: String = ""
|
|
var last_observed_server_name: String = ""
|
|
var last_observed_protocol_version: int = 0
|
|
var last_observed_player_count: int = 0
|
|
var last_observed_max_players: int = 0
|
|
|
|
|
|
static func from_dictionary(
|
|
data: Dictionary,
|
|
entry_kind: Kind,
|
|
) -> SavedServerEntry:
|
|
var entry := SavedServerEntry.new()
|
|
entry.kind = entry_kind
|
|
entry.entry_id = str(data.get("entry_id", ""))
|
|
entry.display_name = str(data.get("display_name", ""))
|
|
entry.route_kind = str(data.get("route_kind", "DIRECT"))
|
|
entry.host = str(data.get("host", ""))
|
|
entry.normalized_host = str(data.get("normalized_host", entry.host))
|
|
entry.port = int(data.get("port", EndpointParser.DEFAULT_PORT))
|
|
entry.normalized_endpoint = str(data.get("normalized_endpoint", ""))
|
|
entry.favorite = bool(data.get("favorite", false))
|
|
entry.created_at_unix = int(data.get("created_at_unix", 0))
|
|
entry.updated_at_unix = int(data.get("updated_at_unix", 0))
|
|
entry.last_success_at_unix = int(data.get("last_success_at_unix", 0))
|
|
entry.last_result_code = str(data.get("last_result_code", ""))
|
|
entry.last_observed_server_name = str(
|
|
data.get("last_observed_server_name", "")
|
|
)
|
|
entry.last_observed_protocol_version = int(
|
|
data.get("last_observed_protocol_version", 0)
|
|
)
|
|
entry.last_observed_player_count = int(
|
|
data.get("last_observed_player_count", 0)
|
|
)
|
|
entry.last_observed_max_players = int(
|
|
data.get("last_observed_max_players", 0)
|
|
)
|
|
return entry
|
|
|
|
|
|
func to_dictionary() -> Dictionary:
|
|
return {
|
|
"entry_id": entry_id,
|
|
"display_name": display_name,
|
|
"route_kind": route_kind,
|
|
"host": host,
|
|
"normalized_host": normalized_host,
|
|
"port": port,
|
|
"normalized_endpoint": normalized_endpoint,
|
|
"favorite": favorite,
|
|
"created_at_unix": created_at_unix,
|
|
"updated_at_unix": updated_at_unix,
|
|
"last_success_at_unix": last_success_at_unix,
|
|
"last_result_code": last_result_code,
|
|
"last_observed_server_name": last_observed_server_name,
|
|
"last_observed_protocol_version": last_observed_protocol_version,
|
|
"last_observed_player_count": last_observed_player_count,
|
|
"last_observed_max_players": last_observed_max_players,
|
|
}
|
|
|
|
|
|
func get_endpoint() -> ConnectionEndpoint:
|
|
var endpoint_text: String = (
|
|
"[%s]:%d" % [host, port]
|
|
if host.contains(":")
|
|
else "%s:%d" % [host, port]
|
|
)
|
|
return EndpointParser.parse(endpoint_text)
|