Compare commits

..

2 commits

Author SHA1 Message Date
5f2c454423 Actually, not-glitched is more important in item previews than pose
I took this ordering from a specific place on Impress 2020, but I think
that was in a context where the pose mattered more? Here though, I'm
realizing that I'd rather show any known-unglitched pose than the happy
masc or whatever we semi-randomly chose.
2024-09-08 12:08:15 -07:00
0b4d6dc7e6 Oops, remove stray logging 2024-09-08 12:01:16 -07:00

View file

@ -111,7 +111,6 @@ class PetType < ApplicationRecord
# way, it'll be stable, but we'll still get the *vibes* of randomness.
preferred_gender = color.default_gender_presentation ||
(id % 2 == 0 ? :fem : :masc)
puts preferred_gender
# NOTE: If this were only being called on one pet type at a time, it would
# be more efficient to send this as a single query with an `order` part and
@ -123,10 +122,15 @@ class PetType < ApplicationRecord
pet_states.sort_by { |pet_state|
gender = pet_state.female? ? :fem : :masc
[
# We prefer labeled pet states first, because states no one has seen or
# validated are such a wildcard! Then we prefer unglitched, then we
# prefer maximally happy. (Correct sad is better than glitched happy!)
# Then we pick our arbitrary-ish gender, then we pick the latest if all
# else failed and it's an unlabeled free-for-all.
pet_state.mood_id.present? ? -1 : 1, # Prefer mood is labeled
!pet_state.glitched? ? -1 : 1, # Prefer is not glitched
pet_state.mood_id, # Prefer mood is happy, then sad, then sick
gender == preferred_gender ? -1 : 1, # Prefer our "random" gender
!pet_state.glitched? ? -1 : 1, # Prefer is not glitched
-pet_state.id, # Prefer newer pet states
]
}.first