Maxim Sokhatsky 11 лет назад
Родитель
Сommit
0cd1989243
2 измененных файлов с 99 добавлено и 97 удалено
  1. 37 97
      apps/face/src/index.erl
  2. 62 0
      apps/face/src/protocol.erl

+ 37 - 97
apps/face/src/index.erl

@@ -1,12 +1,10 @@
 -module(index).
--compile({parse_transform, shen}).
 -compile(export_all).
 -include_lib("n2o/include/wf.hrl").
 -include("../../server/include/requests.hrl").
 -include("../../server/include/settings.hrl").
 -include_lib("avz/include/avz.hrl").
 -include_lib("kvs/include/user.hrl").
--jsmacro([take/2,attach/1,join/1,discard/3,player_info/2,reveal/4,piece/2,logout/0,pause/2]).
 
 -define(GAMEID, 1000001).
 
@@ -19,63 +17,6 @@ user() ->
                   surnames = Surname},
         wf:user(X), X; U-> U end.
 
-join(Game) ->
-    ws:send(bert:encodebuf(bert:tuple(
-        bert:atom('client'),
-        bert:tuple(bert:atom("join_game"), Game)))).
-
-logout() ->
-    ws:send(bert:encodebuf(bert:tuple(
-        bert:atom('client'),
-        bert:tuple(bert:atom("logout"))))).
-
-attach(Token) ->
-    ws:send(bert:encodebuf(bert:tuple(
-        bert:atom('client'),
-        bert:tuple(bert:atom("session_attach"), Token)))).
-
-take(GameId,Place) ->
-    ws:send(bert:encodebuf(bert:tuple(
-        bert:atom('client'),
-        bert:tuple(bert:atom("game_action"),GameId,
-            bert:atom("okey_take"),[{pile,Place}])))).
-
-discard(GameId, Color, Value) ->
-    ws:send(bert:encodebuf(bert:tuple(
-        bert:atom('client'),
-        bert:tuple(
-            bert:atom("game_action"),
-            GameId,
-            bert:atom("okey_discard"),
-            [{tile, bert:tuple(bert:atom("OkeyPiece"), Color, Value)}])))).
-
-player_info(User,GameModule) ->
-    ws:send(bert:encodebuf(bert:tuple(
-        bert:atom('client'),
-        bert:tuple(bert:atom("get_player_stats"),bert:binary(User),bert:atom(GameModule))))).
-
-piece(Color,Value) ->
-    bert:tuple(bert:atom("OkeyPiece"), Color, Value).
-
-reveal(GameId, Color, Value, Hand) ->
-    ws:send(bert:encodebuf(bert:tuple(
-        bert:atom('client'),
-        bert:tuple(
-            bert:atom("game_action"),
-            GameId,
-            bert:atom("okey_reveal"),
-            [{discarded, bert:tuple(bert:atom("OkeyPiece"), Color, Value)},
-             {hand, Hand}])))).
-
-pause(GameId, Action) ->
-    ws:send(bert:encodebuf(bert:tuple(
-        bert:atom("client"),
-        bert:tuple(
-            bert:atom("pause_game"),
-            bert:atom("undefined"),
-            GameId,
-            bert:atom(Action))))).
-
 color(Id,Color) -> wf:wire(wf:f("document.querySelector('#~s').style.color = \"~s\";",[Id,Color])).
 unselect(Id) -> color(Id,black).
 select(Id) -> color(Id,red).
@@ -145,14 +86,14 @@ body() ->
 
 event(terminate) -> wf:user(undefined), wf:info("terminate");
 event(init) -> event(attach), event(join);
-
-event(combo)  -> wf:info("Combo: ~p",[wf:q(discard_combo)]);
-event(join)   -> wf:wire(join(wf:to_list(?GAMEID)));
-event(take)   -> wf:wire(take(wf:to_list(?GAMEID), wf:q(take_combo)));
+event(login_button) -> wf:wire(protocol:logout());
+event(join) -> wf:wire(protocol:join(wf:to_list(?GAMEID)));
+event(take) -> wf:wire(protocol:take(wf:to_list(?GAMEID), wf:q(take_combo)));
 
 event(player_info) -> 
     User = user(),
