lib/rrschedule.rb in rrschedule-0.2.7 vs lib/rrschedule.rb in rrschedule-0.2.8
- old
+ new
@@ -240,9 +240,22 @@
@gt_ps_avail[@cur_gt].delete(@cur_ps) #this playing surface has now been taken and is not available
@cur_date ||= next_game_date(self.start_date,@cur_rule.wday)
@schedule ||= []
+
+ #if one of the team has already plays at this gamedate, we change rule
+ if @schedule.size>0
+ games_this_date = @schedule.select{|v| v[:gamedate] == @cur_date}
+ if games_this_date.select{|g| [game.team_a,game.team_b].include?(g[:team_a]) || [game.team_a,game.team_b].include?(g[:team_b])}.size >0
+ @cur_rule_index = (@cur_rule_index < @rules.size-1) ? @cur_rule_index+1 : 0
+ @cur_rule = @rules[@cur_rule_index]
+ reset_resource_availability
+ @cur_gt = get_best_gt(game)
+ @cur_ps = get_best_ps(game,@cur_gt)
+ @cur_date = next_game_date(@cur_date+=1,@cur_rule.wday)
+ end
+ end
@schedule << {:team_a => game.team_a, :team_b => game.team_b, :gamedate => @cur_date, :ps => @cur_ps, :gt => @cur_gt}
x = @gt_ps_avail.reject{|k,v| v.empty?}