Implemented the server list box, still messy

This commit is contained in:
Kayne Ruse
2013-06-13 12:26:27 +10:00
parent 2148c1f13e
commit 843053d307
3 changed files with 72 additions and 8 deletions
+49 -4
View File
@@ -15,6 +15,18 @@ Lobby::Lobby() {
refreshButton.Setup(50, 50, surfaceMgr->Get("button"), surfaceMgr->Get("font"), "Refresh");
joinButton.Setup(50, 100, surfaceMgr->Get("button"), surfaceMgr->Get("font"), "Join");
backButton.Setup(50, 150, surfaceMgr->Get("button"), surfaceMgr->Get("font"), "Back");
font.SetSurface(surfaceMgr->Get("font"));
listBox.x = 280;
listBox.y = 50;
listBox.w = GetScreen()->w - listBox.x - 50;
listBox.h = font.GetCharH();
serverList.push_back({"foo",{0,0}});
serverList.push_back({"bar",{0,0}});
serverList.push_back({"foobar",{0,0}});
BroadcastNetwork();
}
Lobby::~Lobby() {
@@ -43,6 +55,16 @@ void Lobby::Render(SDL_Surface* const screen) {
refreshButton.DrawTo(screen);
joinButton.DrawTo(screen);
backButton.DrawTo(screen);
for (int i = 0; i < serverList.size(); i++) {
if (selectedServer == &serverList[i]) {
//draw the highlight box
SDL_Rect r = listBox;
r.y += i * font.GetCharH();
SDL_FillRect(screen, &r, SDL_MapRGB(screen->format, 255, 127, 39));
}
font.DrawStringTo(serverList[i].name, screen, listBox.x, listBox.y + i * font.GetCharH());
}
}
//-------------------------
@@ -63,14 +85,29 @@ void Lobby::MouseButtonDown(SDL_MouseButtonEvent const& button) {
void Lobby::MouseButtonUp(SDL_MouseButtonEvent const& button) {
if (refreshButton.MouseButtonUp(button) == Button::State::HOVER) {
//ping the server
BroadcastNetwork();
}
if (joinButton.MouseButtonUp(button) == Button::State::HOVER) {
//join a server
else if (joinButton.MouseButtonUp(button) == Button::State::HOVER) {
//TODO: join a server
}
if (backButton.MouseButtonUp(button) == Button::State::HOVER) {
else if (backButton.MouseButtonUp(button) == Button::State::HOVER) {
QuitEvent();
}
else if (
//clicked within bounds TODO: make the damn collision system
button.x > listBox.x &&
button.y > listBox.y &&
button.x < listBox.x + listBox.w &&
button.y < listBox.y + (listBox.h * serverList.size())
)
{
//selecting a server
selectedServer = &serverList[(button.y - listBox.y) / listBox.h];
}
else {
//lose focus on a server
selectedServer = nullptr;
}
}
void Lobby::KeyDown(SDL_KeyboardEvent const& key) {
@@ -84,3 +121,11 @@ void Lobby::KeyDown(SDL_KeyboardEvent const& key) {
void Lobby::KeyUp(SDL_KeyboardEvent const& key) {
//
}
//-------------------------
//Utilities
//-------------------------
void Lobby::BroadcastNetwork() {
//
}