OSDN Git Service

Enhanced the CSA Login mode to accept a turn preference.
[shogi-server/shogi-server.git] / shogi_server / league.rb
index 9f7a5f3..1207472 100644 (file)
@@ -98,6 +98,31 @@ class League
   def rated_players
     return @persistent.get_players
   end
+
+  # Find a rival for a player.
+  # Return,
+  #   1. symbol :continue for an error case
+  #   2. a rival player instance found
+  #   3. nil if rival not found 
+  #
+  def find_rival(player, game_name)
+    case player.sente
+    when nil # no preference
+      if Login.handicapped_game_name?(game_name)
+        player.write_safe("##[ERROR] Random turn preference is not allowed for handicapped games\n")
+        return :continue
+      end
+      return get_player("game_waiting", game_name, nil, player)
+    when true # rival must be gote
+      return get_player("game_waiting", game_name, false, player) 
+    when false # rival must be sente 
+      return get_player("game_waiting", game_name, true, player) 
+    else
+      write_safe("##[ERROR] bad game option: %s\n" % [my_sente_string])
+      return :continue
+    end
+  end
+
 end # class League
 
 end # ShogiServer