-    wf:wire(player_info(wf:f("'~s'",[wf:to_list(User#user.id)]),wf:f("'~s'",[game_okey])));
+    wf:wire(protocol:player_info(
+        wf:f("'~s'",[wf:to_list(User#user.id)]),wf:f("'~s'",[game_okey])));
 
 event(attach) -> 
     {ok,GamePid} = game_session:start_link(self()),
@@ -161,7 +102,7 @@ event(attach) ->
     put(okey_im, User#user.id),
     wf:info("Session User: ~p",[User]),
     Token = auth_server:generate_token(?GAMEID,User),
-    wf:wire(attach(wf:f("'~s'",[Token]))),
+    wf:wire(protocol:attach(wf:f("'~s'",[Token]))),
     ok;
 
 event(discard) -> 
@@ -169,9 +110,39 @@ event(discard) ->
     DiscardCombo = wf:q(discard_combo),
     case lists:keyfind(erlang:list_to_binary(DiscardCombo), 1, TilesList) of
     {_, {C, V}} ->
-        wf:wire(discard(wf:to_list(?GAMEID), wf:to_list(C), wf:to_list(V)));
+        wf:wire(protocol:discard(wf:to_list(?GAMEID), wf:to_list(C), wf:to_list(V)));
     false -> wf:info("Discard Combo: ~p",[DiscardCombo]) end;
 
+event(reveal) ->
+    TilesList = get(game_okey_tiles),
+    Discarded = wf:q(discard_combo),
+
+    case lists:keyfind(wf:to_binary(Discarded), 1, TilesList) of
+        {_, {CD, VD} = Key} ->
+            Hand = [{C,V} || {_, {C, V}} <- lists:keydelete(Key, 2, TilesList) ],
+            HandJS = "[[" ++ string:join([
+                wf:f("bert.tuple(bert.atom('OkeyPiece'),~p,~p)",[C,V]) || {C,V} <- Hand],",") ++ "],[]]",
+            RevealJS = protocol:reveal(wf:to_list(?GAMEID),wf:f("~p",[CD]),wf:f("~p",[VD]),HandJS),
+            wf:info("RevealJS: ~p",[lists:flatten(RevealJS)]),
+            wf:wire(RevealJS);
+        _ ->
+            wf:info("error discarded ~p", Discarded)
+    end;
+
+event(pause) ->
+    Action  =
+        case get(game_okey_pause) of 
+            X when X == resume orelse X == undefined -> 
+                put(game_okey_pause, pause),
+                wf:update(pause, [#button{id = pause, body = "Resume", postback = pause}]),
+                "pause";
+            pause ->
+                put(game_okey_pause, resume),
+                wf:update(pause, [#button{id = pause, body = <<"Pause">>, postback = pause}]),
+                "resume"
+        end,
+    wf:wire(protocol:pause(wf:to_list(?GAMEID), wf:f("~p", [Action])));
+
 %event({binary,M}) -> {ok,<<"Hello">>};
 
 event({client,Message}) ->
@@ -234,7 +205,6 @@ event({server, {game_event, _, okey_tile_discarded, Args}}) ->
             ok
     end;
 
-
 event({server,{game_event, Game, okey_turn_timeout, Args}}) ->
     wf:info("okey_turn_timeout ~p", [Args]),
     {_, TileTaken} = lists:keyfind(tile_taken, 1, Args),
@@ -287,40 +257,10 @@ event({server,{game_event, _, okey_next_turn, Args}}) ->
     select(LabelId),
     put(okey_turn_mark, LabelId);
 
-event(reveal) ->
-    TilesList = get(game_okey_tiles),
-    Discarded = wf:q(discard_combo),
 
-    case lists:keyfind(wf:to_binary(Discarded), 1, TilesList) of
-        {_, {CD, VD} = Key} ->
-            Hand = [{C,V} || {_, {C, V}} <- lists:keydelete(Key, 2, TilesList) ],
-            HandJS = "[[" ++ string:join([
-                wf:f("bert.tuple(bert.atom('OkeyPiece'),~p,~p)",[C,V]) || {C,V} <- Hand],",") ++ "],[]]",
-            RevealJS = reveal(wf:to_list(?GAMEID),wf:f("~p",[CD]),wf:f("~p",[VD]),HandJS),
-            wf:info("RevealJS: ~p",[lists:flatten(RevealJS)]),
-            wf:wire(RevealJS);
-        _ ->
-            wf:info("error discarded ~p", Discarded)
-    end;
-
-event(login_button) -> wf:wire(logout());
 event({register,User}) -> wf:info("Register: ~p",[User]), kvs:add(User), wf:user(User);
 event({login,User}) -> wf:info("Login: ~p",[User]), kvs:put(User), wf:user(User), event(init);
 
-event(pause) ->
-    Action  =
-        case get(game_okey_pause) of 
-            X when X == resume orelse X == undefined -> 
-                put(game_okey_pause, pause),
-                wf:update(pause, [#button{id = pause, body = "Resume", postback = pause}]),
-                "pause";
-            pause ->
-                put(game_okey_pause, resume),
-                wf:update(pause, [#button{id = pause, body = <<"Pause">>, postback = pause}]),
-                "resume"
-        end,
-    wf:wire(pause(wf:to_list(?GAMEID), wf:f("~p", [Action])));
-
 event(Event)  -> ok. %wf:info("Event: ~p", [Event]).
 
 api_event(X,Y,Z) -> avz:api_event(X,Y,Z).

+ 62 - 0
apps/face/src/protocol.erl

@@ -0,0 +1,62 @@
+-module(protocol).
+-compile({parse_transform, shen}).
+-compile(export_all).
+-include_lib("n2o/include/wf.hrl").
+-jsmacro([take/2,attach/1,join/1,discard/3,player_info/2,reveal/4,piece/2,logout/0,pause/2]).
+
+attach(Token) ->
+    ws:send(bert:encodebuf(bert:tuple(
+        bert:atom('client'),
+        bert:tuple(bert:atom("session_attach"), Token)))).
+
+join(Game) ->
+    ws:send(bert:encodebuf(bert:tuple(
+        bert:atom('client'),
+        bert:tuple(bert:atom("join_game"), Game)))).
+
+logout() ->
+    ws:send(bert:encodebuf(bert:tuple(
+        bert:atom('client'),
+        bert:tuple(bert:atom("logout"))))).
+
+take(GameId,Place) ->
+    ws:send(bert:encodebuf(bert:tuple(
+        bert:atom('client'),
+        bert:tuple(bert:atom("game_action"),GameId,
+            bert:atom("okey_take"),[{pile,Place}])))).
+
+discard(GameId, Color, Value) ->
+    ws:send(bert:encodebuf(bert:tuple(
+        bert:atom('client'),
+        bert:tuple(
+            bert:atom("game_action"),
+            GameId,
+            bert:atom("okey_discard"),
+            [{tile, bert:tuple(bert:atom("OkeyPiece"), Color, Value)}])))).
+
+player_info(User,GameModule) ->
+    ws:send(bert:encodebuf(bert:tuple(
+        bert:atom('client'),
+        bert:tuple(bert:atom("get_player_stats"),bert:binary(User),bert:atom(GameModule))))).
+
+piece(Color,Value) ->
+    bert:tuple(bert:atom("OkeyPiece"), Color, Value).
+
+reveal(GameId, Color, Value, Hand) ->
+    ws:send(bert:encodebuf(bert:tuple(
+        bert:atom('client'),
+        bert:tuple(
+            bert:atom("game_action"),
+            GameId,
+            bert:atom("okey_reveal"),
+            [{discarded, bert:tuple(bert:atom("OkeyPiece"), Color, Value)},
+             {hand, Hand}])))).
+
+pause(GameId, Action) ->
+    ws:send(bert:encodebuf(bert:tuple(
+        bert:atom("client"),
+        bert:tuple(
+            bert:atom("pause_game"),
+            bert:atom("undefined"),
+            GameId,
+            bert:atom(Action))))).