class PontUI

Auteur:: Brabant Mano
Version:: 0.1
Date:: 09/04/2020

Cette classe permet d'afficher un pont de la grille

Public Class Methods

creer(pont, taille = 40) click to toggle source

Ce constructeur permet de créer un nouveau afficheur de pont

param
  • casee La pont à afficher

  • taille La taille d'une case (40 par defaut)

# File lib/Hashiparmentier/UI/PontUI.rb, line 23
def PontUI.creer(pont, taille = 40)

  new(pont, taille)

end

Public Instance Methods

clickOn() click to toggle source

Cette méthode permet de simuler le clic sur la case

Calls superclass method CaseUI#clickOn
# File lib/Hashiparmentier/UI/PontUI.rb, line 129
def clickOn()

  super()

end
draw(window) click to toggle source

Cette méthode permet de dessiner le pont

param
  • window La fenetre sur laquelle l'ile va etre afficher

Calls superclass method CaseUI#draw
# File lib/Hashiparmentier/UI/PontUI.rb, line 102
def draw(window)

  super(window)

  cr = window.create_cairo_context

  afficheSurbrillance(cr) if @casee.surbrillance

  if(@casee.marque)
    cr.set_source_rgb(1, 0, 0)
  else
    cr.set_source_rgb(@casee.couleurPontCourante.rouge, @casee.couleurPontCourante.vert, @casee.couleurPontCourante.bleu)
  end

  affichePontSimple(cr) if @casee.valeur == 1
  affichePontDouble(cr) if @casee.valeur == 2

end
valeur() click to toggle source

Cette méthode permet de retourner la valeu du pont

# File lib/Hashiparmentier/UI/PontUI.rb, line 123
def valeur
  return @casee.valeur
end

Private Instance Methods

affichePontDouble(cr, largeur = 4, tailleDecalage = 4) click to toggle source
# File lib/Hashiparmentier/UI/PontUI.rb, line 89
        def affichePontDouble(cr, largeur = 4, tailleDecalage = 4)

  calculPosition(4, 4)
  cr.rectangle(@departY - @decalageY, @departX - @decalageX, @tailleY, @tailleX)
  cr.rectangle(@departY + @decalageY, @departX + @decalageX, @tailleY, @tailleX)
  cr.fill()

end
affichePontSimple(cr, largeur = 4, tailleDecalage = 4) click to toggle source
# File lib/Hashiparmentier/UI/PontUI.rb, line 81
        def affichePontSimple(cr, largeur = 4, tailleDecalage = 4)

  calculPosition(4, 4)
  cr.rectangle(@departY, @departX, @tailleY, @tailleX)
  cr.fill()

end
afficheSurbrillance(cr) click to toggle source
# File lib/Hashiparmentier/UI/PontUI.rb, line 38
        def afficheSurbrillance(cr)

  cr.set_source_rgba(1, 0, 0, 0.4)

  calculPosition(@taille/2, 0)
  cr.rectangle(@departY, @departX, @tailleY, @tailleX)
  cr.fill()

end
calculPosition(largeur = 4, tailleDecalage = 4) click to toggle source
# File lib/Hashiparmentier/UI/PontUI.rb, line 49
        def calculPosition(largeur = 4, tailleDecalage = 4)

  @departX = @taille * @casee.posX()
  @departY = @taille * @casee.posY()

  if(@casee.direction == Pont::HORIZONTAL || @casee.directionSurbrillance == Pont::HORIZONTAL)

    @tailleX = largeur
    @tailleY = @taille
    @departX += @tailleY/2 - @tailleX/2
    @decalageY = 0
    @decalageX = tailleDecalage

  elsif(@casee.direction == Pont::VERTICAL || @casee.directionSurbrillance == Pont::VERTICAL)

    @tailleX = @taille
    @tailleY = largeur
    @departY += @tailleX/2 - @tailleY/2
    @decalageY = tailleDecalage
    @decalageX = 0

  else

    @tailleX = 0
    @tailleY = 0

  end


end