summaryrefslogtreecommitdiff
path: root/lib/scheduling/roundrobin.rb
blob: fbb291e63a2c69dcbf80003e156224ac09df7b77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
module Scheduling
	class RoundRobin
		include Rails.application.routes.url_helpers

		def initialize(tournament_stage)
			@tournament_stage = tournament_stage
		end

		def create_matches
			num_teams = (tournament.players.count/tournament.min_players_per_team).floor
			num_matches = Float(num_teams/2)*(num_teams-1)
		end

		def create_round_array
			#round robin should look like this.
			#NOTE: I DO NOT KNOW IF THIS IS HOW TO PROPERLY POPULATE THE ROUND ROBIN ARRAY WITH TEAMS
			@team_pairs = Array.new(num_matches)
			for i in 0..@match.teams.size
				@team_pairs.push(@match.teams[i])
				#if there is an odd number of teams, add a dummy for byes
				if @match.teams.size % 2 != 0 && i == @match.teams.size-1
					dummy = Team.create
					@team_pairs.push(dummy)
				end
			end
		end

		#this is called when a round has completed
		def rotate
			#remove first team
			hold = @team_pairs.shift
			#rotate by 1 element
			@team_pairs.rotate!
			#place first team the front of the array
			@team_pairs.unshift(hold)
			
		end

		def mother_fuckin_winner
			scores = {}
			@teams_pairs.each do |team|
				scores[team] = team.matches.
					where(:tournament_stage => tournament_stage).
					collect{|match|match.winner==team}
			end
			weiner = scores.index(scores.max)
			scores[weiner]
		end

		def match_finished(match)
			#declare winner of match, and store that somehow
			rotate
			return "totes worked\n"
		end

		def graph(current_user)
			
		end
	end
end