X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=shogi_server%2Fgame.rb;h=4d246b94add78c0375d0b01a8c8f3fc3e22a33d5;hb=d168a77d26b0ee995991ee798ef1f675bdb30528;hp=ee90d526bf3e188212590a56b595028841ef4c6e;hpb=457848cef7fa6fa068cb1d28c25119ff85101a6b;p=shogi-server%2Fshogi-server.git diff --git a/shogi_server/game.rb b/shogi_server/game.rb index ee90d52..4d246b9 100644 --- a/shogi_server/game.rb +++ b/shogi_server/game.rb @@ -63,7 +63,10 @@ class Game end - def initialize(game_name, player0, player1, board) + # options may or may not have follwing keys: :sente_time, :gote_time; they + # are used for %%FORK command to set remaining times at the restart. + # + def initialize(game_name, player0, player1, board, options={}) @monitors = Array::new # array of MonitorHandler* @game_name = game_name if (@game_name =~ /-(\d+)-(\d+)$/) @@ -116,6 +119,8 @@ class Game @fh.sync = true @result = nil + @options = options.dup + propose end attr_accessor :game_name, :total_time, :byoyomi, :sente, :gote, :game_id, :board, :current_player, :next_player, :fh, :monitors @@ -307,8 +312,8 @@ class Game @gote.status = "game" @sente.write_safe(sprintf("START:%s\n", @game_id)) @gote.write_safe(sprintf("START:%s\n", @game_id)) - @sente.mytime = @total_time - @gote.mytime = @total_time + @sente.mytime = @options[:sente_time] || @total_time + @gote.mytime = @options[:gote_time] || @total_time @start_time = Time.now end @@ -372,6 +377,13 @@ EOM end def propose_message(sg_flag) + time = @total_time + if @options[:sente_time] && sg_flag == "+" + time = @options[:sente_time] + elsif @options[:gote_time] && sg_flag == "-" + time = @options[:gote_time] + end + str = <