Sha256: c353178293663d398c554050cf13779733711c14de275551d0e5ec82c3ad1e9b

Contents?: true

Size: 1.36 KB

Versions: 35

Compression:

Stored size: 1.36 KB

Contents

require_relative '../model/dealt_pile'

require_relative 'empty_playing_card'
require_relative 'playing_card'

class KlondikeSolitaire
  module View
    class DealtPile
      include Glimmer::UI::CustomShape
      
      options :pile_x, :pile_y, :model
      
      after_body do
        observe(model, 'playing_cards.empty?') do |empty_value|
          if empty_value
            body_root.shapes.to_a.dup.each { |shape| shape.dispose(redraw: false) }
            body_root.content {
              empty_playing_card
            }
          else
            body_root.shapes.each { |shape| shape.drag_source = false }
            before_last_shape = body_root.shapes[-2] && body_root.shapes[-2].get_data('custom_shape').respond_to?(:model) && body_root.shapes[-2].get_data('custom_shape').model
            if model.playing_cards.last == before_last_shape # happens when dragging card out
              body_root.shapes.last.dispose
              body_root.shapes.last.drag_source = true
            else
              body_root.content {
                playing_card(model: model.playing_cards.last, parent_pile: self) {
                  drag_source true
                }
              }
            end
          end
        end
      end
  
      body {
        shape(pile_x, pile_y) {
          empty_playing_card
        }
      }
                                
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
glimmer-dsl-swt-4.24.4.2 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.4.1 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.4.0 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.3.2 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.3.1 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.3.0 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.2.3 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.2.2 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.2.1 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.2.0 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.1.3 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.1.2 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.1.1 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.1.0 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.0.2 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.0.1 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.24.0.0 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.23.1.5 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.23.1.4 samples/elaborate/klondike_solitaire/view/dealt_pile.rb
glimmer-dsl-swt-4.23.1.3 samples/elaborate/klondike_solitaire/view/dealt_pile.rb