[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR...
From: |
Hankin Chick |
Subject: |
[netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR... |
Date: |
Sat, 15 Nov 2003 08:16:35 -0500 |
CVSROOT: /cvsroot/netpanzer
Module name: netpanzer
Branch:
Changes by: Hankin Chick <address@hidden> 03/11/15 08:16:35
Modified files:
src/NetPanzer/Views/MainMenu/Multi: IRCLobbyView.cpp
IRCLobbyView.hpp
Log message:
scroll bar for server list
Patches:
Index: netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.cpp
diff -u netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.cpp:1.7
netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.cpp:1.8
--- netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.cpp:1.7 Fri Nov
14 06:27:08 2003
+++ netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.cpp Sat Nov
15 08:16:34 2003
@@ -42,6 +42,7 @@
setAllowResize(false);
setAllowMove(false);
setVisible(false);
+ topViewableItem=0;
moveTo(iXY(bodyTextRect.max.x-400, bodyTextRect.min.y + 200));
@@ -55,6 +56,23 @@
cInputField* input = addInputField(iXY(4, chat_y), &szChat, "", true);
input->setReturnAction(chatReturnPressed);
+ server_list_end_y=lobby_view_height-(Surface::getFontHeight()*6);
+ chat_list_end_y=server_list_end_y+(Surface::getFontHeight()*4);
+ server_list_end_x=(getClientRect().getSizeX()-12);
+
+ iXY size(12, 12);
+
+ iXY pos(getClientRect().getSizeX() - size.x, 0);
+ upButton.setLabel("-");
+ upButton.setBounds(iRect(pos, pos + size));
+ add(&upButton);
+
+ pos = iXY(getClientRect().getSizeX() - size.x, server_list_end_y-size.y);
+ downButton.setLabel("+");
+ downButton.setBounds(iRect(pos, pos + size));
+ add(&downButton);
+
+
// XXX ugly ugly ugly
if(!lobby_view)
lobby_view = this;
@@ -71,10 +89,7 @@
int y=0;
int disp_server_upto=0;
- int server_list_end_y=lobby_view_height-(Surface::getFontHeight()*6);
- int chat_list_end_y=server_list_end_y+(Surface::getFontHeight()*4);
-// XXX todo: scrollbar for large list of servers
if(lobby_connection == 0 || !lobby_connection->isConnected()) {
clientArea.bltString(iXY(0,0),"Not connected to lobby", Color::white);
View::doDraw(viewArea, clientArea);
@@ -86,12 +101,17 @@
GameServerList::iterator i;
GameServerList* serverlist = lobby_connection->game_servers;
disp_server_upto=0;
+ int upto=0;
for(i=serverlist->begin(); i!=serverlist->end(); i++) {
+ if(upto>=topViewableItem) { break; }
+ upto++;
+ }
+ for(; i!=serverlist->end(); i++) {
const GameServer* server = &(*i);
std::stringstream playerstr;
playerstr << server->playercount << "/" << server->max_players;
-
+
clientArea.bltString(iXY(0,y),server->user.c_str(), Color::white);
clientArea.bltString(iXY(140,y),playerstr.str().c_str(),
Color::white);
clientArea.bltString(iXY(200,y),server->map.c_str(), Color::white);
@@ -125,19 +145,45 @@
int IRCLobbyView::lMouseUp(const iXY &down_pos,const iXY &up_pos)
{
assert(this!=0);
- int idx_down=down_pos.y/Surface::getFontHeight();
- int idx=up_pos.y/Surface::getFontHeight();
- if(idx>=0 && idx_down==idx && idx<total_displayed_servers) {
- const GameServer *server=displayed_servers[idx];
- assert(server!=0);
-
- // connect to this game
- std::stringstream server_host;
- server_host << server->host.c_str() <<":"<<server->port;
- IPAddressView::szServer.setString(server_host.str().c_str());
+ int fontHeight=Surface::getFontHeight();
+ int down_y=(down_pos.y-2);
+ int up_y=(up_pos.y-2);
+ if(up_pos.y<0 || down_pos.y<0) { return View::lMouseUp(down_pos,up_pos); }
+ int idx_down=down_y/fontHeight;
+ int idx=up_y/fontHeight;
+
+ if(up_pos.x<server_list_end_x && down_pos.x<server_list_end_x) {
+ if(idx_down==idx && idx<total_displayed_servers) {
+ const GameServer *server=displayed_servers[idx];
+ assert(server!=0);
+
+ // connect to this game
+ std::stringstream server_host;
+ server_host << server->host.c_str() <<":"<<server->port;
+ IPAddressView::szServer.setString(server_host.str().c_str());
+ }
}
return View::lMouseUp(down_pos,up_pos);
}
+
+
+void IRCLobbyView::actionPerformed(mMouseEvent me)
+{
+ if (me.getID() == mMouseEvent::MOUSE_EVENT_CLICKED) {
+ if (me.getSource(upButton)) {
+ if (--topViewableItem < 0) {
+ topViewableItem = 0;
+ }
+ } else if (me.getSource(downButton)) {
+ int max_size=lobby_connection->game_servers->size()-1;
+ ++topViewableItem;
+ if (max_size>0 && topViewableItem >= max_size) {
+ topViewableItem = max_size;
+ }
+ }
+ }
+}
+
void IRCLobbyView::buttonRefresh()
{
Index: netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.hpp
diff -u netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.hpp:1.5
netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.hpp:1.6
--- netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.hpp:1.5 Thu Nov
13 08:12:20 2003
+++ netpanzer/src/NetPanzer/Views/MainMenu/Multi/IRCLobbyView.hpp Sat Nov
15 08:16:34 2003
@@ -24,6 +24,7 @@
#include "View.hpp"
#include "Surface.hpp"
#include "GameServer.hpp"
+#include "Button.hpp"
//---------------------------------------------------------------------------
class IRCLobbyView : public View
@@ -36,11 +37,16 @@
virtual void doDraw(Surface &windowArea, Surface &clientArea);
virtual int lMouseUp(const iXY &up_pos,const iXY &down_pos);
+ virtual void actionPerformed(mMouseEvent me);
private:
static void buttonRefresh();
static void chatReturnPressed(cInputField* input);
+ int server_list_end_y;
+ int server_list_end_x;
+ int chat_list_end_y;
+ int topViewableItem;
int lobby_view_height;
const GameServer *displayed_servers[64];
int total_displayed_servers;
@@ -48,9 +54,11 @@
std::string error_message;
cInputFieldString szChat;
IRCLobby *lobby_connection;
+
+ Button upButton;
+ Button downButton;
};
extern IRCLobbyView* lobby_view;
#endif
-
- [netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR..., Hankin Chick, 2003/11/08
- [netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR..., Matthias Braun, 2003/11/12
- [netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR..., Hankin Chick, 2003/11/14
- [netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR...,
Hankin Chick <=
- [netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR..., Hankin Chick, 2003/11/15
- [netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR..., Hankin Chick, 2003/11/16
- [netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR..., Hankin Chick, 2003/11/17
- [netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR..., Hankin Chick, 2003/11/19
- [netPanzer-CVS] netpanzer/src/NetPanzer/Views/MainMenu/Multi IR..., Hankin Chick, 2003/11/23