Sha256: 9369f2334d2ddf6814f290e65d6cd4d30f244a4a79828013a19c4cfefabb6cbd

Contents?: true

Size: 947 Bytes

Versions: 3

Compression:

Stored size: 947 Bytes

Contents

# frozen string literal: true

require 'dry-struct'
require 'spy_alley_application/models/game_state/start_of_turn'
require 'spy_alley_application/models/game_state/spy_eliminator'

module SpyAlleyApplication
  module Models
    module GameState
      class ChooseNewSpyIdentity < Dry::Struct
        new_spy_identity_type = ::Types::Array::of(SpyAlleyApplication::Types::Nationality)
          .constrained(size: 2)
        @@can_handle_choose_new_spy_identity =
          ::Types.Interface(:handle_choose_new_spy_identity)

        attribute :name, ::Types::Value('choose_new_spy_identity')
        attribute :seat, ::Types::Coercible::Integer
        attribute :options, new_spy_identity_type
        attribute :parent, StartOfTurn | SpyEliminator

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