# !arch/unix/bin/ruby # server.rb # First included in Project 13 # Creates the Server to host a Game. require 'socket' require 'code/code.rb' require 'code/proxyplayer.rb' class GameServer def initialize(admin, server) @admin = admin puts "Server is ready." while(session = server.accept) register_thread = register_players(session) start_thread = Thread.new{wait_for_start} end end def register_players(session) mesg = session.gets document = Document.new mesg proxyplayer = ProxyPlayer.new(document.root.attributes['name'], session) if @admin.register_player(proxyplayer) session.puts "" STDOUT.puts "Player #{proxyplayer.player_name} registered." else session.puts "" STDOUT.puts "Player #{proxyplayer.player_name} tried to register, but was rejected." end end def wait_for_start while(ref = STDIN.readline) ref.chomp! if ref == "Start Game" battle_count, banned, playerstates = @admin.run_war STDOUT.puts "War ended in #{battle_count} battles." banned.each{|banned| STDOUT.puts "#{banned.name}: #{banned.status}"} playerstates.each{|playerstate| STDOUT.puts "#{playerstate.name}: #{playerstate.score}" } end end end end admin = Administrator.new() server = TCPServer.new(8080) game = GameServer.new(admin, server)