#ifndef LOBBY_HPP_ #define LOBBY_HPP_ #include "base_scene.hpp" #include "service_locator.hpp" #include "packet_type.hpp" #include "config_utility.hpp" #include "surface_manager.hpp" #include "udp_network_utility.hpp" #include "button.hpp" #include "raster_font.hpp" #include #include struct ServerEntry { std::string name; IPaddress address; }; class Lobby : public BaseScene { public: //Public access members Lobby(); ~Lobby(); protected: //Frame loop void FrameStart(); void Update(double delta); void FrameEnd(); void Render(SDL_Surface* const); //Event handlers void MouseMotion(SDL_MouseMotionEvent const&); void MouseButtonDown(SDL_MouseButtonEvent const&); void MouseButtonUp(SDL_MouseButtonEvent const&); void KeyDown(SDL_KeyboardEvent const&); void KeyUp(SDL_KeyboardEvent const&); //utilities void Receive(); void BroadcastNetwork(); void PushServer(BroadcastResponse&); //services ConfigUtility* configUtil = ServiceLocator::Get(); SurfaceManager* surfaceMgr = ServiceLocator::Get(); UDPNetworkUtility* netUtil = ServiceLocator::Get(); //members Button refreshButton; Button joinButton; Button backButton; RasterFont font; SDL_Rect listBox; std::vector serverList; ServerEntry* selectedServer = nullptr; }; #endif