Sha256: 673ad6289863ad00a5ff85083f7314803b4872459bd6c5b1f05e30fef44f3279

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

require 'dry-struct'
require 'spy_alley_application/models/acquisition_method/by_confiscation'
require 'spy_alley_application/models/acquisition_method/by_free_gift'
require 'spy_alley_application/models/acquisition_method/by_purchase'
require 'spy_alley_application/types/array_of_equipment'

module SpyAlleyApplication
  module Results
    module Nodes
      class EquipmentGainedNode < Dry::Struct
        @@can_handle_equipment_gained = ::Types.Interface(:handle_equipment_gained)
        attribute :player_id, ::Types::Coercible::Integer
        attribute :equipment, SpyAlleyApplication::Types::ArrayOfEquipment
        attribute :reason, SpyAlleyApplication::Models::AcquisitionMethod::ByConfiscation |
          SpyAlleyApplication::Models::AcquisitionMethod::ByFreeGift |
          SpyAlleyApplication::Models::AcquisitionMethod::ByPurchase

        def accept(visitor, **args)
          @can_handle_equipment_gained.(visitor)
          visitor.handle_equipment_gained(self, args)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
spy_alley_application-0.3.2 lib/spy_alley_application/results/nodes/equipment_gained_node.rb
spy_alley_application-0.3.1 lib/spy_alley_application/results/nodes/equipment_gained_node.rb
spy_alley_application-0.3.0 lib/spy_alley_application/results/nodes/equipment_gained_node.rb