forked from OpenNeo/impress
Emi Matchu
e0b5382c3f
I think there's no call sites for these anymore, so now I can start repurposing these methods for the new API endpoints I'm planning! :3 Now, `SwfAsset#image_url` approximately matches Impress 2020 logic: use the thumbnail PNG from the manifest if one exists, or the Impress 2020 converter for canvas movies, or the old AWS copy generated by gnash if necessary, or return nil.
59 lines
1.6 KiB
Ruby
59 lines
1.6 KiB
Ruby
class AltStyle < ApplicationRecord
|
|
belongs_to :species
|
|
belongs_to :color
|
|
|
|
has_many :parent_swf_asset_relationships, as: :parent
|
|
has_many :swf_assets, through: :parent_swf_asset_relationships
|
|
has_many :contributions, as: :contributed, inverse_of: :contributed
|
|
|
|
SERIES_ID_RANGES = {
|
|
nostalgic: (87249..87503)
|
|
}
|
|
|
|
def name
|
|
I18n.translate('pet_types.human_name', color_human_name: color.human_name,
|
|
species_human_name: species.human_name)
|
|
end
|
|
|
|
def series_name
|
|
if SERIES_ID_RANGES[:nostalgic].include?(id)
|
|
"Nostalgic"
|
|
else
|
|
"???"
|
|
end
|
|
end
|
|
|
|
def adjective_name
|
|
"#{series_name} #{color.human_name}"
|
|
end
|
|
|
|
def thumbnail_url
|
|
# HACK: Just assume this is a Nostalgic Alt Style, and that the thumbnail
|
|
# is named reliably!
|
|
"https://images.neopets.com/items/nostalgic_" +
|
|
"#{color.name.gsub(/\s+/, '').downcase}_#{species.name.downcase}.gif"
|
|
end
|
|
|
|
def preview_image_url
|
|
swf_asset = swf_assets.first
|
|
return nil if swf_asset.nil?
|
|
|
|
swf_asset.image_url
|
|
end
|
|
|
|
def biology=(biology)
|
|
# TODO: This is very similar to what `PetState` does, but like… much much
|
|
# more compact? Idk if I'm missing something, or if I was just that much
|
|
# more clueless back when I wrote it, lol 😅
|
|
self.swf_assets = biology.values.map do |asset_data|
|
|
SwfAsset.from_biology_data(self.body_id, asset_data)
|
|
end
|
|
end
|
|
|
|
# For convenience in the console!
|
|
def self.find_by_name(color_name, species_name)
|
|
color = Color.find_by_name(color_name)
|
|
species = Species.find_by_name(species_name)
|
|
where(color_id: color, species_id: species).first
|
|
end
|
|
end
|