Tak, to jest fragment mojego kodu. Poniżej wklejam większą jego część:
////////////////////////
//klasa MyText
//////////////////////
class MyText
{
public:
void initText(sf::RenderWindow *tm, std::string nameFont, sf::Vector2f tempPosition, unsigned int size = 12);
void setColorText(sf::Color color);
void drawText();
void setPositionText(sf::Vector2f tempPosition);
void setSize(unsigned int size) noexcept;
void setStyleText(sf::Text::Style style);
void setText(sf::String);
sf::String getText();
unsigned int getSize();
MyText();
virtual ~MyText();
protected:
sf::Font font;
sf::Text text;
private:
sf::RenderWindow *renderText;
StringTransform trans;
unsigned int sizeText;
};
////////////////////////
//klasa Button
//////////////////////
class Button : public Object
{
enum class enuAlignmentText
enum class enuAlignmentPicture
public:
enum class enuButtonStatus
void initButton(std::string name, sf::RenderWindow *tempWindow, AppTexture *tempResurces, int startFrame);
void setPicture(float tWidth, float tHight, int frame);
void setButtonBox(Object::sCoordinate temp, ObjectBox::enuTypeBox tTypeBox, float radius = 0);
void changePositionButton(Object::sCoordinate temp, float radius = 0);
void setVisiblyButton(bool visibly) noexcept;
void setActivedButton(bool activ) noexcept;
void setText(sf::String tText, string tFont, int size, sf::Color color = sf::Color::Black);
void isTextButton(bool textIs) noexcept;
void isPictureButton(bool pictureIS) noexcept;
Button::enuButtonStatus getButtonStatus() noexcept;
void toBeNormal() noexcept;
bool mouseOver(sf::Vector2f vec);
bool mouseClick(sf::Vector2f vec);
virtual void drawEx() override;
virtual void update() override;
Button();
~Button();
protected:
private:
int offset;
bool isVisible;
bool isText;
bool isPicture;
enuButtonStatus buttonStatus;
enuButtonStatus oldButtonStatus;
enuAlignmentText aligmText;
enuAlignmentPicture aligmPicture;
int numberFirstFrame; //przypisany pierwszej klatce dla satusu normal
int actualFrames;
sf::String buttoText;
ObjectBox box;
MyText txt;
ObjectSimple Picture;
sf::Vector2f calculatePositionText(sf::String tText, int size); //funkcja automatycznie przelicza pozycję w kontrolce button
};
//realizacja tylko funkcje gdzie jest tekst
void Button::drawEx()
{
if (isVisible == true)
{
objectWindow->draw(arrayVortex, renderStates);
if (isText == true)
{
txt.drawText();
}
if (isPicture == true)
{
Picture.drawEx();
}
}
}
void Button::setText(sf::String tText, string tFont, int size, sf::Color color)
{
sf::Vector2f tempPosition;
tempPosition = calculatePositionText(tText, size);
txt.initText(objectWindow, tFont, tempPosition, size);
txt.setPositionText(tempPosition);
txt.setText(tText);
txt.setColorText(color);
}
////////////////////////
//klasa Menu
//////////////////////
class GameMenu
{
enum class enOrientationMenu
public:
void setButton(const Button &btns);
void setOffset(int offX = 0, int offY = 0) noexcept;
void setIsBackgraound(bool is);
void setBackgraound(std::string name, sf::RenderWindow *tempWindow, AppTexture *tempResurces, Object::sCoordinate temp, int frame);
void changeOrientation(GameMenu::enOrientationMenu orientation) noexcept;
void setPositonMenu(sf::Vector2f pos) noexcept;
int whitchButtonPress();
bool mouseOver(sf::Vector2f vec);
bool mouseClick(sf::Vector2f vec);
void drawMenu();
void updateMenu();
GameMenu();
virtual ~GameMenu();
protected:
private:
int offsetX;
int offsetY;
int numberButtons;
int indexButtonPressed;
sf::Vector2f positionMenu;
bool isBackgraound;
vector <unique_ptr<Button>> arrayButtons;
ObjectSimple Backgraound;
GameMenu::enOrientationMenu orientationMenu;
};
//realizacja tylko funkcje gdzie jest tekst
void GameMenu::setButton(const Button &btns)
{
arrayButtons.push_back(std::make_unique<Button>(btns));
numberButtons = numberButtons + 1;
}
void GameMenu::drawMenu()
{
int i;
if (numberButtons !=0)
{
if (isBackgraound == true)
{
Backgraound.drawEx();
}
i = 0;
for (i; i < numberButtons; i++)
{
arrayButtons[i]->drawEx();
}
}
}
////////////////////////
//klasa AppMainWindow
//////////////////////
class AppMainWindow
{
public:
void initAppMainWindow(sf::RenderWindow *tempWindow, AppTexture *tempMenu, AppTexture *tempResurces);
void appDrawWindow();
void update(float delta);
void onEvent(sf::Event event);
AppMainWindow();
~AppMainWindow();
protected:
private:
sf::RenderWindow *objectWindow;
AppTexture *TexObject;
AppTexture *TexMenu;
vector <ObjectSimple> box;
int numberBox;
GameMenu mainMenu;
};
//realizacja tylko funkcje gdzie jest tekst
void AppMainWindow::initAppMainWindow(sf::RenderWindow *tempWindow, AppTexture *tempMenu, AppTexture *tempResurces)
{
sf::Vector2f pos;
Object::sCoordinate temp; //struktura przechowująca dane pozycji i wymiaru
Button btn;
objectWindow = tempWindow;
TexObject = tempResurces;
TexMenu = tempMenu;
createBox();
pos.x = 20;
pos.y = 5;
mainMenu.setPositonMenu(pos);
temp.position.x = 396;
temp.position.y = 5;
temp.width = 96;
temp.height = 24;
btn.initButton("p", tempWindow, tempMenu, 8);
btn.setButtonBox(temp, ObjectBox::enuTypeBox::enSquareBox);
btn.isTextButton(true);
btn.setText("Start", "dane/Tahoma.ttf", 14);
mainMenu.setButton(btn);
}