Browse Source

add attachan and join buttons

Roman Dayneko 11 years ago
parent
commit
43a2b6fd0c
3 changed files with 40 additions and 9 deletions
  1. 31 7
      apps/face/src/index.erl
  2. 3 0
      apps/face/src/n2o_game.erl
  3. 6 2
      apps/server/src/game_session.erl

+ 31 - 7
apps/face/src/index.erl

@@ -16,9 +16,15 @@ body() ->
     {ok,Pid} = wf:comet(fun() -> chat_loop() end), 
     [ #span{ body = io_lib:format("'/index?x=' is ~p",[wf:qs(<<"x">>)]) },
       #panel{ id=history },
-      #textbox{ id=message },
-      #button{ id=send, body= <<"Chat">>, postback={chat,Pid}, source=[message] },
-      #button{ id=test, body= <<"Test">>, postback={test,Pid}}].
+      %%#textbox{ id=message },
+      %%#button{ id=send, body= <<"Chat">>, postback={chat,Pid}, source=[message] },
+      %%#button{ id=test, body= <<"Test">>, postback={test,Pid}},
+      %% session attachm, join game, take %1, discard %1
+      #button{ id = attach, body = <<"Attach">>, postback = attach},
+      #button{ id = join, body = <<"Join">>, postback = join},
+      #button{ id = take, body = <<"Take">>, postback = take},
+      #button{ id = discard, body = <<"Discard">>, postback = discard}
+    ].
 
 event(init) ->
     {ok,GamePid} = game_session:start_link(self()),
@@ -31,8 +37,8 @@ event(init) ->
 
 event({chat,Pid}) ->
     GamePid = get(game_session),
-    game_session:process_request(GamePid,"Web Site",#session_attach{token=?TEST_TOKEN}), 
-    game_session:process_request(GamePid,"Web Site",#join_game{game=1000001}),
+%%    game_session:process_request(GamePid,"Web Site",#session_attach{token=?TEST_TOKEN}), 
+%%    game_session:process_request(GamePid,"Web Site",#join_game{game=1000001}),
     error_logger:info_msg("Chat Pid: ~p",[Pid]),
     Username = wf:user(),
     Message = wf:q(message),
@@ -40,8 +46,26 @@ event({chat,Pid}) ->
     wf:update(text,[#panel{body= <<"Text">>},#panel{body= <<"OK">>}]),
     Pid ! {message, Username, Message};
 
-event({test, _Pid}) ->
-    wf:wire("ws.send(Bert.encodebuf(Bert.tuple(Bert.atom('client'), Bert.atom('ok2') )));");
+%%event({Event}) ->
+%%    wf:wire("ws.send(Bert.encodebuf(Bert.tuple(Bert.atom('client'), Bert.atom('ok2') )));");
+
+event(attach) ->
+    Msg = "ws.send(Bert.encodebuf(Bert.tuple(Bert.atom('client'), Bert.tuple(Bert.atom('session_attach'), '" ++ ?TEST_TOKEN ++ "'))));",
+    wf:wire(Msg),
+    wf:update(text,[#panel{body= <<"Text">>},#panel{body= <<"OK">>}]);
+
+event(join) ->
+    Msg = "ws.send(Bert.encodebuf(Bert.tuple(Bert.atom('client'), Bert.tuple(Bert.atom('join_game'), 1000001))));",
+    wf:wire(Msg),
+    wf:update(text,[#panel{body= <<"Text">>},#panel{body= <<"OK">>}]);
+
+%%-record(okey_take, {
+%%          pile :: integer() %% 0 or 1
+%%         }).
+
+event(take) ->
+    Message = "Bert.tuple()",
+    wf:update(text,[#panel{body= <<"Text">>},#panel{body= <<"OK">>}]);
 
 event(logout) -> 
     wf:logout(),

+ 3 - 0
apps/face/src/n2o_game.erl

@@ -35,6 +35,7 @@ stream({text,Data}, Req, State) ->
 stream({binary,Info}, Req, State) ->
     wf:info("Binary Received: ~p",[Info]),
     Pro = binary_to_term(Info,[safe]),
+
     wf:info("N2O Unknown Event: ~p",[Pro]),
     case Pro of
         {client,M} -> info({client,M},Req,State);
@@ -76,6 +77,8 @@ render_actions(InitActions) ->
     [RenderInit,RenderInitGenActions].
 
 info({client,Message}, Req, State) ->
+    GamePid = get(gamme_session),
+    game_session:process_request(GamePid, Message), 
     wf:info("Client Message: ~p",[Message]),
     {reply,[],Req,State};
 

+ 6 - 2
apps/server/src/game_session.erl

@@ -11,7 +11,7 @@
 
 -export([start_link/1]).
 -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
--export([process_request/3]).
+-export([process_request/2, process_request/3]).
 -export([bot_session_attach/2]).
 
 -define(SERVER, ?MODULE).
@@ -46,6 +46,10 @@ bot_session_attach(Pid, UserInfo) ->
 
 % TODO: in case of game requests from web page handle them here
 
+process_request(Pid, Msg) ->
+    ?INFO("API payload ~p pid ~p",[Msg,Pid]),
+    gen_server:call(Pid, {client_request, Msg}).
+
 process_request(Pid, Source, Msg) ->
     ?INFO("API from ~p payload ~p pid ~p",[Source,Msg,Pid]),
     gen_server:call(Pid, {client_request, Msg}).
@@ -64,7 +68,7 @@ handle_call(Request, From, State) ->
 
 handle_cast({bot_session_attach, UserInfo}, State = #state{user = undefined}) ->
 %    ?INFO("bot session attach", []),
-    {noreply, State#state{user = UserInfo}};
+    {noreply, state#state{user = UserInfo}};
 
 handle_cast(Msg, State) ->
     ?INFO("session: unrecognized cast: ~p", [Msg]),