Browse Source

move getting okey_im from game_info to attach event; fix typo in binary concatinate; release player_left, okey_game_player_state events

Roman Dayneko 11 years ago
parent
commit
0d4f63781e
1 changed files with 26 additions and 14 deletions
  1. 26 14
      apps/face/src/index.erl

+ 26 - 14
apps/face/src/index.erl

@@ -144,6 +144,7 @@ event(attach) ->
     wf:session(<<"game_pid">>,GamePid),
     wf:session(<<"game_pid">>,GamePid),
     User = user(),
     User = user(),
     Login = User#user.id,
     Login = User#user.id,
+    put(okey_im, Login),
     wf:info("Session User: ~p",[Login]),
     wf:info("Session User: ~p",[Login]),
     Token = auth_server:generate_token(1000001,Login),
     Token = auth_server:generate_token(1000001,Login),
     wf:wire(attach(wf:f("'~s'",[Token]))),
     wf:wire(attach(wf:f("'~s'",[Token]))),
@@ -169,16 +170,25 @@ event({server, {game_event, _, okey_game_started, Args}}) ->
     {_, Tiles} = lists:keyfind(tiles, 1, Args),
     {_, Tiles} = lists:keyfind(tiles, 1, Args),
     TilesList = [{erlang:list_to_binary([erlang:integer_to_list(C), " ",
     TilesList = [{erlang:list_to_binary([erlang:integer_to_list(C), " ",
                  erlang:integer_to_list(V)]), {C, V}} || {_, C, V} <- Tiles],
                  erlang:integer_to_list(V)]), {C, V}} || {_, C, V} <- Tiles],
-    wf:info("tiles ~p", [TilesList]),
+    %%wf:info("tiles ~p", [TilesList]),
     put(game_okey_tiles, TilesList),
     put(game_okey_tiles, TilesList),
     put(game_okey_pause, resume),
     put(game_okey_pause, resume),
     redraw_tiles(TilesList);
     redraw_tiles(TilesList);
 
 
+event({server, {game_event, _, okey_game_player_state, Args}}) ->
+    {_, Tiles} = lists:keyfind(tiles, 1, Args),
+    TilesList =
+        [
+         {erlang:list_to_binary([erlang:integer_to_list(C), " ", erlang:integer_to_list(V)]), {C, V}}
+         || {_, C, V} <- Tiles
+        ],
+    redraw_tiles(TilesList),
+    put(game_okey_tiles, TilesList);
+
 event({server, {game_event, _, okey_tile_discarded, Args}}) ->
 event({server, {game_event, _, okey_tile_discarded, Args}}) ->
     Im = get(okey_im),
     Im = get(okey_im),
 %%    Players = get(okey_players),
 %%    Players = get(okey_players),
-    {_, Player} = lists:keyfind(player, 1, Args),
-
+    {_, Player} = (catch lists:keyfind(player, 1, Args)),
 %%    wf:info("++++ ~p", [Args]),
 %%    wf:info("++++ ~p", [Args]),
 
 
     if
     if
@@ -220,7 +230,7 @@ event({server,{game_event, Game, okey_turn_timeout, Args}}) ->
             [{player, get(okey_im)}, {tile, TileDiscarded}]}});
             [{player, get(okey_im)}, {tile, TileDiscarded}]}});
 
 
 event({server, {game_event, _, okey_game_info, Args}}) ->
 event({server, {game_event, _, okey_game_info, Args}}) ->
-    wf:info("okay_game_info ~p", [Args]),
+%%    wf:info("okay_game_info ~p", [Args]),
     {_, PlayersInfo} = lists:keyfind(players, 1, Args),
     {_, PlayersInfo} = lists:keyfind(players, 1, Args),
 
 
 %%          [p1right_combo, p2right_combo, p3right_combo],
 %%          [p1right_combo, p2right_combo, p3right_combo],
