diff --git a/app/controllers/pets_controller.rb b/app/controllers/pets_controller.rb index e4a2046e..2d6c65e5 100644 --- a/app/controllers/pets_controller.rb +++ b/app/controllers/pets_controller.rb @@ -4,26 +4,22 @@ class PetsController < ApplicationController rescue_from Pet::DownloadError, :with => :pet_download_error def load - if params[:name] == '!' - redirect_to roulette_path - else - raise Pet::PetNotFound unless params[:name] - @pet = Pet.load( - params[:name], - :item_scope => Item.includes(:translations), - :timeout => 1 - ) - points = contribute(current_user, @pet) + raise Pet::PetNotFound unless params[:name] + @pet = Pet.load( + params[:name], + :item_scope => Item.includes(:translations), + :timeout => 1 + ) + points = contribute(current_user, @pet) + + respond_to do |format| + format.html do + path = destination + @pet.wardrobe_query + redirect_to path + end - respond_to do |format| - format.html do - path = destination + @pet.wardrobe_query - redirect_to path - end - - format.json do - render :json => {:points => points, :query => @pet.wardrobe_query} - end + format.json do + render :json => {:points => points, :query => @pet.wardrobe_query} end end end diff --git a/app/controllers/roulettes_controller.rb b/app/controllers/roulettes_controller.rb deleted file mode 100644 index 10017255..00000000 --- a/app/controllers/roulettes_controller.rb +++ /dev/null @@ -1,6 +0,0 @@ -class RoulettesController < ApplicationController - def new - @roulette = Roulette.new - redirect_to wardrobe_path(:anchor => @roulette.to_query) - end -end diff --git a/app/models/roulette.rb b/app/models/roulette.rb deleted file mode 100644 index 04c4ab66..00000000 --- a/app/models/roulette.rb +++ /dev/null @@ -1,74 +0,0 @@ -class Roulette - attr_accessor :pet_type, :pet_state, :item_ids - - def initialize - # Choose a random pet type, and get a random state - @pet_type = PetType.offset(rand(PetType.count)).first # random pet type - states = @pet_type.pet_states - @pet_state = states.offset(rand(states.count)).first - fitting_swf_assets = SwfAsset.object_assets.fitting_body_id(@pet_type.body_id) - - # Keep going until we have all zones occupied. Find a random SWF asset for - # a given unoccupied zone, then look up its item to see if it affects or - # restricts zones we've already used. If so, try again. If not, add it to - # the list. - unoccupied_zone_ids = Zone.all.map(&:id) - swf_asset_count_by_zone_id = fitting_swf_assets.count(:group => :zone_id) - swf_asset_count_by_zone_id.default = 0 - @item_ids = [] - while !unoccupied_zone_ids.empty? - zone_id = unoccupied_zone_ids.slice!(rand(unoccupied_zone_ids.count)) - swf_asset_count = swf_asset_count_by_zone_id[zone_id] - if swf_asset_count > 0 - used_swf_asset_ids = [] - first_asset = true - found_item = false - while !found_item && used_swf_asset_ids.size < swf_asset_count - base = fitting_swf_assets - unless first_asset - first_asset = false - base = base.where(fitting_swf_assets.arel_table[:id].not_in(used_swf_asset_ids)) - end - swf_asset = base. - where(:zone_id => zone_id). - offset(rand(swf_asset_count)). - includes(:object_asset_relationships => :item). - first - used_swf_asset_ids.push(swf_asset.id) - swf_asset.object_asset_relationships.each do |rel| - item = rel.item - if item.species_support_ids.empty? || item.species_support_ids.include?(@pet_type.species_id) - pass = true - item.affected_zones.each do |zone| - checked_zone_id = zone.id - next if checked_zone_id == zone_id - if i = unoccupied_zone_ids.find_index(zone_id) - unoccupied_zone_ids.delete zone_id - else - # This zone is already occupied, so this item is no good. - pass = false - break - end - end - if pass - found_item = true - @item_ids << item.id - break - end - end - end - break if found_item - end - end - end - end - - def to_query - { - :color => @pet_type.color_id, - :species => @pet_type.species_id, - :state => @pet_state.id, - :objects => @item_ids - }.to_query - end -end diff --git a/config/routes.rb b/config/routes.rb index 3563ac62..36e6fd25 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -17,8 +17,6 @@ OpenneoImpressItems::Application.routes.draw do get '/pet_states/:pet_state_id/swf_assets.json' => 'swf_assets#index', :as => :pet_state_swf_assets get '/species/:species_id/color/:color_id/pet_type.json' => 'pet_types#show' - get '/roulette' => 'roulettes#new', :as => :roulette - resources :contributions, :only => [:index] resources :items, :only => [:index, :show] do collection do