Sha256: e384b6902c7a3a29039961ab94a83ce82fce6600560b0dfacd83388fc04ad551

Contents?: true

Size: 898 Bytes

Versions: 10

Compression:

Stored size: 898 Bytes

Contents

module Baku
  class ComponentMask
    attr_reader :value
    
    @@component_set = Set.new

    class << self
      def record_components(components)
        components.each do |component|
          @@component_set << component
        end
      end
      
      def from_components(components)
        record_components(components)

        mask_value = 0

        @@component_set.each_with_index do |component, index|
          mask_value |= (1 << index) if components.include?(component)
        end

        ComponentMask.new(mask_value)
      end
    end
    
    def initialize(value)
      @value = value
    end

    def add_component(component_class)

    end

    def matches?(other_mask)
      @value & other_mask.value == @value
    end

    def ==(other)
      @value == other.value
    end

    def eql?(other)
      self == other
    end

    def hash
      value
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
baku-0.3.1 lib/baku/component_mask.rb
baku-1.0.0 lib/baku/component_mask.rb
baku-0.3.0 lib/baku/component_mask.rb
baku-0.2.6 lib/baku/component_mask.rb
baku-0.2.5 lib/baku/component_mask.rb
baku-0.2.4 lib/baku/component_mask.rb
baku-0.2.3 lib/baku/component_mask.rb
baku-0.2.2 lib/baku/component_mask.rb
baku-0.2.1 lib/baku/component_mask.rb
baku-0.2.0 lib/baku/component_mask.rb