@@ -236,7 +246,6 @@ event({server, {game_event, _, okey_game_info, Args}}) ->
                 (#'PlayerInfo'{id = Id, robot = true}) ->
                 (#'PlayerInfo'{id = Id, robot = true}) ->
                     {Id, <<Id/binary, <<" R ">>/binary>>};
                     {Id, <<Id/binary, <<" R ">>/binary>>};
                 (#'PlayerInfo'{id = Id, robot = false}) ->
                 (#'PlayerInfo'{id = Id, robot = false}) ->
-                    put(okey_im, Id),
                     {Id, <<Id/binary, <<" M ">>/binary>>}
                     {Id, <<Id/binary, <<" M ">>/binary>>}
             end,
             end,
             PlayersInfo
             PlayersInfo
@@ -247,31 +256,34 @@ event({server, {game_event, _, okey_game_info, Args}}) ->
 %%    put(pkey_game_right, [{p1right_combo, []}, {p2right_combo, []}, {p3right_combo, []}]),
 %%    put(pkey_game_right, [{p1right_combo, []}, {p2right_combo, []}, {p3right_combo, []}]),
     redraw_players(Players);
     redraw_players(Players);
 
 
-%%{game_event,undefined,player_left,
-%%{player,<<"wolves1507751">>},{bot_replaced,false},{human_replaced,true},
-%%{replacement,{PlayerInfo,<<"maxim@synrc.com">>,<<"undefined">>,<<"maxim@synrc.com">>,<<"undefined">>,undefined,0,0,<<"undefined">>,false}}}
-
-event({server,{game_event, _, player_left, {player, OldPlayerId}, _, _, {replacment, #'PlayerInfo'{id = NewPlayerId, robot = IsRobot}}}}) ->
-    wf:info("left ~p replacment ~p is_robot ~p", [OldPlayerId, NewPlayerId, IsRobot]),
+event({server,{game_event, _, player_left, Args}}) ->
+    {_, OldPlayerId} = lists:keyfind(player, 1, Args),
+    wf:info("++++ pi ~p", [lists:keyfind(replacement, 1, Args)]),
+    {_, #'PlayerInfo'{id = NewPlayerId, robot = IsRobot}} = lists:keyfind(replacement, 1, Args),
     OldPlayers = get(okey_players),
     OldPlayers = get(okey_players),
+
+    wf:info("left ~p replacment ~p is_robot ~p old players ~p", [OldPlayerId, NewPlayerId, IsRobot, OldPlayers]),
     {ListId, _, _} = lists:keyfind(OldPlayerId, 2, OldPlayers),
     {ListId, _, _} = lists:keyfind(OldPlayerId, 2, OldPlayers),
+
     PlayerMark = case IsRobot of true -> <<" R ">>; false -> <<" M ">> end,
     PlayerMark = case IsRobot of true -> <<" R ">>; false -> <<" M ">> end,
     NewPlayers = 
     NewPlayers = 
-        lists:sort(fun({E1, _, _, _}, {E2, _, _, _}) -> E1 < E2 end,
-                   [{ListId, NewPlayerId, <<NewPlayerId/binary, PlayerMark>>} | lists:keydelete(OldPlayerId, 2, OldPlayers)]
+        lists:sort(fun({E1, _, _}, {E2, _, _}) -> E1 < E2 end,
+                   [{ListId, NewPlayerId, <<NewPlayerId/binary, PlayerMark/binary>>} | lists:keydelete(OldPlayerId, 2, OldPlayers)]
                   ),
                   ),
+    wf:info("+++++ new players ~p", [NewPlayers]),
     put(okey_players, NewPlayers),
     put(okey_players, NewPlayers),
     redraw_players(NewPlayers);
     redraw_players(NewPlayers);
 
 
 event({server,{game_event, _, okey_next_turn, Args}}) ->
 event({server,{game_event, _, okey_next_turn, Args}}) ->
     {player, PlayerId} = lists:keyfind(player, 1, Args),
     {player, PlayerId} = lists:keyfind(player, 1, Args),
+    wf:info("im ~p next turn players ~p ~p", [get(okey_im), PlayerId, get(okey_players)]),
     {LabelId, _, _} = lists:keyfind(PlayerId, 2, get(okey_players)),
     {LabelId, _, _} = lists:keyfind(PlayerId, 2, get(okey_players)),
     case get(okey_turn_mark) of
     case get(okey_turn_mark) of
         undefined ->
         undefined ->
             ok;
             ok;
         OldLabelId -> 
         OldLabelId -> 
             wf:wire("document.querySelector('#" ++ 
             wf:wire("document.querySelector('#" ++ 
-                erlang:atom_to_list(OldLabelId) ++ "').style.color = \"black\";")
+                     erlang:atom_to_list(OldLabelId) ++ "').style.color = \"black\";")
     end,
     end,
     wf:wire("document.querySelector('#" ++ erlang:atom_to_list(LabelId) 
     wf:wire("document.querySelector('#" ++ erlang:atom_to_list(LabelId) 
         ++ "').style.color = \"red\";"),
         ++ "').style.color = \"red\";"),