summaryrefslogtreecommitdiff
path: root/lib/sampling/manual.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sampling/manual.rb')
-rw-r--r--lib/sampling/manual.rb62
1 files changed, 62 insertions, 0 deletions
diff --git a/lib/sampling/manual.rb b/lib/sampling/manual.rb
new file mode 100644
index 0000000..853516c
--- /dev/null
+++ b/lib/sampling/manual.rb
@@ -0,0 +1,62 @@
+module Sampling
+ class Manual
+ def self.works_with?(game)
+ return true
+ end
+
+ def self.can_get?(setting_name)
+ return 1
+ end
+
+ def self.uses_remote?
+ return false
+ end
+
+ def self.set_remote_name(user, game, value)
+ raise "This sampling method doesn't use remote usernames."
+ end
+
+ def self.get_remote_name(value)
+ raise "This sampling method doesn't use remote usernames."
+ end
+
+ ####
+
+ def initialize(match)
+ @match = match
+ end
+
+ def start
+ # do nothing
+ end
+
+ def render_user_interaction(user)
+ @tournament = @match.tournament_stage.tournament
+ @current_user = user
+ @stats = @match.stats_from(self.class)
+
+ require 'erb'
+ erb_filename = File.join(__FILE__.sub(/\.rb$/, '.html.erb'))
+ erb = ERB.new(File.read(erb_filename))
+ erb.filename = erb_filename
+ return erb.result(binding).html_safe
+ end
+
+ def handle_user_interaction(user, params)
+ # => Save sampling_params as statistics
+ if (@match.tournament_stage.tournament.hosts.include? user)
+ manual_params = params.require(:manual)
+ winner = Team.find(manual_params[:winner])
+ @match.users.each do |user|
+ Statistic.create(match: @match, user: user,
+ name: "win", value: winner.users.include?(user))
+ @match.stats_from(self.class).reject{|s|s=="win"}.each do |stat|
+ Statistic.create(match: @match, user: user,
+ name: stat, value: manual_params[:statistics][user.id][stat].to_i)
+ end # stats
+ end # users
+ end # permission
+ end # def
+
+ end
+end