Witam otóż mam problem obecnie robię menu do gry i kiedy w pliku zmieniam z okna na fullscreen wszystko ładnie działa ale kiedy tylko zmieniam w menu z okna na fullscreen to automatycznie moja gra zaczyna się robić szybsza :( (chodzenie skakanie i tym podobne) ma ktoś może pomysł o co może chodzić ?
Poniżej daję kod do .cpp i .h proszę o szybką pomoc :(
#include "MainMenu.h"
void MainMenu::NewGame()
{
sound.stop();
states->push(new LoadingScreen(window, states));
}
void MainMenu::LoadGame()
{
sound.stop();
states->push(new LoadingScreen(window, states));
}
void MainMenu::Settings()
{
Options = true;
}
void MainMenu::Extras()
{
}
void MainMenu::QuitGame()
{
MainMenu::window->close();
}
void MainMenu::Back()
{
Options = false;
}
void MainMenu::SetWindowState()
{
if (WindowState == 0)
{
window->create(VideoMode(1280, 720), "Black 'N' White", Style::Close);
}
if (WindowState == 1)
{
window->create(VideoMode(1280, 720), "Black 'N' White", Style::None);
}
if (WindowState == 2)
{
window->create(VideoMode(1280, 720), "Black 'N' White", Style::Fullscreen);
}
}
MainMenu::MainMenu(RenderWindow* window, stack<State*>* states) : State(window,states)
{
WindowState = 0;
Options = false;
size = 3600;
for (int i = 0; i < size; i++)
{
rain.insert(rain.end(), Rain());
}
StateB = 1;
c = 0;
CanFade = false;
Octin.loadFromFile("Stuff/Fonts/octin stencil rg.ttf");
Bgt.loadFromFile("Stuff/Images/BackGround1.png");
Bg.setTexture(Bgt);
Bg.setPosition(0, 0);
Bg.setColor(Color(155,155,155,155));
txt = new TexT(window->getSize().x/2,window->getSize().y/8,Octin, Color(255, 255, 255, 255), "Black 'N' White", 48);
SoundTrack.loadFromFile("Stuff/Audio/SoundTrack1.wav");
ButtonHover.loadFromFile("Stuff/Audio/ButtonHover1.wav");
ButtonClick.loadFromFile("Stuff/Audio/ButtonClick1.wav");
Hover.setBuffer(ButtonHover);
Click.setBuffer(ButtonClick);
Hover.setVolume(40);
sound.setBuffer(SoundTrack);
sound.play();
sound.setLoop(true);
ButtonOnWindowX = window->getSize().x / 8;
BPx = window->getSize().x / 8;
//Menu
b1 = new Button1(BPx, window->getSize().y / 2-80,"New Game", 1,StateB); buttons.push_back(b1);
b1 = new Button1(BPx, window->getSize().y / 2-40,"Load Game", 2,StateB); buttons.push_back(b1);
b1 = new Button1(BPx, window->getSize().y / 2,"Settings", 3, StateB); buttons.push_back(b1);
b1 = new Button1(BPx, window->getSize().y / 2+40,"Extras", 4, StateB); buttons.push_back(b1);
b1 = new Button1(BPx, window->getSize().y / 2+80,"Quit Game", 5, StateB); buttons.push_back(b1);
//Settings
b1v2 = new Button1(BPx, window->getSize().y / 2 - 80, "< Back", 1, StateB); buttons2.push_back(b1v2);
b1v2 = new Button1(BPx, window->getSize().y / 2 - 40, "Resolution", 2, StateB); buttons2.push_back(b1v2);
b1v2 = new Button1(BPx, window->getSize().y / 2, "Windowed", 3, StateB); buttons2.push_back(b1v2);
b1v2 = new Button1(BPx, window->getSize().y / 2 + 40, "Music Valume", 4, StateB); buttons2.push_back(b1v2);
b1v2 = new Button1(BPx, window->getSize().y / 2 + 80, "Audio Valume", 5, StateB); buttons2.push_back(b1v2);
Fade.setPosition(Vector2f(0.0f, 0.0f));
Fade.setSize(Vector2f(window->getSize().x,window->getSize().y));
}
MainMenu::~MainMenu()
{
for(auto& b1 : buttons)
delete b1;
}
void MainMenu::EndState()
{
}
void MainMenu::Collisions()
{
}
void MainMenu::Events(Event ev)
{
if (ev.type == Event::KeyReleased)
{
if (Keyboard::Escape == ev.key.code)
{
}
if (Keyboard::W == ev.key.code || Keyboard::Up == ev.key.code)
{
StateB--;
Hover.play();
}
if (Keyboard::S == ev.key.code || Keyboard::Down == ev.key.code)
{
StateB++;
Hover.play();
}
if(Options == false)
{
for (auto& b1 : buttons)
{
if (Keyboard::Enter == ev.key.code && b1->CanClick)
{
Click.play();
switch (StateB)
{
case 1:
CanFade = true;
Action = 1;
break;
case 2:
CanFade = true;
Action = 2;
break;
case 3:
Change = true;
break;
case 4:
CanFade = true;
Action = 4;
break;
case 5:
CanFade = true;
Action = 5;
break;
default:
break;
}
}
}
}
else
{
for (auto& b1v2 : buttons2)
{
if (Keyboard::Enter == ev.key.code && b1v2->CanClick)
{
Click.play();
switch (StateB)
{
case 1:
Change = 1;
break;
case 2:
Action = 2;
break;
case 3:
Action = 3;
break;
case 4:
Action = 4;
break;
case 5:
Action = 5;
break;
default:
break;
}
}
}
}
}
}
void MainMenu::UpdateKeys(const float& dt)
{
}
void MainMenu::Update(const float& dt)
{
Fade.setFillColor(Color(0, 0, 0, c));
if (Change)
{
if (BPx < -160)
{
if (Options == false)
{
StateB = 1;
Action = 3;
}
else
{
StateB = 3;
Action = 1;
}
Change = false;
}
else
{
BPx-= 10;
}
}
else
{
if (BPx < ButtonOnWindowX)
{
BPx += 10;
}
}
if (Options == false)
{
if (c > 254)
{
switch (Action)
{
case 1:
NewGame();
break;
case 2:
LoadGame();
break;
case 4:
Extras();
break;
case 5:
QuitGame();
break;
default:
break;
}
}
if (Action == 3)
{
Settings();
Action = 0;
}
}
else
{
switch (Action)
{
case 1:
Back();
break;
case 2:
LoadGame();
break;
case 3:
if (WindowState < 2)
WindowState++;
else
WindowState = 0;
SetWindowState();
Action = 0;
break;
case 4:
Extras();
break;
case 5:
QuitGame();
break;
default:
break;
}
}
if (CanFade)
{
c++;
}
else
{
if (c > 0)
{
c--;
}
}
if (StateB > 5)
{
StateB = 1;
}
if (StateB < 1)
{
StateB = 5;
}
for (int i = 0; i < size; i++)
{
rain[i].Update(0,0, dt);
}
if (Options == false)
{
for (auto& b1 : buttons)
{
b1->UpdatePos(BPx, dt);
b1->Update(StateB, dt);
}
}
else
{
for (auto& b1v2 : buttons2)
{
b1v2->UpdatePos(BPx,dt);
b1v2->Update(StateB, dt);
}
}
}
void MainMenu::Render(RenderTarget* target)
{
target->draw(Bg);
for (int i = 0; i < size; i++)
{
rain[i].Render(target);
}
if (Options == false)
{
for (auto& b1 : buttons)
{
b1->Render(target);
}
}
else
{
for (auto& b1v2 : buttons2)
{
b1v2->Render(target);
}
}
txt->Render(target);
target->draw(Fade);
}
#pragma once
#include "State.h"
#include "LoadingScreen.h"
#include "Button1.h"
#include "Rain.h"
class MainMenu : public State
{
private:
int WindowState;
int BPx;
int ButtonOnWindowX;
int size;
TexT* txt;
vector<Rain> rain;
Texture Bgt;
Sprite Bg;
int c;
int Action;
RectangleShape Fade;
SoundBuffer SoundTrack;
Sound sound;
SoundBuffer ButtonHover;
Sound Hover;
SoundBuffer ButtonClick;
Sound Click;
RectangleShape Background;
Button1* b1;
Button1* b1v2;
vector<Button1*> buttons;
vector<Button1*> buttons2;
bool Change;
bool Options;
bool CanFade;
int WithOne;
int StateB;
//Menu
void NewGame();
void LoadGame();
void Settings();
void Extras();
void QuitGame();
//Settings
void Back();
void SetWindowState();
protected:
Font Octin;
public:
MainMenu(RenderWindow* window, stack<State*>* states);
virtual ~MainMenu();
void EndState();
void Collisions();
void Events(Event ev);
void UpdateKeys(const float& dt);
void Update(const float& dt);
void Render(RenderTarget* target = nullptr);
};