extends Node

# Semantic versioning, more or less
# Major: Server cannot accept requests (i.e. new hero, or network protocol change)
# Minor: Gameplay was significantly changed, but these can still technically play together (i.e. master-only scope added)
	# These are things a server admin might choose to reject if it was decided to be significant
# Patch: Anything else: Bugfixes, UI changes, etc
# Currently 0.0.0 which means API, gameplay, etc can change suddenly and frequently
# Don't rely on it for anything
# 1.0.0 will be the reddit release
var version = "0.0.0"

var args

onready var Options = preload("res://scripts/args.gd").new().Options

func _ready():
	args = _get_args()

func get_master_player():
	return get_player(get_tree().get_network_unique_id())

func get_player(netid):
	# We not %d? Because sometimes we need to do get_player(thing.get_name())
	var path = "/root/Level/Players/%s" % str(netid)
	if has_node(path):
		return get_node(path)
	else:
		return null

func is_friendly(player):
	var mp = get_master_player()
	if mp:
		return player.player_info.is_right_team == mp.player_info.is_right_team
	else:
		return true # Doesn't matter, we're headless

func _get_args():
	var opts = Options.new()
	opts.set_banner(('A non-violent MOBA inspired by Overwatch and Zineth'))
	opts.add('-singleplayer', false, 'Whether to run singeplayer, starting immediately')
	opts.add('-server', false, 'Whether to run as server')
	opts.add('-matchmaker', false, 'Whether to be the sole matchmaker')
	opts.add('-client', false, 'Immediately connect as client')
	opts.add('-silent', false, 'If the server is not playing, merely serving')
	opts.add('-ip', '127.0.0.1', 'The ip to connect to (client only!)')
	opts.add('-port', 54673, 'The port to run a server on or connect to')
	opts.add('-hero', 'r', 'Your choice of hero (index)')
	opts.add('-level', 'r', 'Your choice of level (index) - server only!')
	opts.add('-start-game', false, 'Join as a client and immediately start the game')
	opts.add('-ai', true, 'Run this client as AI')
	opts.add('-no-record', true, "Don't record this play for AI later")
	opts.add('-h', false, "Print help")
	opts.parse()
	return opts