-------------------------------------------------------------------------------

	Netboard 2 -- Protokol
	Josef Kufner <jk@myserver.cz>

	$Date: 2007-02-18 17:09:11 +0100 (Sun, 18 Feb 2007) $

-------------------------------------------------------------------------------

Směrovací znak:

	O	options
	S	session
	G	game backend
	C	chat backend
	N	network backend
	B	hraci deska
	P	seznam hracu

Formát zpráv:

	src dest ( data )

	src	smerovaci znak odesilatele
	dest	smerovaci znak prijemce
	data	data zpravy (seznam)


Zprávy posílané hrací deskou:

	G ( "Bbp" button object x y )
	
		Stisknutí tlačítka button myši na pozici [x, y], nad objektem
		object.
	
	
	G ( "Bbr" button object x y )
	
		Uvolnění tlačítka button myši na pozici [x, y], nad objektem
		object.


	G ( "Bkp" mode keyval string )
	
		Stisknutí klávesy.
		
		mode = modifikatory
		keyval = hodnota klavesy podle <gdk/gdkkeysyms.h>
		string = textová reprezentace klávesy
	
	
	G ( "Bkr" mode keyval string )
	
		Uvolnění klávesy

		mode = modifikatory
		keyval = hodnota klavesy podle <gdk/gdkkeysyms.h>
		string = textová reprezentace klávesy



Příkazy pro hrací desku:

	( "Bil" file img_id )

		Image load.
	
	
	( "Bir" img_id )

		Image remove.
	
	
	( "Boa" obj_id img_id x y height width )
	
		Object add.
		
	
	( "Bod" obj_id )

		Object delete.

		
	( "Bom" obj_id x y )

		Object move.
	
	
	( "Bst" text )

		Statusbar, nastavení textu.
	
	
	( "Bsp" is_visible fraction text )

		Statusbar, nastaveni progressbaru v procentech.
	
	
	( "Bss" status )

		Statusbar, nastaveni semaforu.
		
			0 ... nic
			1 ... cervena
			2 ... zelena
			3 ... cervena + zelena


Příkazy pro nastavení:

	( "Os" category option value )

		Uloží hodnotu.

	( "Og" category option )

		Vyžádá hodnotu, dostane odpověď "Or" ve tvaru jako je "Os".


Příkazy pro seznam hráčů:

	( "Pj" address )

		Hrac se pripojil.
	
	( "Pp" address )

		Hrac se odpojil.

	( "Pi" address nick role score conn_stat)

		Update informaci o hraci.
	
	( "Pn" address nick )
	( "Pr" address role )
	( "Ps" address score )
	( "Pc" address conn_stat )

		Update jednotlivych polozek.

	( "Pg" address )

		Zjisteni informaci o hraci. Posle zpet "Pi".

	( "Pl" )

		Zjisteni seznamu hracu. Posle zpet sekvenci:
		Plb Pi Pi Pi... Ple


Řízení hry

	( "Sgr" )
	
		Jsem připraven.


	( "Sgs" )

		Zahájení hry.


	( "Sgo" )

		Game over.



----------------------------  D R A F T  --------------------------------------

	OBSOLETE


Správa hráčů
~~~~~~~~~~~~

	O přihlášení do skupiny se postará Network samo. Během přihlášení ke
	skupině obdrží hráč unikátní 'player_id', kterým se vrámci skupiny
	identifikuje.


	-Pj player_id

		(join) Network informuje o přihlášení hráče s 'player_id'.


	-Pw player_id
		
		(Who is) GUI požaduje informace o hráči.


	{Pi player_id
	:key: value
	}

		Network předává informace o hráči. Pokud je 'value'
		víceřádkové, je 'key' opakován.

		Povinné klíče s hodnotou:
			nick	... přezdívka hráče
			addr	... adresa hráče
			mode	... mód hráče (hráč, pozorovatel, arbiter,...)
			color	... barva hráče (0 = nehraje)


	-Pq player

		(Quit) Hráč 'player_id' opustil hru.


	-Pk player
	
		(Kick) Vyhození hráče ze skupiny


	-Pr player role

		(Role) Hráč 'player' změnil svoji roli na 'role'.


	-Pg
	
		(Get) Požadavek na poslání seznamu hráčů. Odpovědí je sekvence zpráv 'Pi'.


	-Pl
		
		(Lock) Zamčení. Nikdo další se nebude moci připojit do skupiny.


	-Pu
		
		(Unlock) Odemčení.



Předávání tahů
~~~~~~~~~~~~~~
		
	{Ts id player
	:data
	}

		(Send) Odeslání tahu.
		
		'id'		... pořadové číslo tahu
		'player'	... odesílající hráč
		

	-Ta id

		(Accept) Přijetí tahu. Odesílá výhradně Script.

		'id'		... číslo tahu


	-Tr id

		(Reject) Odmítnutí tahu. Odesílá výhradně Script.

		'id'		... číslo tahu


	-Tc id hash

		(Check)	Kontrola tahu arbiterem. Hash je md5 tahu včetně od
		závorky po závorku včetně, pokud je tah platný. Pokud je tah
		chybný je hash nahrazen řetězcem "INVALID".
		
		Arbiter by měl své rozhodnutí o neplatnosti tahu zdůvodnit
		textovým popisem v chatu.

		'id'		... číslo tahu
		'hash'		... md5 tahu nebo INVALID


Řízení hry
~~~~~~~~~~

	U zpráv 'Gv', 'Ge' a 'Gc' má případný arbiter právo veta.

	-Gb
	
		(Begin) Zahájení hry.


	-Gs

		(Surrender) Odesílající hráč se vzdává.
	
	
	-Gv 'player'

		(Victory) Hráč 'player' je prohlašován za vítěze. Hráč nemůže
		prohlásit za vítěze sám sebe a musí to potvrdit všichni hráči.


	-Gc

		(Continue) Odesílající hráč neznává vítězství prohlášené
		zprávou 'Gv' a požaduje pokračování hry.
		
	-Ge

		(End) Ukončení hry.


Chat
~~~~
	{Mc player
	:text
	}

		(Chat) Zpráva v chatu.

		'player'	... odesílatel
		'text'		... text zprávy


	{Mi adresa
	:text
	}

		(Invite) Pozvání hráče do hry. Na adresu 'adresa' je odesláno pozvání ve
		formě obvyklé zprávy.

		'adresa'	... příjemce
		'text'		... text zprávy



-------------------------------------------------------------------------------
vim:encoding=8bit-latin2:
