OSDN Git Service

Implemented a new command: %%FORK
[shogi-server/shogi-server.git] / shogi_server / buoy.rb
index c46c575..f189402 100644 (file)
@@ -10,10 +10,12 @@ module ShogiServer
     attr_reader :moves
     attr_reader :owner
     attr_reader :count
+    attr_reader :sente_time
+    attr_reader :gote_time
 
-    def initialize(game_name, moves, owner, count)
+    def initialize(game_name, moves, owner, count, sente_time, gote_time)
       raise "owner name is required" if owner && !owner.instance_of?(String)
-      @game_name, @moves, @owner, @count = game_name, moves, owner, count
+      @game_name, @moves, @owner, @count, @sente_time, @gote_time = game_name, moves, owner, count, sente_time, gote_time
     end
 
     def decrement_count
@@ -21,16 +23,18 @@ module ShogiServer
     end
 
     def ==(rhs)
-      return (@game_name == rhs.game_name && 
-              @moves == rhs.moves &&
-              @owner == rhs.owner &&
-              @count == rhs.count)
+      return (@game_name  == rhs.game_name &&
+              @moves      == rhs.moves &&
+              @owner      == rhs.owner &&
+              @count      == rhs.count &&
+              @sente_time == rhs.sente_time &&
+              @gote_time  == rhs.gote_time)
     end
   end
 
   class NilBuoyGame < BuoyGame
     def initialize
-      super(nil, nil, nil, 0)
+      super(nil, nil, nil, 0, nil, nil)
     end
   end
 
@@ -62,9 +66,11 @@ module ShogiServer
         if @db.root?(buoy_game.game_name)
           # error
         else
-          hash = {'moves' => buoy_game.moves,
-                  'owner' => buoy_game.owner,
-                  'count' => buoy_game.count}
+          hash = {'moves'      => buoy_game.moves,
+                  'owner'      => buoy_game.owner,
+                  'count'      => buoy_game.count,
+                  'sente_time' => buoy_game.sente_time,
+                  'gote_time'  => buoy_game.gote_time}
           @db[buoy_game.game_name] = hash
         end
       end
@@ -73,9 +79,11 @@ module ShogiServer
     def update_game(buoy_game)
       @db.transaction do
         if @db.root?(buoy_game.game_name)
-          hash = {'moves' => buoy_game.moves,
-                  'owner' => buoy_game.owner,
-                  'count' => buoy_game.count}
+          hash = {'moves'     => buoy_game.moves,
+                  'owner'     => buoy_game.owner,
+                  'count'     => buoy_game.count,
+                  'sene_time' => buoy_game.sente_time,
+                  'gote_time' => buoy_game.gote_time}
           @db[buoy_game.game_name] = hash
         else
           # error
@@ -93,10 +101,12 @@ module ShogiServer
       @db.transaction(true) do
         hash = @db[game_name]
         if hash
-          moves = hash['moves']
-          owner = hash['owner']
-          count = hash['count'].to_i
-          return BuoyGame.new(game_name, moves, owner, count)
+          moves      = hash['moves']
+          owner      = hash['owner']
+          count      = hash['count'].to_i
+          sente_time = hash['sente_time'] ? hash['sente_time'].to_i : nil
+          gote_time  = hash['gote_time']  ? hash['gote_time'].to_i  : nil
+          return BuoyGame.new(game_name, moves, owner, count, sente_time, gote_time)
         else
           return NilBuoyGame.new
         end