Maelstrom: Added initial layout for the host/join game lobby areas.

https://github.com/libsdl-org/Maelstrom/commit/2e353c4c2abe746bda796c1f333b4ae134890381

From 2e353c4c2abe746bda796c1f333b4ae134890381 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sun, 6 Nov 2011 01:23:29 -0500
Subject: [PATCH] Added initial layout for the host/join game lobby areas. The
 UI switches visible areas based on the current state. The joining player
 requests game info from the hosting player and gets it.

---
 Images/joystick.bmp   | Bin 9270 -> 5238 bytes
 Images/keyboard.bmp   | Bin 9270 -> 5238 bytes
 Images/network.bmp    | Bin 9270 -> 5238 bytes
 Maelstrom_Globals.h   |   2 +
 UI/lobby.xml          | 217 ++++++++++++++++++++++++++++++++++---
 netlogic/Makefile.am  |   2 +
 netlogic/Makefile.in  |  10 +-
 netlogic/game.cpp     |   6 +-
 netlogic/gameinfo.cpp |  94 ++++++++++++++++
 netlogic/gameinfo.h   |  86 +++++++++++++++
 netlogic/lobby.cpp    | 246 ++++++++++++++++++++++++++++++++++--------
 netlogic/lobby.h      |  35 ++++--
 netlogic/packet.h     |  23 ++++
 netlogic/protocol.h   |  52 +++++----
 14 files changed, 686 insertions(+), 87 deletions(-)
 create mode 100644 netlogic/gameinfo.cpp
 create mode 100644 netlogic/gameinfo.h

diff --git a/Images/joystick.bmp b/Images/joystick.bmp
index 07799ef5d5e33490f9aee837e5b6fee8d4f29e45..b8632881c29a766e5896e03c92fa567ca1090024 100644
GIT binary patch
literal 5238
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
I{@?n)0i#)*mjD0&

