Sha256: c6e3243d26ab92949015758f0a3be3b416d1ca05f7e8dd35b7f261163b1f5f13

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

require_relative 'dealing_pile'
require_relative 'dealt_pile'
require_relative 'column_pile'
require_relative 'foundation_pile'

require_relative '../model/game'

class KlondikeSolitaire
  module View
    class Tableau
      include Glimmer::UI::CustomWidget
      
      option :game
      
      body {
        canvas {
          background :dark_green
          
          # row 1
          @foundation_piles = Model::PlayingCard::SUITS.each_with_index.map do |suit, i|
            foundation_pile(pile_x: i*(PLAYING_CARD_WIDTH + PLAYING_CARD_SPACING), pile_y: 0, game: game, suit: suit)
          end
          @dealt_pile = dealt_pile(pile_x: 5*(PLAYING_CARD_WIDTH + PLAYING_CARD_SPACING), pile_y: 0, model: game.dealt_pile)
          @dealing_pile = dealing_pile(pile_x: 6*(PLAYING_CARD_WIDTH + PLAYING_CARD_SPACING), pile_y: 0, model: game.dealing_pile)
          
          # row 2
          @column_piles = 7.times.map do |n|
            column_pile(pile_x: n*(PLAYING_CARD_WIDTH + PLAYING_CARD_SPACING), pile_y: PLAYING_CARD_HEIGHT + PLAYING_CARD_SPACING, model: game.column_piles[n])
          end
          
          on_mouse_up do |event|
            if @dealing_pile.body_root.include?(event.x, event.y)
              game.dealing_pile.deal!
            end
          end
        }
      }
  
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
glimmer-dsl-swt-4.20.13.8 samples/elaborate/klondike_solitaire/view/tableau.rb