|
@@ -4,7 +4,7 @@
|
|
|
-include_lib("n2o/include/wf.hrl").
|
|
|
-include("../../server/include/requests.hrl").
|
|
|
-include("../../server/include/settings.hrl").
|
|
|
--jsmacro([take/2,attach/1,join/1,discard/3]).
|
|
|
+-jsmacro([take/2,attach/1,join/1,discard/3,player_info/2]).
|
|
|
|
|
|
join(Game) ->
|
|
|
ws:send(bert:encodebuf(bert:tuple(
|
|
@@ -19,7 +19,8 @@ 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}])))).
|
|
|
+ bert:tuple(bert:atom("game_action"),GameId,
|
|
|
+ bert:atom("okey_take"),[{pile,Place}])))).
|
|
|
|
|
|
discard(GameId, Color, Value) ->
|
|
|
ws:send(bert:encodebuf(bert:tuple(
|
|
@@ -30,28 +31,38 @@ discard(GameId, Color, Value) ->
|
|
|
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))))).
|
|
|
+
|
|
|
redraw_tiles([{Tile, _}| _ ] = TilesList) ->
|
|
|
- wf:update(dddiscard, [#dropdown{id = dddiscard, postback = combo, value = Tile, source = [dddiscard], options = [#option{label = CVBin, value = CVBin} || {CVBin, _} <- TilesList]}]).
|
|
|
+ wf:update(discard_combo,
|
|
|
+ [#dropdown{id = discard_combo, postback = combo,
|
|
|
+ value = Tile, source = [discard_combo],
|
|
|
+ options = [#option{label = CVBin, value = CVBin} || {CVBin, _} <- TilesList]}]).
|
|
|
|
|
|
main() -> #dtl{file="index", bindings=[{title,<<"N2O">>},{body,body()}]}.
|
|
|
|
|
|
body() ->
|
|
|
[ #panel{ id=history },
|
|
|
|
|
|
- #label{ id = player1, body = "Player 1", style = "color=black;"}, #label{ id = player2, body = "Player 2", style = "color=black;"},
|
|
|
- #label{ id = player3, body = "Player 3", style = "color=black;"}, #label{ id = player4, body = "Player 4", style = "color=black;"},
|
|
|
+ #label{ id = player1, body = "Player 1", style = "color=black;"},
|
|
|
+ #label{ id = player2, body = "Player 2", style = "color=black;"},
|
|
|
+ #label{ id = player3, body = "Player 3", style = "color=black;"},
|
|
|
+ #label{ id = player4, body = "Player 4", style = "color=black;"},
|
|
|
#br{},
|
|
|
#button{ id = attach, body = <<"Attach">>, postback = attach},
|
|
|
#button{ id = join, body = <<"Join">>, postback = join},
|
|
|
- #dropdown{ id=ddtake, value="0", postback=combo, source=[ddtake],
|
|
|
+ #dropdown{ id= take_combo, value="0",
|
|
|
options =
|
|
|
[
|
|
|
#option { label= <<"0">>, value= <<"0">> },
|
|
|
#option { label= <<"1">>, value= <<"1">> }
|
|
|
]
|
|
|
},
|
|
|
- #button{ id = take, body = <<"Take">>, postback = take, source = [ddtake]},
|
|
|
- #dropdown{ id=dddiscard, value="2", postback=combo, source=[dddiscard],
|
|
|
+ #button{ id=take, body = <<"Take">>, postback = take, source=[take_combo]},
|
|
|
+ #dropdown{ id=discard_combo, value="2", postback=combo, source=[discard_combo],
|
|
|
options =
|
|
|
[
|
|
|
#option { label= <<"Option 1">>, value= <<"1">> },
|
|
@@ -59,7 +70,8 @@ body() ->
|
|
|
#option { label= <<"Option 3">>, value= <<"3">> }
|
|
|
]
|
|
|
},
|
|
|
- #button{ id = discard, body = <<"Discard">>, postback = discard, source=[dddiscard]}
|
|
|
+ #button{ id = discard, body = <<"Discard">>, postback = discard, source=[discard_combo]},
|
|
|
+ #button{ id = player_info, body = <<"PlayerInfo">>, postback = player_info}
|
|
|
].
|
|
|
|
|
|
event(terminate) -> wf:info("terminate");
|
|
@@ -70,20 +82,20 @@ event(init) ->
|
|
|
ets:insert(globals,{wf:session_id(),GamePid}),
|
|
|
put(game_session, GamePid);
|
|
|
|
|
|
-event(combo) -> wf:info("Combo: ~p",[wf:q(dddiscard)]);
|
|
|
+event(combo) -> wf:info("Combo: ~p",[wf:q(discard_combo)]);
|
|
|
event(join) -> wf:wire(join("1000001"));
|
|
|
+event(take) -> wf:wire(take("1000001", wf:q(take_combo)));
|
|
|
+event(player_info) -> wf:wire(player_info(wf:f("'~s'",["maxim"]),wf:f("'~s'",[game_okey])));
|
|
|
event(attach) ->
|
|
|
Token = auth_server:generate_token(1000001,"maxim"),
|
|
|
wf:wire(attach(wf:f("'~s'",[Token])));
|
|
|
|
|
|
-event(take) -> wf:wire(take("1000001", wf:q(ddtake)));
|
|
|
-
|
|
|
event(discard) ->
|
|
|
TilesList = get(game_okey_tiles),
|
|
|
-% wf:info("dd ~p", [wf:q(dddiscard)]),
|
|
|
- {_, {C, V}} = lists:keyfind(erlang:list_to_binary(wf:q(dddiscard)), 1, TilesList),
|
|
|
+ {_, {C, V}} = lists:keyfind(erlang:list_to_binary(wf:q(discard_combo)), 1, TilesList),
|
|
|
wf:wire(discard("1000001", erlang:integer_to_list(C), erlang:integer_to_list(V)));
|
|
|
|
|
|
+
|
|
|
event({binary,M}) -> {ok,<<"Hello">>};
|
|
|
|
|
|
event({client,Message}) ->
|
|
@@ -93,10 +105,12 @@ event({client,Message}) ->
|
|
|
|
|
|
event({server, {game_event, _, okey_game_started, 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],
|
|
|
+ TilesList = [{erlang:list_to_binary([erlang:integer_to_list(C), " ",
|
|
|
+ erlang:integer_to_list(V)]), {C, V}} || {_, C, V} <- Tiles],
|
|
|
wf:info("tiles ~p", [TilesList]),
|
|
|
put(game_okey_tiles, TilesList),
|
|
|
redraw_tiles(TilesList);
|
|
|
+
|
|
|
event({server, {game_event, _, okey_tile_discarded, Args}}) ->
|
|
|
Im = get(okey_im),
|
|
|
{_, Player} = lists:keyfind(player, 1, Args),
|
|
@@ -104,7 +118,6 @@ event({server, {game_event, _, okey_tile_discarded, Args}}) ->
|
|
|
if
|
|
|
Im == Player ->
|
|
|
{_, {_, C, V}} = lists:keyfind(tile, 1, Args),
|
|
|
-% wf:info("c ~p v ~p", [C, V]),
|
|
|
TilesListOld = get(game_okey_tiles),
|
|
|
TilesList = lists:keydelete({C, V}, 2, TilesListOld),
|
|
|
put(game_okey_tiles, TilesList),
|
|
@@ -112,6 +125,7 @@ event({server, {game_event, _, okey_tile_discarded, Args}}) ->
|
|
|
true ->
|
|
|
ok
|
|
|
end;
|
|
|
+
|
|
|
event({server, {game_event, _, okey_tile_taken, Args}}) ->
|
|
|
Im = get(okey_im),
|
|
|
{_, Player} = lists:keyfind(player, 1, Args),
|
|
@@ -119,7 +133,8 @@ event({server, {game_event, _, okey_tile_taken, Args}}) ->
|
|
|
Im == Player ->
|
|
|
case lists:keyfind(revealed, 1, Args) of
|
|
|
{_, {_, C, V}} ->
|
|
|
- TilesList = [{erlang:list_to_binary([erlang:integer_to_list(C), " ", erlang:integer_to_list(V)]), {C, V}} | get(game_okey_tiles)],
|
|
|
+ TilesList = [{erlang:list_to_binary([erlang:integer_to_list(C), " ",
|
|
|
+ erlang:integer_to_list(V)]), {C, V}} | get(game_okey_tiles)],
|
|
|
put(game_okey_tiles, TilesList),
|
|
|
redraw_tiles(TilesList);
|
|
|
_ ->
|
|
@@ -128,16 +143,19 @@ event({server, {game_event, _, okey_tile_taken, Args}}) ->
|
|
|
true ->
|
|
|
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),
|
|
|
- event({server, {game_event, Game, okey_tile_taken, [{player, get(okey_im)}, {revealed, TileTaken}]}}),
|
|
|
+ event({server, {game_event, Game, okey_tile_taken,
|
|
|
+ [{player, get(okey_im)}, {revealed, TileTaken}]}}),
|
|
|
{_, TileDiscarded} = lists:keyfind(tile_discarded, 1, Args),
|
|
|
- event({server, {game_event, Game, okey_tile_discarded, [{player, get(okey_im)}, {tile, TileDiscarded}]}});
|
|
|
+ event({server, {game_event, Game, okey_tile_discarded,
|
|
|
+ [{player, get(okey_im)}, {tile, TileDiscarded}]}});
|
|
|
+
|
|
|
event({server, {game_event, _, okey_game_info, Args}}) ->
|
|
|
wf:info("okay_game_info ~p", [Args]),
|
|
|
{_, PlayersInfo} = lists:keyfind(players, 1, Args),
|
|
|
-% wf:info("pi ~p", [PlayersInfo]),
|
|
|
Players =
|
|
|
lists:zipwith(
|
|
|
fun(ListId, {PlayerId, PlayerLabel}) ->
|
|
@@ -147,10 +165,8 @@ event({server, {game_event, _, okey_game_info, Args}}) ->
|
|
|
lists:map(
|
|
|
fun
|
|
|
(#'PlayerInfo'{id = Id, robot = true} = P) ->
|
|
|
-% wf:info("pp ~p", [P]),
|
|
|
{Id, <<Id/binary, <<" R ">>/binary>>};
|
|
|
(#'PlayerInfo'{id = Id, robot = false} = P) ->
|
|
|
-% wf:info("pr ~p", [P]),
|
|
|
put(okey_im, Id),
|
|
|
{Id, <<Id/binary, <<" M ">>/binary>>}
|
|
|
end,
|
|
@@ -159,7 +175,9 @@ event({server, {game_event, _, okey_game_info, Args}}) ->
|
|
|
),
|
|
|
wf:info("players ~p", [Players]),
|
|
|
put(okey_players, Players),
|
|
|
- [wf:update(LabelId, [#label{id = LabelId, body = PlayerLabel}]) || {LabelId, _, PlayerLabel} <- Players];
|
|
|
+ [wf:update(LabelId, [#label{id = LabelId, body = PlayerLabel}])
|
|
|
+ || {LabelId, _, PlayerLabel} <- Players];
|
|
|
+
|
|
|
event({server,{game_event, _, okey_next_turn, Args}}) ->
|
|
|
{player, PlayerId} = lists:keyfind(player, 1, Args),
|
|
|
{LabelId, _, _} = lists:keyfind(PlayerId, 2, get(okey_players)),
|
|
@@ -167,8 +185,12 @@ event({server,{game_event, _, okey_next_turn, Args}}) ->
|
|
|
undefined ->
|
|
|
ok;
|
|
|
OldLabelId ->
|
|
|
- wf:wire("document.querySelector('#" ++ erlang:atom_to_list(OldLabelId) ++ "').style.color = \"black\";")
|
|
|
+ wf:wire("document.querySelector('#" ++
|
|
|
+ erlang:atom_to_list(OldLabelId) ++ "').style.color = \"black\";")
|
|
|
end,
|
|
|
- wf:wire("document.querySelector('#" ++ erlang:atom_to_list(LabelId) ++ "').style.color = \"red\";"),
|
|
|
+ wf:wire("document.querySelector('#" ++ erlang:atom_to_list(LabelId)
|
|
|
+ ++ "').style.color = \"red\";"),
|
|
|
+
|
|
|
put(okey_turn_mark, LabelId);
|
|
|
-event(Event) -> ok. % wf:info("Event: ~p", [Event]).
|
|
|
+
|
|
|
+event(Event) -> wf:info("Event: ~p", [Event]).
|