# frozen_string_literal: true require_relative "../config/app" Hanami.app.prepare roles_repo = ClashDeckGenerator2::Services::CardRolesRepository.new puts roles_repo.roles_for("Knight").inspect puts roles_repo.roles_for("Hog Rider").inspect puts roles_repo.has_role?("Hog Rider", "win_condition") puts roles_repo.has_role?("Tesla", "win_condition") puts roles_repo.meta.inspect cards = repo.all cards = cards.last if cards.is_a?(Array) && cards.first == :cards rarity_counts = cards.group_by(&:rarity).transform_values(&:size) puts "RARITY COUNTS:" rarity_counts.each do |rarity, count| puts "#{rarity}: #{count}" end puts "========================================" puts "POOL DIAGNOSTICS" puts "========================================" puts "Total cards: #{cards.size}" puts "Spells: #{cards.count { |c| c.type == 'spell' }}" puts "Troops: #{cards.count { |c| c.type == 'troop' }}" puts "Buildings: #{cards.count { |c| c.type == 'building' }}" puts "Champions: #{cards.count { |c| c.rarity == 'champion' }}" puts "Heroes: #{cards.count { |c| c.rarity == 'hero' }}" puts "Evolutions: #{cards.count { |c| c.rarity == 'evolution' }}" puts "Avg elixir all cards: #{(cards.sum(&:elixir_cost).to_f / cards.size).round(2)}" puts "========================================" generator = ClashDeckGenerator2::Services::DeckGenerator.new(cards_repo: repo) deck = generator.call deck = deck.last if deck.is_a?(Array) && deck.first == :cards puts "========================================" puts "DECK GENERATED SUCCESSFULLY" puts "========================================" deck.each_with_index do |card, index| puts "#{index + 1}. #{card.name} | #{card.type} | #{card.rarity} | #{card.elixir_cost}" end puts "----------------------------------------" puts "Cards count: #{deck.size}" names = deck.map(&:name) puts "Unique cards count: #{names.uniq.size}" avg_elixir = deck.sum(&:elixir_cost).to_f / deck.size puts "Average elixir: #{avg_elixir.round(2)}" puts "Spells count: #{deck.count { |c| c.type == 'spell' }}" puts "Troops count: #{deck.count { |c| c.type == 'troop' }}" puts "Buildings count: #{deck.count { |c| c.type == 'building' }}" puts "Champions count: #{deck.count { |c| c.rarity == 'champion' }}" puts "Heroes count: #{deck.count { |c| c.rarity == 'hero' }}" puts "Evolutions count: #{deck.count { |c| c.rarity == 'evolution' }}" puts "========================================"