%%%===================================================%%%
%%% 		Wasp soccer JavaScript Interface		%%%
%%%   http://wasp.cs.vu.nl/wasp				%%%
%%%									%%%
%%%	Version 1.1                                    %%%
%%%	Latest Modified Record        			%%%
%%%        Dec 5, 2003  By Zhisheng                %%%
%%%									%%%
%%% (C) Zhisheng Huang						 %%%
%%%===================================================%%%

:-object wsclientjsi.
 
main :- 
	new(wsclient, _),
	new(wsclient_statusprocess,_),
	new(wsclientlistener(script, queue), _),
	true.
	

:-end_object wsclientjsi.


:-object wsclient_statusprocess : [jsilib].
 
wsclient_statusprocess :-
		set_field(wsclient, clock, 5000),
		get_window(Window),
		repeat,
			sleep(5000),
			get_field(wsclient,clock,Time),
			update_game_clock(Window, Time),
		Time < 1,
		!.
			
update_game_clock(Window, Time):-
		call(Window, showGameTime, [Time], _).
	
:-end_object wsclient_statusprocess.



:-object wsclientlistener : [jsilib, bcilib, wsclient].


     wsclientlistener(Node, Queue) :-
		run(Node, Queue).

	run(Node, Queue) :-
		repeat,
			get_queue(Node, Queue, Term),
%			format('processing ~w~n', [Term]),
			process_test_term(Term),
		Term = stop,
		!.

	process_test_term(Term):-
		Term = chat(Recipient,Text),
		!,
		client_chat(Recipient, Text),
		true.


     process_test_term(Term):-
		Term = setUserName(UserName),
		!,
		get_window(Window),
		call(Window, setUserName, [UserName], _),
		true.

 	process_test_term(Term):-
		Term = addPlayerName(Name),
		!,
		get_window(Window),
		call(Window, addPlayerName, [Name], _),
		true.

	process_test_term(Term):-
		Term = removePlayerName(Name),
		!,
		get_window(Window),
		call(Window, removePlayerName, [Name], _),
		true.


 	process_test_term(Term):-
		Term = showChatText(Name, Text),
		!,
%		format('get term: ~w~n',[Term]),
		get_window(Window),
		call(Window, showChatText, [Name, Text], _),
		true.



	process_test_term(Term):-
		Term = stop,
		!,
		format('The applet has been stopped!!!~n'),
		format('To restart the applet, close the browser and launch this link again.~n'),
		true.

	process_test_term(Term):-
		!,
		format('Unknown command:~w!~n',[Term]),
		true.


:-end_object wsclientlistener.


