Update summon_transformer.rb

This should fix the transformer so that we properly capture summons and subaura summons
This commit is contained in:
Justin Edmund 2025-02-12 23:12:52 -08:00
parent 412a99a6c7
commit 68a17ae7c8

View file

@ -40,54 +40,56 @@ module Granblue
def transform def transform
Rails.logger.info "[TRANSFORM] Starting SummonTransformer#transform" Rails.logger.info "[TRANSFORM] Starting SummonTransformer#transform"
# Validate that input data is a Hash
unless data.is_a?(Hash) unless data.is_a?(Hash)
Rails.logger.error "[TRANSFORM] Invalid summon data structure" Rails.logger.error "[TRANSFORM] Invalid summon data structure"
Rails.logger.error "[TRANSFORM] Data class: #{data.class}" Rails.logger.error "[TRANSFORM] Data class: #{data.class}"
return [] return []
end end
summons = [] # Determine the maximum index from the keys (assumed to be numeric strings).
# Process each summon in the data max_index = data.keys.map(&:to_i).max || 0
data.each_value do |summon_data| # Pre-allocate an array so that key "1" ends up at index 0, etc.
summons = Array.new(max_index)
# Process keys sorted numerically.
data.keys.sort_by(&:to_i).each do |key|
summon_data = data[key]
Rails.logger.debug "[TRANSFORM] Processing summon: #{summon_data['master']['name'] if summon_data['master']}" Rails.logger.debug "[TRANSFORM] Processing summon: #{summon_data['master']['name'] if summon_data['master']}"
# Extract master and parameter data
master, param = get_master_param(summon_data) master, param = get_master_param(summon_data)
unless master && param unless master && param
Rails.logger.debug "[TRANSFORM] Skipping summon - missing master or param data" Rails.logger.debug "[TRANSFORM] Skipping summon - missing master or param data"
next next
end end
# Build base summon hash with required attributes # Build the base summon hash.
summon = { summon = {
name: master['name'], # Summon's display name name: master['name'],
id: master['id'], # Unique identifier id: master['id'],
uncap: param['evolution'].to_i # Current uncap level uncap: param['evolution'].to_i
} }
Rails.logger.debug "[TRANSFORM] Base summon data: #{summon}" # Calculate and add transcendence level.
level = param['level'].to_i
summon[:transcend] = calculate_transcendence_level(level)
# Add transcendence level for highly uncapped summons # Mark quick summon status if this summon matches quick_summon_id.
if summon[:uncap] > 5
level = param['level'].to_i
trans = calculate_transcendence_level(level)
summon[:transcend] = trans
Rails.logger.debug "[TRANSFORM] Added transcendence level: #{trans}"
end
# Mark quick summon status if this summon matches quick_summon_id
if @quick_summon_id && param['id'].to_s == @quick_summon_id.to_s if @quick_summon_id && param['id'].to_s == @quick_summon_id.to_s
summon[:qs] = true summon[:qs] = true
Rails.logger.debug "[TRANSFORM] Marked as quick summon"
end end
summons << summon # Include subaura (sub_skill) information if present.
if summon_data['sub_skill'].is_a?(Hash) && summon_data['sub_skill']['name']
summon[:sub_aura] = summon_data['sub_skill']['name']
end
# Place the summon in the proper 0-indexed slot.
summons[key.to_i - 1] = summon
Rails.logger.info "[TRANSFORM] Successfully processed summon #{summon[:name]}" Rails.logger.info "[TRANSFORM] Successfully processed summon #{summon[:name]}"
end end
Rails.logger.info "[TRANSFORM] Completed processing #{summons.length} summons" Rails.logger.info "[TRANSFORM] Completed processing #{summons.compact.length} summons"
summons summons.compact
end end
private private