Sha256: 0a1c37df2d46de2518512612a1f4c85edcecb11d31ac7e50106797b613f7f744

Contents?: true

Size: 939 Bytes

Versions: 3

Compression:

Stored size: 939 Bytes

Contents

# frozen string literal: true

require 'dry-struct'
require 'spy_alley_application/types/coercible_integer_one_to_six'

module SpyAlleyApplication
  module Models
    module GameState
      class ConfiscateMaterials < Dry::Struct
        class ConfiscationTarget < Dry::Struct
          attribute :seat, SpyAlleyApplication::Types::CoercibleIntegerOneToSix
          attribute :equipment, SpyAlleyApplication::Types::ArrayOfEquipment
        end

        @@can_handle_confiscate_materials = ::Types.Interface(:handle_confiscate_materials)

        attribute :name, ::Types::Value('confiscate_materials')
        attribute :seat, SpyAlleyApplication::Types::CoercibleIntegerOneToSix
        attribute :targets, ::Types::Array::of(ConfiscationTarget)

        def accept(visitor, **args)
          @@can_handle_confiscate_materials.(visitor)
          visitor.handle_confiscate_materials(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/models/game_state/confiscate_materials.rb
spy_alley_application-0.3.1 lib/spy_alley_application/models/game_state/confiscate_materials.rb
spy_alley_application-0.3.0 lib/spy_alley_application/models/game_state/confiscate_materials.rb