void LoginState::attemptLogin(const std::string &ipAddress, const std::string &playerName) { int ret; net::NetData *netdata = NULL; // First, save our login settings, overwriting the previous file std::ofstream lastLoginSettings((bundlePath() + "login.cfg").c_str(), std::ios::trunc); lastLoginSettings << "IPaddress="<<ipAddress<<std::endl; lastLoginSettings << "PlayerName="<<playerName<<std::endl; lastLoginSettings << "PlayerColor="<<pGui->getColorSliderValue()<<std::endl; lastLoginSettings.close(); // attempt to actually connect to the server netdata = new net::NetData(net::NetData::CLIENT); pGui->addConsoleItem("Connecting to server " + ipAddress); ret = netdata->connect(ipAddress, 50740); switch(ret) { case 1: // success pGui->addConsoleItem("Connection to server succeeded"); break; default: std::stringstream out; out << ret; pGui->addConsoleItem("Connection to server failed: " + out.str()); return; } netdata->me.nick = playerName; netdata->me.color = getColorFromPseudoHue(pGui->getColorSliderValue()); netdata->me.changed = true; // Mark this info for transmission netdata->sendChanges(); // Send changes without waiting! // Then, login. getStateManager()->loginToGame(netdata); }
Paused::Paused(StateManager& stateManager, State* parent) : State(stateManager, parent) { ResourceManager& resMngr = getStateManager().getSharedContext().resourceManager; const sf::Vector2u& windowSize = getStateManager().getSharedContext().window.getSize(); background.setTexture(resMngr.getTexture(Textures::ID::Paused)); background.setTextureRect(sf::IntRect(2, 2, 32, 32)); background.setScale ( windowSize.x / background.getLocalBounds().width, windowSize.y / background.getLocalBounds().width ); constexpr int cw = 491; constexpr int ch = 295; float cx = (windowSize.x / 2) - (cw / 2); float cy = (windowSize.y / 2) - (ch / 2); constexpr int mc = 75; int mx = cx + 45; int my = cy + 43; pausedMenu = std::make_unique<GraphicMenu> ( std::list<GraphicMenu::MenuOptionData> { GraphicMenu::MenuOptionData { [&] () { getStateManager().getSharedContext().soundPlayer.play ( Sounds::ID::MenuClose ); getStateManager().setCurrentState ( States::ID::Starting, Transitions::ID::CircleOpen, sf::milliseconds(500) ); }, sf::Vector2f(mx, my), sf::IntRect(259, 427, 255, 54), sf::IntRect(2, 427, 255, 54) }, GraphicMenu::MenuOptionData { [&] () { getStateManager().getSharedContext().soundPlayer.play ( Sounds::ID::MenuOpen ); getStateManager().setCurrentState ( States::ID::RestartConfirm, Transitions::ID::CircleClose, sf::milliseconds(500) ); }, sf::Vector2f(mx, my + (mc * 1)), sf::IntRect(304, 367, 300, 58), sf::IntRect(2, 367, 300, 58) }, GraphicMenu::MenuOptionData { [&] () { getStateManager().getSharedContext().soundPlayer.play ( Sounds::ID::MenuOpen ); getStateManager().setCurrentState ( States::ID::QuitConfirm, Transitions::ID::CircleClose, sf::milliseconds(500) ); }, sf::Vector2f(mx, my + (mc * 2)), sf::IntRect(173, 299, 169, 66), sf::IntRect(2, 299, 169, 66) } }, GraphicMenu::MenuContainerData { sf::Vector2f(cx, cy), sf::IntRect(36, 2, 491, 295) }, resMngr.getTexture(Textures::ID::Paused) ); if (!snapShot.create(windowSize.x, windowSize.y)) { throw std::runtime_error("Can not create Paused Render Texture"); } }
VertexArrayImpl *ContextGL::createVertexArray(const gl::VertexArrayState &data) { return new VertexArrayGL(data, getFunctions(), getStateManager()); }
BufferImpl *ContextGL::createBuffer(const gl::BufferState &state) { return new BufferGL(state, getFunctions(), getStateManager()); }
RenderbufferImpl *ContextGL::createRenderbuffer(const gl::RenderbufferState &state) { return new RenderbufferGL(state, getFunctions(), getWorkaroundsGL(), getStateManager(), mRenderer->getBlitter(), getNativeTextureCaps()); }
ProgramImpl *ContextGL::createProgram(const gl::ProgramState &data) { return new ProgramGL(data, getFunctions(), getWorkaroundsGL(), getStateManager(), getExtensions().pathRendering, mRenderer); }
TransformFeedbackImpl *ContextGL::createTransformFeedback(const gl::TransformFeedbackState &state) { return new TransformFeedbackGL(state, getFunctions(), getStateManager()); }
BufferImpl *ContextGL::createBuffer() { return new BufferGL(getFunctions(), getStateManager()); }
QueryImpl *ContextGL::createQuery(GLenum type) { return new QueryGL(type, getFunctions(), getStateManager()); }
TextureImpl *ContextGL::createTexture(const gl::TextureState &state) { return new TextureGL(state, getFunctions(), getWorkaroundsGL(), getStateManager(), mRenderer->getBlitter()); }
RenderbufferImpl *ContextGL::createRenderbuffer() { return new RenderbufferGL(getFunctions(), getWorkaroundsGL(), getStateManager(), getNativeTextureCaps()); }
FramebufferImpl *ContextGL::createFramebuffer(const gl::FramebufferState &data) { return new FramebufferGL(data, getFunctions(), getStateManager(), getWorkaroundsGL(), mRenderer->getBlitter(), false); }
void StateGame::goToPause(EventDetails * evDetails) { getStateManager()->switchTo(StateType::Pause); }
void StateGame::goToMainMenu(EventDetails * evDetails) { getStateManager()->switchTo(StateType::MainMenu); }
void StateGame::draw() { mWorld.render(*(getStateManager()->getStateContext()->mWindow->getRenderWindow())); }
StateGame::~StateGame() { EventManager* evManager = getStateManager()->getStateContext()->mEventManager; evManager->removeCallback(StateType::Game, "KeyEscape"); evManager->removeCallback(StateType::Game, "KeyP"); }