Просмотр исходного кода

okey game server return full piles in player_state event; index redraw all piles when you join game

Roman Dayneko 11 лет назад
Родитель
Сommit
774a99c116
2 измененных файлов с 18 добавлено и 6 удалено
  1. 15 1
      apps/face/src/index.erl
  2. 3 5
      apps/server/src/okey/game_okey_ng_table_trn.erl

+ 15 - 1
apps/face/src/index.erl

@@ -193,7 +193,21 @@ event({server, {game_event, _, okey_game_player_state, Args}}) ->
             {_, Tiles} = lists:keyfind(tiles, 1, Args),
             TilesList = [{wf:to_binary([wf:to_list(C)," ",wf:to_list(V)]),{C, V}}|| {_, C, V} <- Tiles],
             redraw_discard_combo(TilesList),
-            put(game_okey_tiles, TilesList);
+            put(game_okey_tiles, TilesList),
+
+            {_, Piles} = lists:keyfind(piles, 1, Args),
+
+            UpdatedPlayers =
+                [
+                 begin
+                     Player = #okey_player{right_pile_combo_id = RightPileComboId} = lists:keyfind(PlayerId, #okey_player.player_id, Players),
+                     ConvertedPile = [{wf:to_binary([wf:to_list(C), " ", wf:to_list(V)]), {C, V}} || {_, C, V} <- Pile],
+                     redraw_tiles(ConvertedPile, #dropdown{id = RightPileComboId}),
+                     Player#okey_player{right_pile = ConvertedPile}
+                 end
+                 || {PlayerId, Pile} <- Piles
+                ],
+            put(okey_players, lists:sort(fun(#okey_player{label_id = E1}, #okey_player{label_id = E2}) -> E1 < E2 end, UpdatedPlayers));
         _ -> 
             ok
     end;

+ 3 - 5
apps/server/src/okey/game_okey_ng_table_trn.erl

@@ -1140,11 +1140,9 @@ create_okey_game_player_state(PlayerId, ?STATE_PLAYING,
     #player{user_id = CurUserId} = get_player_by_seat_num(CurSeatNum, Players),
     Timeout = calc_timeout(TRef),
     F = fun(_, N) ->
-                Pile = case lists:keyfind(N, 1, Discarded) of
-                           {_, []} -> null;
-                           {_, [Tash|_]} -> tash_to_ext(Tash)
-                       end,
-                {Pile, next_seat_num(N)}
+                #player{user_id = UserId} = get_player_by_seat_num(N, Players),
+                {_, Tahes} = lists:keyfind(N, 1, Discarded),
+                {{UserId, [tash_to_ext(Tash) || Tash <- Tahes]}, next_seat_num(N)}
         end,
     {Piles, _} = lists:mapfoldl(F, prev_seat_num(SeatNum), lists:seq(1, ?SEATS_NUM)),
     GameState = statename_to_api_string(DeskStateName),