void Button::SetTexture(Resources &res, const string &fileName, State state) { auto &texture = res.GetFile(fileName); if (!texture.Found()) return; vector<char> buf(texture.GetSize()); texture.GetData(buf.data()); sf::Image img; img.loadFromMemory(buf.data(), buf.size()); img.createMaskFromColor(sf::Color::Magenta, 0); switch (state) { case Button::HOVER: mTextureHover.loadFromImage(img); break; case Button::CLICK: mTextureClick.loadFromImage(img); break; default: mTexture.loadFromImage(img); break; } }