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

okey button handling in each move

Maxim Sokhatsky 11 лет назад
Родитель
Сommit
b734c08c45

+ 2 - 1
apps/server/include/game_okey.hrl

@@ -155,7 +155,8 @@
 
 -record(okey_next_turn, {
           player                :: 'PlayerId'(),
-          can_challenge = false :: boolean()
+          can_challenge = false :: boolean(),
+          okey_button
           }).
 
 -record(okey_enable, {

+ 13 - 11
apps/server/src/okey/okey_table.erl

@@ -328,7 +328,7 @@ handle_parent_message(start_round, StateName,
          send_to_client_ge(Relay, PlayerId, GameStartedMsg, NewStateData)
      end || #player{id = PlayerId, seat_num = SeatNum} <- find_connected_players(Players)],
     CurSeatNum = DeskState#desk_state.cur_seat,
-    relay_publish_ge(Relay, create_okey_next_turn(CurSeatNum, Players), NewStateData),
+    relay_publish_ge(Relay, create_okey_next_turn(CurSeatNum, Players, false), NewStateData),
     {next_state, ?STATE_PLAYING, NewStateData};
 
 handle_parent_message(show_round_result, StateName,
@@ -855,14 +855,16 @@ handle_desk_events([Event | Events], DeskState, Players, Relay, #okey_state{} =
                 DeskState;
             {next_player, SeatNum, EnableOkey} ->
                 #player{id = PlayerId, user_id = UserId} = get_player_by_seat_num(SeatNum, Players),
-                case EnableOkey of
-                    true -> 
-                        MsgOkey = create_okey_enabled(SeatNum, CurSeatNum, Players),
-                        relay_publish_ge(Relay, MsgOkey, StateData);
-                        %send_to_client_ge(Relay, PlayerId, MsgOkey, StateData);
-                    false -> skip
-                end,
-                Msg = create_okey_next_turn(SeatNum, Players),
+%                case EnableOkey of
+%                    true -> 
+%                        MsgOkey = create_okey_enabled(SeatNum, CurSeatNum, Players),
+%                        relay_publish_ge(Relay, MsgOkey, StateData);
+%                        %send_to_client_ge(Relay, PlayerId, MsgOkey, StateData);
+%                    false ->
+%                        MsgOkey2 = create_okey_disable_okey(SeatNum, CurSeatNum, Players),
+%                        relay_publish_ge(Relay, MsgOkey2, StateData)
+%                end,
+                Msg = create_okey_next_turn(SeatNum, Players, EnableOkey),
                 relay_publish_ge(Relay, Msg, StateData),
                 DeskState#desk_state{cur_seat = SeatNum, state = state_take};
             no_winner_finish ->
@@ -1245,9 +1247,9 @@ create_okey_game_started(SeatNum, DeskState, CurRound,
                        set_timeout = SetTimeout}.
 
 
-create_okey_next_turn(CurSeat, Players) ->
+create_okey_next_turn(CurSeat, Players, OkeyEnabled) ->
     #player{user_id = UserId} = get_player_by_seat_num(CurSeat, Players),
-    #okey_next_turn{player = UserId}.
+    #okey_next_turn{player = UserId, okey_button = OkeyEnabled}.
 
 
 create_player_left(SeatNum, UserInfo, Players) ->

+ 18 - 10
apps/web/priv/static/app/js/okey/okey.js

@@ -114,8 +114,11 @@ function PostLoad()
     scope.apiProvider.on("okey_next_turn", function(x) {
         var e = {detail: x.detail.json, raw: x.detail.bert};
         var player = dec(e.raw).value[0][3][0].value[0][1].value;
+         var enabled = dec(e.raw).value[0][3][2].value[0][1].value;
         for (var playerName in scope.playersMap) scope.playersMap[playerName].unselect();
 
+        updateOkeyButton(player, enabled);
+
         if (scope.playersMap[player].select(), player == scope.user)
         {
             playerTurn = !0;
@@ -235,16 +238,7 @@ function PostLoad()
         var e = {detail: x.detail.json, raw: x.detail.bert};
         var player = dec(e.raw).value[0][3][0].value[0][1].value;
         var enabled = dec(e.raw).value[0][3][1].value[0][1].value;
-        if (enabled) {
-            // $("#Okey").show();
-            $("#Okey").find("rect").attr("fill","red");
-        } else {
-            // $("#Okey").hide();
-            $("#Okey").find("rect").attr("fill","#517ECE");
-            $("#Gabrielo-Discard-Shape").hide();
-            var cards = scope.playersLeftHandsMap[scope.user].cards;
-            if (cards.length) cards[cards.length-1].dragHandler.disable();
-        }
+        updateOkeyButton(player, enabled);
     });
 
     scope.apiProvider.on("okey_round_ended", function(x) {
@@ -316,6 +310,20 @@ function PostLoad()
         }
     });
 
+function updateOkeyButton(player, enabled)
+{
+        if (enabled) {
+            // $("#Okey").show();
+            $("#Okey").find("rect").attr("fill","red");
+        } else {
+            // $("#Okey").hide();
+            $("#Okey").find("rect").attr("fill","#517ECE");
+            $("#Gabrielo-Discard-Shape").hide();
+            var cards = scope.playersLeftHandsMap[scope.user].cards;
+            if (cards.length) cards[cards.length-1].dragHandler.disable();
+        }
+}
+
 function freshGame(x)
 {
     var e = {detail: x.detail.json, raw: x.detail.bert};