diff --git a/app/models/character.rb b/app/models/character.rb index cd74ab1..a8a610e 100644 --- a/app/models/character.rb +++ b/app/models/character.rb @@ -48,73 +48,4 @@ class Character < ApplicationRecord def display_resource(character) character.name_en end - - # enum rarities: { - # R: 1, - # SR: 2, - # SSR: 3 - # } - - # enum elements: { - # Null: 0, - # Wind: 1, - # Fire: 2, - # Water: 3, - # Earth: 4, - # Dark: 5, - # Light: 6 - # } - - # enum proficiency1s: { - # Sabre: 1, - # Dagger: 2, - # Axe: 3, - # Spear: 4, - # Bow: 5, - # Staff: 6, - # Melee: 7, - # Harp: 8, - # Gun: 9, - # Katana: 10 - # }, _prefix: "proficiency1" - - # enum proficiency2s: { - # None: 0, - # Sabre: 1, - # Dagger: 2, - # Axe: 3, - # Spear: 4, - # Bow: 5, - # Staff: 6, - # Melee: 7, - # Harp: 8, - # Gun: 9, - # Katana: 10, - # }, _default: :None, _prefix: "proficiency2" - - # enum race1s: { - # Unknown: 0, - # Human: 1, - # Erune: 2, - # Draph: 3, - # Harvin: 4, - # Primal: 5 - # }, _prefix: "race1" - - # enum race2s: { - # Unknown: 0, - # Human: 1, - # Erune: 2, - # Draph: 3, - # Harvin: 4, - # Primal: 5, - # None: 6 - # }, _default: :None, _prefix: "race2" - - # enum gender: { - # Unknown: 0, - # Male: 1, - # Female: 2, - # "Male/Female": 3 - # } end diff --git a/app/models/concerns/granblue_enums.rb b/app/models/concerns/granblue_enums.rb new file mode 100644 index 0000000..fe057da --- /dev/null +++ b/app/models/concerns/granblue_enums.rb @@ -0,0 +1,65 @@ +module GranblueEnums + extend ActiveSupport::Concern + + # Define constants for shared enum mappings. + RARITIES = { R: 1, SR: 2, SSR: 3 }.freeze + ELEMENTS = { Null: 0, Wind: 1, Fire: 2, Water: 3, Earth: 4, Dark: 5, Light: 6 }.freeze + GENDERS = { Unknown: 0, Male: 1, Female: 2, "Male/Female": 3 }.freeze + + # Single proficiency enum mapping used for both proficiency1 and proficiency2. + PROFICIENCY = { + None: 0, + Sabre: 1, + Dagger: 2, + Axe: 3, + Spear: 4, + Bow: 5, + Staff: 6, + Melee: 7, + Harp: 8, + Gun: 9, + Katana: 10 + }.freeze + + # Single race enum mapping used for both race1 and race2. + RACES = { + Unknown: 0, + Human: 1, + Erune: 2, + Draph: 3, + Harvin: 4, + Primal: 5, + None: 6 + }.freeze + + included do + # Make sure the model has been loaded with its table before calling enum. + if respond_to?(:column_names) && table_exists? && column_names.include?('rarity') + enum rarity: RARITIES + end + + if respond_to?(:column_names) && table_exists? && column_names.include?('element') + enum element: ELEMENTS + end + + if respond_to?(:column_names) && table_exists? && column_names.include?('gender') + enum gender: GENDERS + end + + if respond_to?(:column_names) && table_exists? && column_names.include?('proficiency1') + enum proficiency1: PROFICIENCY, _prefix: :proficiency1, _default: :None + end + + if respond_to?(:column_names) && table_exists? && column_names.include?('proficiency2') + enum proficiency2: PROFICIENCY, _prefix: :proficiency2, _default: :None + end + + if respond_to?(:column_names) && table_exists? && column_names.include?('race1') + enum race1: RACES, _prefix: :race1, _default: :Unknown + end + + if respond_to?(:column_names) && table_exists? && column_names.include?('race2') + enum race2: RACES, _prefix: :race2, _default: :None + end + end +end