Bonjour,
J'ai un problème très étrange sur la SFML (2.1) avec sf::Color et particulièrement avec les couleurs pré-définis (Cyan, Red, Yellow, etc). Voilà le code :
Const.hpp
#pragma once
const sf::Color selectState = sf::Color::Blue; // Ne fonctionne pas (couleur noir)
const sf::Color test = sf::Color(125, 125, 125); // Fonctionne (couleur marron)
const sf::Color unknowState = sf::Color::Cyan; // Ne fonctionne pas (couleur noir)
const sf::Color alreadyTouchState = sf::Color::Black;
const sf::Color emptyState = sf::Color::Yellow; // Ne fonctionne pas (couleur noir)
const sf::Color boatTouchState = sf::Color::Red; // Ne fonctionne pas (couleur noir)
Case.hpp
#include <SFML\Graphics.hpp>
#include "const.hpp"
class Case
{
public:
Case(void);
~Case(void);
void setPosition(int p_X, int p_Y);
void select();
void unselect();
StateLastHit fire();
sf::RectangleShape const& getSprite() const;
private:
Case::Status _status;
sf::RectangleShape _case;
};
Case.cpp (Les zones avec les sf::Color sont normalement supposé avoir les const défini dans const.hpp)
#include "Case.hpp"
Case::Case(void) : _status(Status::Empty), _case(sf::Vector2f(SIZE_CASE, SIZE_CASE)) {
_case.setFillColor(sf::Color::Cyan); // unknowState
}
Case::~Case(void) {
}
void Case::setPosition(int p_X, int p_Y)
{
_case.setPosition(p_X, p_Y);
}
void Case::select()
{
if(_status == Status::Empty)
_case.setFillColor(sf::Color::Blue); // selectState
else
_case.setFillColor(sf::Color::Black); // alreadyTouchState
}
void Case::unselect()
{
if(_status == Status::Empty)
_case.setFillColor(sf::Color::Cyan); // unknowState
else if(_status == Status::EmptyTouch) // Touch but nothing
_case.setFillColor(emptyState); // emptyState
else // Touch a boat
_case.setFillColor(sf::Color::Red); // boatTouchState
}
StateLastHit Case::fire() {
// Server request here
if(_status == Status::Empty) {
_status = Status::EmptyTouch;
_case.setFillColor(emptyState);
}
return StateLastHit::onSea;
}
sf::RectangleShape const& Case::getSprite() const
{
return _case;
}
En step-by-step le compilateur m'annonce que les const sf::Color sont égales à r = 0, g = 0, b = 0 (donc noir)
PS : Je suis sous Visual Studio 2012