literal 9270
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
bGlqPxa`oy}^vHJ{FXQD2ygY&DdIJ9kNX|Tl

diff --git a/Images/keyboard.bmp b/Images/keyboard.bmp
index edaeb77008fac7f4ebcf1242036ef90f1378a831..2a887213ceeed9695b3f599ae804bfc16cf8b54b 100644
GIT binary patch
literal 5238
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

literal 9270
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
F{2SNiWl;bC

diff --git a/Images/network.bmp b/Images/network.bmp
index f64701be6337ace18010817371faca1aaf596046..212fed8e5b4c5e9acc501e9388b6398fdd649239 100644
GIT binary patch
literal 5238
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
Q9{P3%8x~dyoBuKYKaPi+QUCw|

literal 9270
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
NhB?*b<o|1({|8)(Wy1gf

diff --git a/Maelstrom_Globals.h b/Maelstrom_Globals.h
index cb643cb4..9d765a5e 100644
--- a/Maelstrom_Globals.h
+++ b/Maelstrom_Globals.h
@@ -42,6 +42,8 @@
 #include "scores.h"
 #include "controls.h"
 
+// Preferences keys
+#define PREFERENCES_HANDLE "Handle"
 
 // The Font Server :)
 extern FontServ *fontserv;
diff --git a/UI/lobby.xml b/UI/lobby.xml
index 56b29c1e..4e3dcd53 100644
--- a/UI/lobby.xml
+++ b/UI/lobby.xml
@@ -1,5 +1,5 @@
 <Dialog delegate="LobbyDialog">
-	<Size w="378" h="266"/>
+	<Size w="466" h="254"/>
 	<Elements>
 		<Icon name="image" id="103">
 			<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT" x="14" y="14"/>
@@ -11,7 +11,7 @@
 		<DialogRadioGroup name="hostOrJoin" bindValue="Network.HostOrJoin">
 			<Elements>
 				<DialogRadioButton name="hostgame" text="Host a game" checked="true" id="1">
-					<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT" x="70" y="36"/>
+					<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT" x="70" y="34"/>
 				</DialogRadioButton>
 				<DialogRadioButton name="joingame" text="Join a game" id="2">
 					<Anchor anchorFrom="LEFT" anchorTo="RIGHT" anchor="hostgame" x="4"/>
@@ -20,30 +20,221 @@
 		</DialogRadioGroup>
 
 		<DialogCheckbox name="globalGame" bindValue="Network.GlobalGame" text="Global">
-			<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT" x="290" y="41"/>
+			<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT" x="290" y="39"/>
 		</DialogCheckbox>
 
-		<Area name="hostpanel">
+		<Area name="gamelist">
 			<Elements>
-				<DialogCheckbox name="player1" text="Player 1" checked="true">
-					<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT" x="14" y ="86"/>
-				</DialogCheckbox>
-				<Image file="Images/keyboard.bmp">
-					<Anchor anchorFrom="LEFT" anchorTo="RIGHT" anchor="player1" x="8"/>
-				</Image>
+				<DialogLabel name="ping_label" text="Ping">
+					<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT" x="398" y="46"/>
+				</DialogLabel>
+
+				<Area name="game1">
+					<Size h="30"/>
+					<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT" x="14" y="71"/>
+					<Elements>
+						<DialogButton name="join" text="Join" default="true">
+							<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT"/>
+						</DialogButton>
+						<DialogLabel name="name" text="This is a name">
+							<Anchor anchorFrom="LEFT" anchorTo="RIGHT" anchor="join" x="16"/>
+						</DialogLabel>
+						<DialogLabel name="host" text="bwg101.corp.pacbell.net">
+							<Anchor anchorFrom="LEFT" anchorTo="RIGHT" anchor="join" x="120"/>
+						</DialogLabel>
+						<DialogLabel name="ping" text="32ms">
+							<Anchor anchorFrom="TOP" anchorTo="BOTTOM" anchor="ping_label" y="12"/>
+						</DialogLabel>
+					</Elements>
+				</Area>
+
+				<Area name="game2">
+					<Size h="30"/>
+					<Anchor anchorFrom="TOPLEFT" anchorTo="BOTTOMLEFT" anchor="game1"/>
+					<Elements>
+						<DialogButton name="join" text="Join">
+							<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT"/>
+						</DialogButton>
+						<DialogLabel name="name" text="This is a name">
+							<Anchor anchorFrom="LEFT" anchorTo="RIGHT" anchor="join" x="16"/>
+						</DialogLabel>
+						<DialogLabel name="host" text="bwg101.corp.pacbell.net">
+							<Anchor anchorFrom="LEFT" anchorTo="RIGHT" anchor="join" x="120"/>
+						</DialogLabel>
+						<DialogLabel name="ping" text="32ms">
+							<Anchor anchorFrom="TOP" anchorTo="BOTTOM" anchor="ping_label" y="42"/>
+						</DialogLabel>
+					</Elements>
+				</Area>
+
+				<Area name="game3">
+					<Size h="30"/>
+					<Anchor anchorFrom="TOPLEFT" anchorTo="BOTTOMLEFT" anchor="game2"/>
+					<Elements>
+						<DialogButton name="join" text="Join">
+							<Anchor anchorFrom="TOPLEFT" anchorTo="TOPLEFT"/>
+						</DialogButton>
+						<DialogLabel name="name" text="This is a name">
+							<Anchor anchorFrom="LEFT" anchorTo="RIGHT" anchor="join" x="16"/>
+						</DialogLabel>
+						<DialogLabel name="host" text="bwg101.corp.pacbell.net">
+							<Anchor anchorFrom="LEFT" anchorTo="RIGHT" anchor="join" x="120"/>
+						</DialogLabel>
+						<DialogLabel name="ping" text="32ms">
+							<Anchor anchorFrom="TOP" anchorTo="BOTTOM" anchor="ping_label" y="72"/>
+						</DialogLabel>
+					</Elements>
+				</Area>
+
+				<Area

(Patch may be truncated, please check the link at the top of this post.)