Browse Source

update score in roster online

Maxim Sokhatsky 11 years ago
parent
commit
21c5d25ebe
2 changed files with 13 additions and 1 deletions
  1. 3 0
      apps/server/src/sup/journal.erl
  2. 10 1
      apps/web/src/okey.erl

+ 3 - 0
apps/server/src/sup/journal.erl

@@ -14,6 +14,7 @@ start_link() -> gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
 mypid() -> gen_server:call(?SERVER, mypid).
 clear_history() -> gen_server:cast(?SERVER, clear_history).
 get_history() -> gen_server:call(?SERVER, get_history).
+exit() -> gen_server:call(?SERVER, terminate).
 protocol_event(User,Event,State) -> gen_server:cast(?SERVER, {protocol_event, User, Event, State}).
 series_event(User,Event,State) -> gen_server:cast(?SERVER, {series_event, User, Event, State}).
 reveal_event(User,Event,State) -> gen_server:cast(?SERVER, {reveal_event, User, Event, State}).
@@ -78,7 +79,9 @@ handle_cast({reveal_event, User, Event, GameState}, State) ->
     Skill = case SE#reveal_log.skill of X when is_integer(X) -> X; _ -> 0 end,
     Score = case SE#reveal_log.score of X1 when is_integer(X1) -> X1; _ -> 0 end,
     NewScore = Score+Event#reveal_event.score,
+    wf:send(User,{server,{update_score,NewScore}}),
     kvs:put(SE#reveal_log{skill=Skill+1,score=NewScore}),
+    gas:info(?MODULE, "Reveal Upadtes User Record: ~p ~p", [User,NewScore]),
     case kvs:get(user,User) of
         {ok,U=#user{tokens=Tokens}} ->
             kvs:put(U#user{tokens=game:plist_setkey(score,1,Tokens,{score,NewScore})});

+ 10 - 1
apps/web/src/okey.erl

@@ -215,7 +215,9 @@ event(attach) ->
     spawn(fun() ->
         send_roster(Pid),
         already_online(Pid),
-        wf:send(broadcast,{user_online,User})
+        case kvs:get(user,User#user.id) of
+            {ok,U} -> wf:send(broadcast,{user_online,U});
+             _ -> skip end
     end),
     ok;
 
@@ -450,6 +452,13 @@ event({server,{game_event, _, okey_next_turn, Args}}) ->
 
 event({server,{roster_group,List}}) -> skip;
 event({server,terminate}) -> event(terminate);
+event({server,{update_score,Score}}) -> 
+    User = user(),
+    NewUser = User#user{tokens=game:plist_setkey(score,1,User#user.tokens,{score,Score})},
+    gproc:set_value({p,l,broadcast},{wf:peer(?REQ),NewUser}),
+    wf:info(?MODULE,"User Process Updated Score ~p ~p",[User#user.id,Score]),
+    event({user_online,NewUser}),
+    ok;
 event({register,User}) -> wf:info(?MODULE,"Register: ~p",[User]), kvs:add(User), wf:user(User);
 event({login,User}) -> wf:info(?MODULE,"Login: ~p",[User]), kvs:put(User), wf:user(User), event(init);
 event({counter,Res}) -> Pid = self(), spawn(fun() -> Pid ! {server,{online_number,length(game:online())}} end);