Sha256: 18bd59df7d6c77830321acd8aaaa5b6c6ce3987265941a17ca507f19d6b044ca

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents


require_relative "../Core/Ile.rb"

require_relative "../UI/CaseUI.rb"
require "gtk3"
require "cairo"


##
# Auteur:: Brabant Mano
# Version:: 0.1
# Date:: 09/04/2020
#
#Cette classe permet d'afficher une ile de la grille
class IleUI < CaseUI

  private_class_method :new

  ##
  #Ce constructeur permet de créer un nouveau afficheur d'ile
  #param::
  # * ile L'ile à afficher
  # * taille La taille d'une case (40 par defaut)
  def IleUI.creer(ile, taille = 40)
    new(ile, taille)
  end

  #:nodoc:
  def initialize(ile, taille)
    super(ile, taille)
  end
  #:doc:

  ##
  #Cette méthode permet de dessiner l'ile
  #param::
  # * window La fenetre sur laquelle l'ile va etre afficher
  def draw(window)

    super(window)

    cr = window.create_cairo_context

    positionY = @taille * @casee.posY() + @taille/2
    positionX = @taille * @casee.posX() + @taille/2

    cr.set_source_rgb(255, 255, 255)
    cr.circle(positionY, positionX, @taille/2)
    cr.fill()

    choixCouleur(cr)

    cr.circle(positionY, positionX, @taille/2-1)

    if(@casee.getCapaciteResiduelle() <= 0)
      cr.fill()
      cr.set_source_rgb(255, 255, 255)
    else
      cr.stroke()
    end

    text = @casee.valeur.to_s()

    cr.select_font_face "Serif", Cairo::FONT_SLANT_NORMAL, Cairo::FONT_WEIGHT_NORMAL
    cr.set_font_size @taille/2

    width = cr.text_extents(text).width
    height = cr.text_extents(text).height #Centrer le texte

    cr.move_to(positionY - width/2, positionX + height/2)
    cr.show_text(text)

  end


  private def choixCouleur(cr)

    couleur = Couleur::NOIR
    couleur = Couleur::VERT if @casee.estDernierIle()
    couleur = Couleur::ROUGE if @casee.getCapaciteResiduelle() < 0

    cr.set_source_rgb(couleur.rouge, couleur.vert, couleur.bleu)

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
Hashiparmentier-0.4.0 lib/Hashiparmentier/UI/IleUI.rb