author | rubidium |
Mon, 07 Jan 2008 00:19:09 +0000 | |
changeset 8208 | 3d0590aa2124 |
parent 8152 | ab21de45f8ab |
child 8213 | 7bdd7593eb9b |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
4826
6a545d194528
(svn r6750) -Codechange: Juggle around some header includes as they're only used when
Darkvater
parents:
4774
diff
changeset
|
3 |
#ifdef ENABLE_NETWORK |
5469
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5432
diff
changeset
|
4 |
#include "../stdafx.h" |
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5432
diff
changeset
|
5 |
#include "../openttd.h" |
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5432
diff
changeset
|
6 |
#include "../string.h" |
8114
dd6d21dc99c1
(svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents:
8107
diff
changeset
|
7 |
#include "../strings_func.h" |
5469
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5432
diff
changeset
|
8 |
#include "../table/sprites.h" |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
9 |
#include "network.h" |
8140
0d0d8c94f84b
(svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
8131
diff
changeset
|
10 |
#include "../date_func.h" |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
11 |
|
5469
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5432
diff
changeset
|
12 |
#include "../fios.h" |
5475
2e6990a8c7c4
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium
parents:
5469
diff
changeset
|
13 |
#include "table/strings.h" |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
14 |
#include "network_data.h" |
4013
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
15 |
#include "network_client.h" |
4826
6a545d194528
(svn r6750) -Codechange: Juggle around some header includes as they're only used when
Darkvater
parents:
4774
diff
changeset
|
16 |
#include "network_gui.h" |
738
b96ab9e63d22
(svn r1194) Feature: You can now add and remove servers from the server list. Those will be remembered until you delete them by pressing the Delete key.
dominik
parents:
735
diff
changeset
|
17 |
#include "network_gamelist.h" |
5469
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5432
diff
changeset
|
18 |
#include "../gui.h" |
8107
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
19 |
#include "../window_gui.h" |
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
20 |
#include "../textbuf_gui.h" |
5469
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5432
diff
changeset
|
21 |
#include "../variables.h" |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
22 |
#include "network_server.h" |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
23 |
#include "network_udp.h" |
5469
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5432
diff
changeset
|
24 |
#include "../string.h" |
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5432
diff
changeset
|
25 |
#include "../town.h" |
7edfc643abbc
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
rubidium
parents:
5432
diff
changeset
|
26 |
#include "../newgrf.h" |
8131
160939e24ed3
(svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents:
8130
diff
changeset
|
27 |
#include "../functions.h" |
160939e24ed3
(svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents:
8130
diff
changeset
|
28 |
#include "../window_func.h" |
0 | 29 |
|
30 |
#define BGC 5 |
|
31 |
#define BTC 15 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
32 |
|
8107
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
33 |
struct chatquerystr_d : public querystr_d { |
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
34 |
int dest; |
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
35 |
}; |
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
36 |
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(chatquerystr_d)); |
bb7deea89175
(svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents:
8106
diff
changeset
|
37 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
38 |
struct network_d { |
3692 | 39 |
PlayerID company; // select company in network lobby |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
40 |
byte field; // select text-field in start-server and game-listing |
7441
161822860e62
(svn r10888) -Fix (r10886): 64 bits alignment made a struct too big.
rubidium
parents:
7439
diff
changeset
|
41 |
byte widget_id; ///< The widget that has the pop-up input menu |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
42 |
NetworkGameList *server; // selected server in lobby and game-listing |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
43 |
FiosItem *map; // selected map in start-server |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
44 |
}; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
45 |
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(network_d)); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
46 |
|
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
47 |
struct network_ql_d { |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
48 |
network_d n; // see above; general stuff |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
49 |
querystr_d q; // text-input in start-server and game-listing |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
50 |
NetworkGameList **sort_list; // list of games (sorted) |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
51 |
list_d l; // accompanying list-administration |
6248
e4a2ed7e5613
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents:
6247
diff
changeset
|
52 |
}; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
53 |
assert_compile(WINDOW_CUSTOM_SIZE >= sizeof(network_ql_d)); |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
54 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
55 |
/* Global to remember sorting after window has been closed */ |
4542
f42ecc669275
(svn r6372) -Codechange: static, unneeded decleration in headers, superfluous header includes
Darkvater
parents:
4512
diff
changeset
|
56 |
static Listing _ng_sorting; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
57 |
|
4957
44b747809879
(svn r6956) -Feature: Increase the chatbuffer of chat messages. Messages longer than the allocated
Darkvater
parents:
4948
diff
changeset
|
58 |
static char _edit_str_buf[150]; |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
59 |
static bool _chat_tab_completion_active; |
3470
cd704e52732f
(svn r4315) Remove MAX_QUERYSTR_LEN, rather use lengthof() the real thing
tron
parents:
3469
diff
changeset
|
60 |
|
6247 | 61 |
static void ShowNetworkStartServerWindow(); |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
62 |
static void ShowNetworkLobbyWindow(NetworkGameList *ngl); |
4300
c7e43c47a2b9
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
63 |
extern void SwitchMode(int new_mode); |
0 | 64 |
|
65 |
static const StringID _connection_types_dropdown[] = { |
|
675
9be22ffb4625
(svn r1113) -Add: [Network] Added the GUI part for server advertising. When you go
truelight
parents:
670
diff
changeset
|
66 |
STR_NETWORK_LAN_INTERNET, |
9be22ffb4625
(svn r1113) -Add: [Network] Added the GUI part for server advertising. When you go
truelight
parents:
670
diff
changeset
|
67 |
STR_NETWORK_INTERNET_ADVERTISE, |
0 | 68 |
INVALID_STRING_ID |
69 |
}; |
|
70 |
||
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
71 |
static const StringID _lan_internet_types_dropdown[] = { |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
72 |
STR_NETWORK_LAN, |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
73 |
STR_NETWORK_INTERNET, |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
74 |
INVALID_STRING_ID |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
75 |
}; |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
76 |
|
6796
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
77 |
static StringID _language_dropdown[NETLANG_COUNT + 1] = {STR_NULL}; |
6793
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6780
diff
changeset
|
78 |
|
7321
f91bdca345e8
(svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents:
7221
diff
changeset
|
79 |
void SortNetworkLanguages() |
f91bdca345e8
(svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents:
7221
diff
changeset
|
80 |
{ |
6796
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
81 |
/* Init the strings */ |
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
82 |
if (_language_dropdown[0] == STR_NULL) { |
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
83 |
for (int i = 0; i < NETLANG_COUNT; i++) _language_dropdown[i] = STR_NETWORK_LANG_ANY + i; |
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
84 |
_language_dropdown[NETLANG_COUNT] = INVALID_STRING_ID; |
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
85 |
} |
6793
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6780
diff
changeset
|
86 |
|
6796
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
87 |
/* Sort the strings (we don't move 'any' and the 'invalid' one) */ |
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
88 |
qsort(&_language_dropdown[1], NETLANG_COUNT - 1, sizeof(StringID), &StringIDSorter); |
6793
05d91fa1c75c
(svn r10032) -Add: sort the strings in server language dropdown
glx
parents:
6780
diff
changeset
|
89 |
} |
6780
ba49b125d95e
(svn r10017) -Add (FS#790): more languages flags for servers
glx
parents:
6531
diff
changeset
|
90 |
|
211 | 91 |
enum { |
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
92 |
NET_PRC__OFFSET_TOP_WIDGET = 54, |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
93 |
NET_PRC__OFFSET_TOP_WIDGET_COMPANY = 52, |
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
94 |
NET_PRC__SIZE_OF_ROW = 14, |
211 | 95 |
}; |
96 |
||
5035
1bcefcae0ef4
(svn r7077) -Codechange: Send proper message to network window, and handle selection control in
Darkvater
parents:
4957
diff
changeset
|
97 |
/** Update the network new window because a new server is |
1bcefcae0ef4
(svn r7077) -Codechange: Send proper message to network window, and handle selection control in
Darkvater
parents:
4957
diff
changeset
|
98 |
* found on the network. |
1bcefcae0ef4
(svn r7077) -Codechange: Send proper message to network window, and handle selection control in
Darkvater
parents:
4957
diff
changeset
|
99 |
* @param unselect unselect the currently selected item */ |
897
076a21cc614a
(svn r1383) Fix: You can now also delete automatically found servers by pressing "del"
dominik
parents:
893
diff
changeset
|
100 |
void UpdateNetworkGameWindow(bool unselect) |
076a21cc614a
(svn r1383) Fix: You can now also delete automatically found servers by pressing "del"
dominik
parents:
893
diff
changeset
|
101 |
{ |
5035
1bcefcae0ef4
(svn r7077) -Codechange: Send proper message to network window, and handle selection control in
Darkvater
parents:
4957
diff
changeset
|
102 |
SendWindowMessage(WC_NETWORK_WINDOW, 0, unselect, 0, 0); |
897
076a21cc614a
(svn r1383) Fix: You can now also delete automatically found servers by pressing "del"
dominik
parents:
893
diff
changeset
|
103 |
} |
076a21cc614a
(svn r1383) Fix: You can now also delete automatically found servers by pressing "del"
dominik
parents:
893
diff
changeset
|
104 |
|
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
105 |
static bool _internal_sort_order; // Used for Qsort order-flipping |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
106 |
typedef int CDECL NGameNameSortFunction(const void*, const void*); |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
107 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
108 |
/** Qsort function to sort by name. */ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
109 |
static int CDECL NGameNameSorter(const void *a, const void *b) |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
110 |
{ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
111 |
const NetworkGameList *cmp1 = *(const NetworkGameList**)a; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
112 |
const NetworkGameList *cmp2 = *(const NetworkGameList**)b; |
2889
461c25e6cc1b
(svn r3442) - Fix: Only windows has stricmp. So define strcasecmp to stricmp when using MSVC
Darkvater
parents:
2888
diff
changeset
|
113 |
int r = strcasecmp(cmp1->info.server_name, cmp2->info.server_name); |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
114 |
|
4880
aac84a9dcd03
(svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents:
4878
diff
changeset
|
115 |
return _internal_sort_order ? -r : r; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
116 |
} |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
117 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
118 |
/** Qsort function to sort by the amount of clients online on a |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
119 |
* server. If the two servers have the same amount, the one with the |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
120 |
* higher maximum is preferred. */ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
121 |
static int CDECL NGameClientSorter(const void *a, const void *b) |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
122 |
{ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
123 |
const NetworkGameList *cmp1 = *(const NetworkGameList**)a; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
124 |
const NetworkGameList *cmp2 = *(const NetworkGameList**)b; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
125 |
/* Reverse as per default we are interested in most-clients first */ |
4195
600bd419c335
(svn r5655) -Fix [SF 1424115]: Reversed arrow-sign in the multiplayer list column headers on sort by name
Darkvater
parents:
4171
diff
changeset
|
126 |
int r = cmp1->info.clients_on - cmp2->info.clients_on; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
127 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
128 |
if (r == 0) r = cmp1->info.clients_max - cmp2->info.clients_max; |
2922
9eb5d9c8f78f
(svn r3478) - Fix: In the network game list do the default sorting on connectivity (so servers which you can join are on top) and sort on names as a second criteria on clients and connectivity.
Darkvater
parents:
2914
diff
changeset
|
129 |
if (r == 0) r = strcasecmp(cmp1->info.server_name, cmp2->info.server_name); |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
130 |
|
4880
aac84a9dcd03
(svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents:
4878
diff
changeset
|
131 |
return _internal_sort_order ? -r : r; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
132 |
} |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
133 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
134 |
/** Qsort function to sort by joinability. If both servers are the |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
135 |
* same, prefer the non-passworded server first. */ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
136 |
static int CDECL NGameAllowedSorter(const void *a, const void *b) |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
137 |
{ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
138 |
const NetworkGameList *cmp1 = *(const NetworkGameList**)a; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
139 |
const NetworkGameList *cmp2 = *(const NetworkGameList**)b; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
140 |
|
5658
1e8be78c0bd7
(svn r8118) -Codechange: change the ordering of the network list a little:
rubidium
parents:
5609
diff
changeset
|
141 |
/* The servers we do not know anything about (the ones that did not reply) should be at the bottom) */ |
1e8be78c0bd7
(svn r8118) -Codechange: change the ordering of the network list a little:
rubidium
parents:
5609
diff
changeset
|
142 |
int r = StrEmpty(cmp1->info.server_revision) - StrEmpty(cmp2->info.server_revision); |
1e8be78c0bd7
(svn r8118) -Codechange: change the ordering of the network list a little:
rubidium
parents:
5609
diff
changeset
|
143 |
|
1e8be78c0bd7
(svn r8118) -Codechange: change the ordering of the network list a little:
rubidium
parents:
5609
diff
changeset
|
144 |
/* Reverse default as we are interested in version-compatible clients first */ |
1e8be78c0bd7
(svn r8118) -Codechange: change the ordering of the network list a little:
rubidium
parents:
5609
diff
changeset
|
145 |
if (r == 0) r = cmp2->info.version_compatible - cmp1->info.version_compatible; |
1e8be78c0bd7
(svn r8118) -Codechange: change the ordering of the network list a little:
rubidium
parents:
5609
diff
changeset
|
146 |
/* The version-compatible ones are then sorted with NewGRF compatible first, incompatible last */ |
1e8be78c0bd7
(svn r8118) -Codechange: change the ordering of the network list a little:
rubidium
parents:
5609
diff
changeset
|
147 |
if (r == 0) r = cmp2->info.compatible - cmp1->info.compatible; |
1e8be78c0bd7
(svn r8118) -Codechange: change the ordering of the network list a little:
rubidium
parents:
5609
diff
changeset
|
148 |
/* Passworded servers should be below unpassworded servers */ |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
149 |
if (r == 0) r = cmp1->info.use_password - cmp2->info.use_password; |
5658
1e8be78c0bd7
(svn r8118) -Codechange: change the ordering of the network list a little:
rubidium
parents:
5609
diff
changeset
|
150 |
/* Finally sort on the name of the server */ |
2922
9eb5d9c8f78f
(svn r3478) - Fix: In the network game list do the default sorting on connectivity (so servers which you can join are on top) and sort on names as a second criteria on clients and connectivity.
Darkvater
parents:
2914
diff
changeset
|
151 |
if (r == 0) r = strcasecmp(cmp1->info.server_name, cmp2->info.server_name); |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
152 |
|
4880
aac84a9dcd03
(svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents:
4878
diff
changeset
|
153 |
return _internal_sort_order ? -r : r; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
154 |
} |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
155 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
156 |
/** (Re)build the network game list as its amount has changed because |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
157 |
* an item has been added or deleted for example |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
158 |
* @param ngl list_d struct that contains all necessary information for sorting */ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
159 |
static void BuildNetworkGameList(network_ql_d *nqld) |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
160 |
{ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
161 |
NetworkGameList *ngl_temp; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
162 |
uint n = 0; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
163 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
164 |
if (!(nqld->l.flags & VL_REBUILD)) return; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
165 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
166 |
/* Count the number of games in the list */ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
167 |
for (ngl_temp = _network_game_list; ngl_temp != NULL; ngl_temp = ngl_temp->next) n++; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
168 |
if (n == 0) return; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
169 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
170 |
/* Create temporary array of games to use for listing */ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
171 |
free(nqld->sort_list); |
5609
dc6a58930ba4
(svn r8066) - Codechange: MallocT(), CallocT(), ReallocT() now return the pointer to allocated memory instead of modifying the pointer given as parameter
KUDr
parents:
5587
diff
changeset
|
172 |
nqld->sort_list = MallocT<NetworkGameList*>(n); |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
173 |
nqld->l.list_length = n; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
174 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
175 |
for (n = 0, ngl_temp = _network_game_list; ngl_temp != NULL; ngl_temp = ngl_temp->next) { |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
176 |
nqld->sort_list[n++] = ngl_temp; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
177 |
} |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
178 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
179 |
/* Force resort */ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
180 |
nqld->l.flags &= ~VL_REBUILD; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
181 |
nqld->l.flags |= VL_RESORT; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
182 |
} |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
183 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
184 |
static void SortNetworkGameList(network_ql_d *nqld) |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
185 |
{ |
4171 | 186 |
static NGameNameSortFunction * const ngame_sorter[] = { |
3860
af1e59c127ac
(svn r4892) - Fix [FS#162]: SEGV when sorting an empty server list. (glx)
Darkvater
parents:
3692
diff
changeset
|
187 |
&NGameNameSorter, |
af1e59c127ac
(svn r4892) - Fix [FS#162]: SEGV when sorting an empty server list. (glx)
Darkvater
parents:
3692
diff
changeset
|
188 |
&NGameClientSorter, |
af1e59c127ac
(svn r4892) - Fix [FS#162]: SEGV when sorting an empty server list. (glx)
Darkvater
parents:
3692
diff
changeset
|
189 |
&NGameAllowedSorter |
af1e59c127ac
(svn r4892) - Fix [FS#162]: SEGV when sorting an empty server list. (glx)
Darkvater
parents:
3692
diff
changeset
|
190 |
}; |
af1e59c127ac
(svn r4892) - Fix [FS#162]: SEGV when sorting an empty server list. (glx)
Darkvater
parents:
3692
diff
changeset
|
191 |
|
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
192 |
NetworkGameList *item; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
193 |
uint i; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
194 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
195 |
if (!(nqld->l.flags & VL_RESORT)) return; |
3860
af1e59c127ac
(svn r4892) - Fix [FS#162]: SEGV when sorting an empty server list. (glx)
Darkvater
parents:
3692
diff
changeset
|
196 |
if (nqld->l.list_length == 0) return; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
197 |
|
4880
aac84a9dcd03
(svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents:
4878
diff
changeset
|
198 |
_internal_sort_order = !!(nqld->l.flags & VL_DESC); |
3860
af1e59c127ac
(svn r4892) - Fix [FS#162]: SEGV when sorting an empty server list. (glx)
Darkvater
parents:
3692
diff
changeset
|
199 |
qsort(nqld->sort_list, nqld->l.list_length, sizeof(nqld->sort_list[0]), ngame_sorter[nqld->l.sort_type]); |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
200 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
201 |
/* After sorting ngl->sort_list contains the sorted items. Put these back |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
202 |
* into the original list. Basically nothing has changed, we are only |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
203 |
* shuffling the ->next pointers */ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
204 |
_network_game_list = nqld->sort_list[0]; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
205 |
for (item = _network_game_list, i = 1; i != nqld->l.list_length; i++) { |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
206 |
item->next = nqld->sort_list[i]; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
207 |
item = item->next; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
208 |
} |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
209 |
item->next = NULL; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
210 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
211 |
nqld->l.flags &= ~VL_RESORT; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
212 |
} |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
213 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
214 |
/** Enum for NetworkGameWindow, referring to _network_game_window_widgets */ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
215 |
enum NetworkGameWindowWidgets { |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
216 |
NGWW_CLOSE = 0, ///< Close 'X' button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
217 |
NGWW_CONN_TXT = 4, ///< 'Connection' droplist |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
218 |
NGWW_CONN_BTN = 5, ///< 'Connection' droplist button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
219 |
NGWW_PLAYER = 6, ///< Panel with editbox to set player name |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
220 |
|
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
221 |
NGWW_NAME = 7, ///< 'Name' button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
222 |
NGWW_CLIENTS, ///< 'Clients' button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
223 |
NGWW_INFO, ///< Third button in the game list panel |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
224 |
|
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
225 |
NGWW_MATRIX = 10, ///< Panel with list of games |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
226 |
|
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
227 |
NGWW_DETAILS = 12, ///< Panel with game details |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
228 |
NGWW_JOIN = 13, ///< 'Join game' button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
229 |
NGWW_REFRESH = 14, ///< 'Refresh server' button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
230 |
NGWW_NEWGRF = 15, ///< 'NewGRF Settings' button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
231 |
|
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
232 |
NGWW_FIND = 16, ///< 'Find server' button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
233 |
NGWW_ADD, ///< 'Add server' button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
234 |
NGWW_START, ///< 'Start server' button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
235 |
NGWW_CANCEL, ///< 'Cancel' button |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
236 |
}; |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
237 |
|
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
238 |
/** |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
239 |
* Handler of actions done in the NetworkStartServer window |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
240 |
* |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
241 |
* @param w pointer to the Window structure |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
242 |
* @param e pointer to window event |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
243 |
* @note Uses network_ql_d (network_d, querystr_d and list_d) WP macro |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
244 |
* @see struct _network_game_window_widgets |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
245 |
* @see enum NetworkGameWindowWidgets |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
246 |
*/ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
247 |
|
0 | 248 |
static void NetworkGameWindowWndProc(Window *w, WindowEvent *e) |
249 |
{ |
|
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
250 |
network_d *nd = &WP(w, network_ql_d).n; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
251 |
list_d *ld = &WP(w, network_ql_d).l; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
252 |
|
1653
d2db1ba2abde
(svn r2157) - Feature (request): [ 1166978 ] Focus keyboard on input-box in Multiplayer Menu
Darkvater
parents:
1648
diff
changeset
|
253 |
switch (e->event) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
254 |
case WE_CREATE: // Focus input box |
7343
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
255 |
w->vscroll.cap = 13; |
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
256 |
w->resize.step_height = NET_PRC__SIZE_OF_ROW; |
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
257 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
258 |
nd->field = NGWW_PLAYER; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
259 |
nd->server = NULL; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
260 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
261 |
WP(w, network_ql_d).sort_list = NULL; |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
262 |
ld->flags = VL_REBUILD | (_ng_sorting.order ? VL_DESC : VL_NONE); |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
263 |
ld->sort_type = _ng_sorting.criteria; |
1653
d2db1ba2abde
(svn r2157) - Feature (request): [ 1166978 ] Focus keyboard on input-box in Multiplayer Menu
Darkvater
parents:
1648
diff
changeset
|
264 |
break; |
2630 | 265 |
|
0 | 266 |
case WE_PAINT: { |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
267 |
const NetworkGameList *sel = nd->server; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
268 |
const char *arrow = (ld->flags & VL_DESC) ? DOWNARROW : UPARROW; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
269 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
270 |
if (ld->flags & VL_REBUILD) { |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
271 |
BuildNetworkGameList(&WP(w, network_ql_d)); |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
272 |
SetVScrollCount(w, ld->list_length); |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
273 |
} |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
274 |
if (ld->flags & VL_RESORT) SortNetworkGameList(&WP(w, network_ql_d)); |
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
275 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
276 |
/* 'Refresh' button invisible if no server selected */ |
7997
df87ccd00a96
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
7966
diff
changeset
|
277 |
w->SetWidgetDisabledState(NGWW_REFRESH, sel == NULL); |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
278 |
/* 'Join' button disabling conditions */ |
7997
df87ccd00a96
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
7966
diff
changeset
|
279 |
w->SetWidgetDisabledState(NGWW_JOIN, sel == NULL || // no Selected Server |
4709
a81ab800c25b
(svn r6619) -Codechange: Use accessors for disabled_state.
belugas
parents:
4634
diff
changeset
|
280 |
!sel->online || // Server offline |
a81ab800c25b
(svn r6619) -Codechange: Use accessors for disabled_state.
belugas
parents:
4634
diff
changeset
|
281 |
sel->info.clients_on >= sel->info.clients_max || // Server full |
a81ab800c25b
(svn r6619) -Codechange: Use accessors for disabled_state.
belugas
parents:
4634
diff
changeset
|
282 |
!sel->info.compatible); // Revision mismatch |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
283 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
284 |
/* 'NewGRF Settings' button invisible if no NewGRF is used */ |
7997
df87ccd00a96
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
7966
diff
changeset
|
285 |
w->SetWidgetHiddenState(NGWW_NEWGRF, sel == NULL || |
5339
96ac3f4933bb
(svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents:
5247
diff
changeset
|
286 |
!sel->online || |
96ac3f4933bb
(svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents:
5247
diff
changeset
|
287 |
sel->info.grfconfig == NULL); |
96ac3f4933bb
(svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents:
5247
diff
changeset
|
288 |
|
534
306bc86eb23e
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
289 |
SetDParam(0, 0x00); |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
290 |
SetDParam(1, _lan_internet_types_dropdown[_network_lan_internet]); |
0 | 291 |
DrawWindowWidgets(w); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
292 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
293 |
/* Edit box to set player name */ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
294 |
DrawEditBox(w, &WP(w, network_ql_d).q, NGWW_PLAYER); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
295 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
296 |
DrawString(w->widget[NGWW_PLAYER].left - 100, 23, STR_NETWORK_PLAYER_NAME, TC_GOLD); |
0 | 297 |
|
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
298 |
/* Sort based on widgets: name, clients, compatibility */ |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
299 |
switch (ld->sort_type) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
300 |
case NGWW_NAME - NGWW_NAME: DoDrawString(arrow, w->widget[NGWW_NAME].right - 10, 42, TC_BLACK); break; |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
301 |
case NGWW_CLIENTS - NGWW_NAME: DoDrawString(arrow, w->widget[NGWW_CLIENTS].right - 10, 42, TC_BLACK); break; |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
302 |
case NGWW_INFO - NGWW_NAME: DoDrawString(arrow, w->widget[NGWW_INFO].right - 10, 42, TC_BLACK); break; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
303 |
} |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
304 |
|
211 | 305 |
{ // draw list of games |
306 |
uint16 y = NET_PRC__OFFSET_TOP_WIDGET + 3; |
|
307 |
int32 n = 0; |
|
809
e275914bfd14
(svn r1280) -Codechange: made the last patch a bit more... readable (in other words:
truelight
parents:
808
diff
changeset
|
308 |
int32 pos = w->vscroll.pos; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
309 |
uint max_name_width = w->widget[NGWW_NAME].right - w->widget[NGWW_NAME].left - 5; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
310 |
const NetworkGameList *cur_item = _network_game_list; |
809
e275914bfd14
(svn r1280) -Codechange: made the last patch a bit more... readable (in other words:
truelight
parents:
808
diff
changeset
|
311 |
|
e275914bfd14
(svn r1280) -Codechange: made the last patch a bit more... readable (in other words:
truelight
parents:
808
diff
changeset
|
312 |
while (pos > 0 && cur_item != NULL) { |
e275914bfd14
(svn r1280) -Codechange: made the last patch a bit more... readable (in other words:
truelight
parents:
808
diff
changeset
|
313 |
pos--; |
808
ae0f50883ac0
(svn r1279) Fixed the scrollbar in the network gui(server list). It now updates when scrolling (HackyKid)
bjarni
parents:
793
diff
changeset
|
314 |
cur_item = cur_item->next; |
ae0f50883ac0
(svn r1279) Fixed the scrollbar in the network gui(server list). It now updates when scrolling (HackyKid)
bjarni
parents:
793
diff
changeset
|
315 |
} |
809
e275914bfd14
(svn r1280) -Codechange: made the last patch a bit more... readable (in other words:
truelight
parents:
808
diff
changeset
|
316 |
|
211 | 317 |
while (cur_item != NULL) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
318 |
/* show highlighted item with a different colour */ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
319 |
if (cur_item == sel) GfxFillRect(w->widget[NGWW_NAME].left + 1, y - 2, w->widget[NGWW_INFO].right - 1, y + 9, 10); |
211 | 320 |
|
2100
217ea6fdfd18
(svn r2610) - Feature: set server map name to the loaded name of the game/scenario. Also truncate where neccessary
Darkvater
parents:
2071
diff
changeset
|
321 |
SetDParamStr(0, cur_item->info.server_name); |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
322 |
DrawStringTruncated(w->widget[NGWW_NAME].left + 5, y, STR_02BD, TC_BLACK, max_name_width); |
211 | 323 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
324 |
SetDParam(0, cur_item->info.clients_on); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
325 |
SetDParam(1, cur_item->info.clients_max); |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
326 |
SetDParam(2, cur_item->info.companies_on); |
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
327 |
SetDParam(3, cur_item->info.companies_max); |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
328 |
DrawStringCentered(w->widget[NGWW_CLIENTS].left + 39, y, STR_NETWORK_GENERAL_ONLINE, TC_GOLD); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
329 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
330 |
/* only draw icons if the server is online */ |
591
b4c4386318e5
(svn r1012) -Fix: [Network] Endless loop if a server was offline (WizKid)
truelight
parents:
579
diff
changeset
|
331 |
if (cur_item->online) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
332 |
/* draw a lock if the server is password protected */ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
333 |
if (cur_item->info.use_password) DrawSprite(SPR_LOCK, PAL_NONE, w->widget[NGWW_INFO].left + 5, y - 1); |
591
b4c4386318e5
(svn r1012) -Fix: [Network] Endless loop if a server was offline (WizKid)
truelight
parents:
579
diff
changeset
|
334 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
335 |
/* draw red or green icon, depending on compatibility with server */ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
336 |
DrawSprite(SPR_BLOT, (cur_item->info.compatible ? PALETTE_TO_GREEN : (cur_item->info.version_compatible ? PALETTE_TO_YELLOW : PALETTE_TO_RED)), w->widget[NGWW_INFO].left + 15, y); |
591
b4c4386318e5
(svn r1012) -Fix: [Network] Endless loop if a server was offline (WizKid)
truelight
parents:
579
diff
changeset
|
337 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
338 |
/* draw flag according to server language */ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
339 |
DrawSprite(SPR_FLAGS_BASE + cur_item->info.server_lang, PAL_NONE, w->widget[NGWW_INFO].left + 25, y); |
579
e977d17c89b1
(svn r999) New icons for the network interface, newgrf gui and the tiny euro
dominik
parents:
543
diff
changeset
|
340 |
} |
591
b4c4386318e5
(svn r1012) -Fix: [Network] Endless loop if a server was offline (WizKid)
truelight
parents:
579
diff
changeset
|
341 |
|
b4c4386318e5
(svn r1012) -Fix: [Network] Endless loop if a server was offline (WizKid)
truelight
parents:
579
diff
changeset
|
342 |
cur_item = cur_item->next; |
b4c4386318e5
(svn r1012) -Fix: [Network] Endless loop if a server was offline (WizKid)
truelight
parents:
579
diff
changeset
|
343 |
y += NET_PRC__SIZE_OF_ROW; |
2549 | 344 |
if (++n == w->vscroll.cap) break; // max number of games in the window |
211 | 345 |
} |
346 |
} |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
347 |
|
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
348 |
/* Draw the right menu */ |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
349 |
GfxFillRect(w->widget[NGWW_DETAILS].left + 1, 43, w->widget[NGWW_DETAILS].right - 1, 92, 157); |
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
350 |
if (sel == NULL) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
351 |
DrawStringCentered(w->widget[NGWW_DETAILS].left + 115, 58, STR_NETWORK_GAME_INFO, TC_FROMSTRING); |
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
352 |
} else if (!sel->online) { |
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
353 |
SetDParamStr(0, sel->info.server_name); |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
354 |
DrawStringCentered(w->widget[NGWW_DETAILS].left + 115, 68, STR_ORANGE, TC_FROMSTRING); // game name |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
355 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
356 |
DrawStringCentered(w->widget[NGWW_DETAILS].left + 115, 132, STR_NETWORK_SERVER_OFFLINE, TC_FROMSTRING); // server offline |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
357 |
} else { // show game info |
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
358 |
uint16 y = 100; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
359 |
const uint16 x = w->widget[NGWW_DETAILS].left + 5; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
360 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
361 |
DrawStringCentered(w->widget[NGWW_DETAILS].left + 115, 48, STR_NETWORK_GAME_INFO, TC_FROMSTRING); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
362 |
|
2055
4926ed1a7562
(svn r2564) Fix: Fixed conceptual issue in network_gui.c. AllocateName is not meant to be used by GUI-code, because it modifies the "game-state".
ludde
parents:
1916
diff
changeset
|
363 |
|
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
364 |
SetDParamStr(0, sel->info.server_name); |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
365 |
DrawStringCenteredTruncated(w->widget[NGWW_DETAILS].left, w->widget[NGWW_DETAILS].right, 62, STR_ORANGE, TC_BLACK); // game name |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
366 |
|
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
367 |
SetDParamStr(0, sel->info.map_name); |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
368 |
DrawStringCenteredTruncated(w->widget[NGWW_DETAILS].left, w->widget[NGWW_DETAILS].right, 74, STR_02BD, TC_BLACK); // map name |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
369 |
|
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
370 |
SetDParam(0, sel->info.clients_on); |
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
371 |
SetDParam(1, sel->info.clients_max); |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
372 |
SetDParam(2, sel->info.companies_on); |
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
373 |
SetDParam(3, sel->info.companies_max); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
374 |
DrawString(x, y, STR_NETWORK_CLIENTS, TC_GOLD); |
2639 | 375 |
y += 10; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
376 |
|
6796
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
377 |
SetDParam(0, STR_NETWORK_LANG_ANY + sel->info.server_lang); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
378 |
DrawString(x, y, STR_NETWORK_LANGUAGE, TC_GOLD); // server language |
2639 | 379 |
y += 10; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
380 |
|
2775
a18db0ab5e51
(svn r3322) - Fix: Network window crash when it receives invalid information for example from the integrated nightly, so validate the network-input when it is received
Darkvater
parents:
2753
diff
changeset
|
381 |
SetDParam(0, STR_TEMPERATE_LANDSCAPE + sel->info.map_set); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
382 |
DrawString(x, y, STR_NETWORK_TILESET, TC_GOLD); // tileset |
2639 | 383 |
y += 10; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
384 |
|
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
385 |
SetDParam(0, sel->info.map_width); |
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
386 |
SetDParam(1, sel->info.map_height); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
387 |
DrawString(x, y, STR_NETWORK_MAP_SIZE, TC_GOLD); // map size |
2639 | 388 |
y += 10; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
389 |
|
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
390 |
SetDParamStr(0, sel->info.server_revision); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
391 |
DrawString(x, y, STR_NETWORK_SERVER_VERSION, TC_GOLD); // server version |
2639 | 392 |
y += 10; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
393 |
|
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
394 |
SetDParamStr(0, sel->info.hostname); |
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
395 |
SetDParam(1, sel->port); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
396 |
DrawString(x, y, STR_NETWORK_SERVER_ADDRESS, TC_GOLD); // server address |
2639 | 397 |
y += 10; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
398 |
|
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
399 |
SetDParam(0, sel->info.start_date); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
400 |
DrawString(x, y, STR_NETWORK_START_DATE, TC_GOLD); // start date |
2639 | 401 |
y += 10; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
402 |
|
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
403 |
SetDParam(0, sel->info.game_date); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
404 |
DrawString(x, y, STR_NETWORK_CURRENT_DATE, TC_GOLD); // current date |
2639 | 405 |
y += 10; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
406 |
|
2639 | 407 |
y += 2; |
622
19e529637d18
(svn r1052) -Fix: [Network] You can't join a server when revision mismatches.
truelight
parents:
621
diff
changeset
|
408 |
|
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
409 |
if (!sel->info.compatible) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
410 |
DrawStringCentered(w->widget[NGWW_DETAILS].left + 115, y, sel->info.version_compatible ? STR_NETWORK_GRF_MISMATCH : STR_NETWORK_VERSION_MISMATCH, TC_FROMSTRING); // server mismatch |
2071
3083c580f4dc
(svn r2581) Fix: Behave a bit safer if central server sends bogus information about clients.
ludde
parents:
2064
diff
changeset
|
411 |
} else if (sel->info.clients_on == sel->info.clients_max) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
412 |
/* Show: server full, when clients_on == clients_max */ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
413 |
DrawStringCentered(w->widget[NGWW_DETAILS].left + 115, y, STR_NETWORK_SERVER_FULL, TC_FROMSTRING); // server full |
2639 | 414 |
} else if (sel->info.use_password) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
415 |
DrawStringCentered(w->widget[NGWW_DETAILS].left + 115, y, STR_NETWORK_PASSWORD, TC_FROMSTRING); // password warning |
2639 | 416 |
} |
659
a9733f856cd0
(svn r1093) -Fix: Hopefully fixed windows revision issues once and for all. Removed globalness of _openttd_revision and put all such ifdefs into one place. If server has a revision only the same revisions can join; if the server has no revision everyone can join. I reckon this should be a server-side option to allow people to join or not to join.
darkvater
parents:
656
diff
changeset
|
417 |
|
2639 | 418 |
y += 10; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
419 |
} |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6491
diff
changeset
|
420 |
} break; |
0 | 421 |
|
422 |
case WE_CLICK: |
|
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
423 |
nd->field = e->we.click.widget; |
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
424 |
switch (e->we.click.widget) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
425 |
case NGWW_CANCEL: // Cancel button |
0 | 426 |
DeleteWindowById(WC_NETWORK_WINDOW, 0); |
427 |
break; |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
428 |
case NGWW_CONN_TXT: case NGWW_CONN_BTN: // 'Connection' droplist |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
429 |
ShowDropDownMenu(w, _lan_internet_types_dropdown, _network_lan_internet, NGWW_CONN_BTN, 0, 0); // do it for widget NSSW_CONN_BTN |
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
430 |
break; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
431 |
case NGWW_NAME: // Sort by name |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
432 |
case NGWW_CLIENTS: // Sort by connected clients |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
433 |
case NGWW_INFO: // Connectivity (green dot) |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
434 |
if (ld->sort_type == e->we.click.widget - NGWW_NAME) ld->flags ^= VL_DESC; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
435 |
ld->flags |= VL_RESORT; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
436 |
ld->sort_type = e->we.click.widget - NGWW_NAME; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
437 |
|
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
438 |
_ng_sorting.order = !!(ld->flags & VL_DESC); |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
439 |
_ng_sorting.criteria = ld->sort_type; |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
440 |
SetWindowDirty(w); |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
441 |
break; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
442 |
case NGWW_MATRIX: { // Matrix to show networkgames |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
443 |
NetworkGameList *cur_item; |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
444 |
uint32 id_v = (e->we.click.pt.y - NET_PRC__OFFSET_TOP_WIDGET) / NET_PRC__SIZE_OF_ROW; |
211 | 445 |
|
2549 | 446 |
if (id_v >= w->vscroll.cap) return; // click out of bounds |
211 | 447 |
id_v += w->vscroll.pos; |
448 |
||
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
449 |
cur_item = _network_game_list; |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
450 |
for (; id_v > 0 && cur_item != NULL; id_v--) cur_item = cur_item->next; |
211 | 451 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
452 |
nd->server = cur_item; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
453 |
SetWindowDirty(w); |
211 | 454 |
} break; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
455 |
case NGWW_FIND: // Find server automatically |
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
456 |
switch (_network_lan_internet) { |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
457 |
case 0: NetworkUDPSearchGame(); break; |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
458 |
case 1: NetworkUDPQueryMasterServer(); break; |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
459 |
} |
211 | 460 |
break; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
461 |
case NGWW_ADD: { // Add a server |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
462 |
ShowQueryString( |
2055
4926ed1a7562
(svn r2564) Fix: Fixed conceptual issue in network_gui.c. AllocateName is not meant to be used by GUI-code, because it modifies the "game-state".
ludde
parents:
1916
diff
changeset
|
463 |
BindCString(_network_default_ip), |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
464 |
STR_NETWORK_ENTER_IP, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
465 |
31 | 0x1000, // maximum number of characters OR |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
466 |
250, // characters up to this width pixels, whichever is satisfied first |
5431
6e56b4f13dd7
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5352
diff
changeset
|
467 |
w, CS_ALPHANUMERAL); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
468 |
} break; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
469 |
case NGWW_START: // Start server |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
470 |
ShowNetworkStartServerWindow(); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
471 |
break; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
472 |
case NGWW_JOIN: // Join Game |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
473 |
if (nd->server != NULL) { |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
474 |
snprintf(_network_last_host, sizeof(_network_last_host), "%s", inet_ntoa(*(struct in_addr *)&nd->server->ip)); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
475 |
_network_last_port = nd->server->port; |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
476 |
ShowNetworkLobbyWindow(nd->server); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
477 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
478 |
break; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
479 |
case NGWW_REFRESH: // Refresh |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
480 |
if (nd->server != NULL) |
5916
8931f4450f51
(svn r8543) -Codechange: make a real difference between querying the server via UDP and TCP.
rubidium
parents:
5893
diff
changeset
|
481 |
NetworkUDPQueryServer(nd->server->info.hostname, nd->server->port); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
482 |
break; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
483 |
case NGWW_NEWGRF: // NewGRF Settings |
5352
86fca6a41aa1
(svn r7523) -Feature: Add the possibility to change the newgrf configuration of a running game.
Darkvater
parents:
5343
diff
changeset
|
484 |
if (nd->server != NULL) ShowNewGRFSettings(false, false, false, &nd->server->info.grfconfig); |
5339
96ac3f4933bb
(svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents:
5247
diff
changeset
|
485 |
break; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
486 |
|
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6491
diff
changeset
|
487 |
} break; |
172
8d8b3383470d
(svn r173) -Network: [1023231] Debug Code + ErrorBoxes + Load Game/Scenario. Added some more desync debug code and replaced some of the error() calls with some better error boxes. Hopefully find desyncs easier (sign_de)
darkvater
parents:
105
diff
changeset
|
488 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
489 |
case WE_DROPDOWN_SELECT: // we have selected a dropdown item in the list |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
490 |
switch (e->we.dropdown.button) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
491 |
case NGWW_CONN_BTN: |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
492 |
_network_lan_internet = e->we.dropdown.index; |
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
493 |
break; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
494 |
default: |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
495 |
NOT_REACHED(); |
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
496 |
} |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
497 |
|
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
498 |
SetWindowDirty(w); |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
499 |
break; |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
500 |
|
0 | 501 |
case WE_MOUSELOOP: |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
502 |
if (nd->field == NGWW_PLAYER) HandleEditBox(w, &WP(w, network_ql_d).q, NGWW_PLAYER); |
0 | 503 |
break; |
504 |
||
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
505 |
case WE_MESSAGE: |
5035
1bcefcae0ef4
(svn r7077) -Codechange: Send proper message to network window, and handle selection control in
Darkvater
parents:
4957
diff
changeset
|
506 |
if (e->we.message.msg != 0) nd->server = NULL; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
507 |
ld->flags |= VL_REBUILD; |
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
508 |
SetWindowDirty(w); |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
509 |
break; |
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
510 |
|
0 | 511 |
case WE_KEYPRESS: |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
512 |
if (nd->field != NGWW_PLAYER) { |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
513 |
if (nd->server != NULL) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
514 |
if (e->we.keypress.keycode == WKC_DELETE) { // Press 'delete' to remove servers |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
515 |
NetworkGameListRemoveItem(nd->server); |
738
b96ab9e63d22
(svn r1194) Feature: You can now add and remove servers from the server list. Those will be remembered until you delete them by pressing the Delete key.
dominik
parents:
735
diff
changeset
|
516 |
NetworkRebuildHostList(); |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
517 |
nd->server = NULL; |
738
b96ab9e63d22
(svn r1194) Feature: You can now add and remove servers from the server list. Those will be remembered until you delete them by pressing the Delete key.
dominik
parents:
735
diff
changeset
|
518 |
} |
b96ab9e63d22
(svn r1194) Feature: You can now add and remove servers from the server list. Those will be remembered until you delete them by pressing the Delete key.
dominik
parents:
735
diff
changeset
|
519 |
} |
741
422ce499322b
(svn r1197) -Fix: [GUI] in r1194 someone deleted too much code from WE_KEYPRESS. Now
truelight
parents:
738
diff
changeset
|
520 |
break; |
422ce499322b
(svn r1197) -Fix: [GUI] in r1194 someone deleted too much code from WE_KEYPRESS. Now
truelight
parents:
738
diff
changeset
|
521 |
} |
422ce499322b
(svn r1197) -Fix: [GUI] in r1194 someone deleted too much code from WE_KEYPRESS. Now
truelight
parents:
738
diff
changeset
|
522 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
523 |
if (HandleEditBoxKey(w, &WP(w, network_ql_d).q, NGWW_PLAYER, e) == 1) break; // enter pressed |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
524 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
525 |
/* The name is only allowed when it starts with a letter! */ |
2639 | 526 |
if (_edit_str_buf[0] != '\0' && _edit_str_buf[0] != ' ') { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
527 |
ttd_strlcpy(_network_player_name, _edit_str_buf, lengthof(_network_player_name)); |
2639 | 528 |
} else { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
529 |
ttd_strlcpy(_network_player_name, "Player", lengthof(_network_player_name)); |
2639 | 530 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
531 |
|
0 | 532 |
break; |
533 |
||
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
534 |
case WE_ON_EDIT_TEXT: |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
535 |
NetworkAddServer(e->we.edittext.str); |
738
b96ab9e63d22
(svn r1194) Feature: You can now add and remove servers from the server list. Those will be remembered until you delete them by pressing the Delete key.
dominik
parents:
735
diff
changeset
|
536 |
NetworkRebuildHostList(); |
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
537 |
break; |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
538 |
|
7343
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
539 |
case WE_RESIZE: { |
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
540 |
w->vscroll.cap += e->we.sizing.diff.y / (int)w->resize.step_height; |
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
541 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
542 |
w->widget[NGWW_MATRIX].data = (w->vscroll.cap << 8) + 1; |
7343
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
543 |
|
7966
0c6e2703634c
(svn r11522) -Fix: The scrollbar of the network gui could run out of bounds
skidd13
parents:
7963
diff
changeset
|
544 |
SetVScrollCount(w, ld->list_length); |
0c6e2703634c
(svn r11522) -Fix: The scrollbar of the network gui could run out of bounds
skidd13
parents:
7963
diff
changeset
|
545 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
546 |
int widget_width = w->widget[NGWW_FIND].right - w->widget[NGWW_FIND].left; |
7343
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
547 |
int space = (w->width - 4 * widget_width - 25) / 3; |
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
548 |
|
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
549 |
int offset = 10; |
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
550 |
for (uint i = 0; i < 4; i++) { |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
551 |
w->widget[NGWW_FIND + i].left = offset; |
7343
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
552 |
offset += widget_width; |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
553 |
w->widget[NGWW_FIND + i].right = offset; |
7343
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
554 |
offset += space; |
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
555 |
} |
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
556 |
} break; |
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
557 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
558 |
case WE_DESTROY: // Nicely clean up the sort-list |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
559 |
free(WP(w, network_ql_d).sort_list); |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
560 |
break; |
0 | 561 |
} |
562 |
} |
|
563 |
||
564 |
static const Widget _network_game_window_widgets[] = { |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
565 |
/* TOP */ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
566 |
{ WWT_CLOSEBOX, RESIZE_NONE, BGC, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // NGWW_CLOSE |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
567 |
{ WWT_CAPTION, RESIZE_RIGHT, BGC, 11, 449, 0, 13, STR_NETWORK_MULTIPLAYER, STR_NULL}, |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
568 |
{ WWT_PANEL, RESIZE_RB, BGC, 0, 449, 14, 263, 0x0, STR_NULL}, |
0 | 569 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
570 |
{ WWT_TEXT, RESIZE_NONE, BGC, 9, 85, 23, 35, STR_NETWORK_CONNECTION, STR_NULL}, |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
571 |
{ WWT_INSET, RESIZE_NONE, BGC, 90, 181, 22, 33, STR_NETWORK_LAN_INTERNET_COMBO, STR_NETWORK_CONNECTION_TIP}, // NGWW_CONN_TXT |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
572 |
{ WWT_TEXTBTN, RESIZE_NONE, BGC, 170, 180, 23, 32, STR_0225, STR_NETWORK_CONNECTION_TIP}, // NGWW_CONN_BTN |
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
573 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
574 |
{ WWT_PANEL, RESIZE_LR, BGC, 290, 440, 22, 33, 0x0, STR_NETWORK_ENTER_NAME_TIP}, // NGWW_PLAYER |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4329
diff
changeset
|
575 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
576 |
/* LEFT SIDE */ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
577 |
{ WWT_PUSHTXTBTN, RESIZE_RIGHT, BTC, 10, 70, 42, 53, STR_NETWORK_GAME_NAME, STR_NETWORK_GAME_NAME_TIP}, // NGWW_NAME |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
578 |
{ WWT_PUSHTXTBTN, RESIZE_LR, BTC, 71, 150, 42, 53, STR_NETWORK_CLIENTS_CAPTION, STR_NETWORK_CLIENTS_CAPTION_TIP}, // NGWW_CLIENTS |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
579 |
{ WWT_PUSHTXTBTN, RESIZE_LR, BTC, 151, 190, 42, 53, STR_EMPTY, STR_NETWORK_INFO_ICONS_TIP}, // NGWW_INFO |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
580 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
581 |
{ WWT_MATRIX, RESIZE_RB, BGC, 10, 190, 54, 236, (13 << 8) + 1, STR_NETWORK_CLICK_GAME_TO_SELECT}, // NGWW_MATRIX |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
582 |
{ WWT_SCROLLBAR, RESIZE_LRB, BGC, 191, 202, 42, 236, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
583 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
584 |
/* RIGHT SIDE */ |
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
585 |
{ WWT_PANEL, RESIZE_LRB, BGC, 210, 440, 42, 236, 0x0, STR_NULL}, // NGWW_DETAILS |
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
586 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
587 |
{ WWT_PUSHTXTBTN, RESIZE_LRTB, BTC, 215, 315, 215, 226, STR_NETWORK_JOIN_GAME, STR_NULL}, // NGWW_JOIN |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
588 |
{ WWT_PUSHTXTBTN, RESIZE_LRTB, BTC, 330, 435, 215, 226, STR_NETWORK_REFRESH, STR_NETWORK_REFRESH_TIP}, // NGWW_REFRESH |
5339
96ac3f4933bb
(svn r7505) -Feature: show NewGRFs used on a game server, show which NewGRFs you do and do not have.
rubidium
parents:
5247
diff
changeset
|
589 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
590 |
{ WWT_PUSHTXTBTN, RESIZE_LRTB, BTC, 330, 435, 197, 208, STR_NEWGRF_SETTINGS_BUTTON, STR_NULL}, // NGWW_NEWGRF |
7343
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
591 |
|
7960
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
592 |
/* BOTTOM */ |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
593 |
{ WWT_PUSHTXTBTN, RESIZE_TB, BTC, 10, 110, 246, 257, STR_NETWORK_FIND_SERVER, STR_NETWORK_FIND_SERVER_TIP}, // NGWW_FIND |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
594 |
{ WWT_PUSHTXTBTN, RESIZE_TB, BTC, 118, 218, 246, 257, STR_NETWORK_ADD_SERVER, STR_NETWORK_ADD_SERVER_TIP}, // NGWW_ADD |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
595 |
{ WWT_PUSHTXTBTN, RESIZE_TB, BTC, 226, 326, 246, 257, STR_NETWORK_START_SERVER, STR_NETWORK_START_SERVER_TIP}, // NGWW_START |
b88d72baa45b
(svn r11516) -Codechange: cleanup of NetworkGameWindow in network_gui.cpp
smatz
parents:
7959
diff
changeset
|
596 |
{ WWT_PUSHTXTBTN, RESIZE_TB, BTC, 334, 434, 246, 257, STR_012E_CANCEL, STR_NULL}, // NGWW_CANCEL |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
597 |
|
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
598 |
{ WWT_RESIZEBOX, RESIZE_LRTB, BGC, 438, 449, 252, 263, 0x0, STR_RESIZE_BUTTON }, |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
599 |
|
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
175
diff
changeset
|
600 |
{ WIDGETS_END}, |
0 | 601 |
}; |
602 |
||
603 |
static const WindowDesc _network_game_window_desc = { |
|
7343
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
604 |
WDP_CENTER, WDP_CENTER, 450, 264, 550, 264, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5669
diff
changeset
|
605 |
WC_NETWORK_WINDOW, WC_NONE, |
7343
9bf495fb4b10
(svn r10706) -Codechange: allow resizing the multiplayer server list window.
rubidium
parents:
7341
diff
changeset
|
606 |
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS | WDF_RESIZABLE, |
0 | 607 |
_network_game_window_widgets, |
608 |
NetworkGameWindowWndProc, |
|
609 |
}; |
|
610 |
||
6247 | 611 |
void ShowNetworkGameWindow() |
0 | 612 |
{ |
2922
9eb5d9c8f78f
(svn r3478) - Fix: In the network game list do the default sorting on connectivity (so servers which you can join are on top) and sort on names as a second criteria on clients and connectivity.
Darkvater
parents:
2914
diff
changeset
|
613 |
static bool first = true; |
0 | 614 |
Window *w; |
615 |
DeleteWindowById(WC_NETWORK_WINDOW, 0); |
|
105 | 616 |
|
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
617 |
/* Only show once */ |
2922
9eb5d9c8f78f
(svn r3478) - Fix: In the network game list do the default sorting on connectivity (so servers which you can join are on top) and sort on names as a second criteria on clients and connectivity.
Darkvater
parents:
2914
diff
changeset
|
618 |
if (first) { |
2885
fc5297214b36
(svn r3435) - Fix a warning, removed unused extern and some comments in network_gamelist.c
Darkvater
parents:
2884
diff
changeset
|
619 |
char* const *srv; |
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
620 |
|
2922
9eb5d9c8f78f
(svn r3478) - Fix: In the network game list do the default sorting on connectivity (so servers which you can join are on top) and sort on names as a second criteria on clients and connectivity.
Darkvater
parents:
2914
diff
changeset
|
621 |
first = false; |
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
622 |
// add all servers from the config file to our list |
2885
fc5297214b36
(svn r3435) - Fix a warning, removed unused extern and some comments in network_gamelist.c
Darkvater
parents:
2884
diff
changeset
|
623 |
for (srv = &_network_host_list[0]; srv != endof(_network_host_list) && *srv != NULL; srv++) { |
2881
ade9a553be53
(svn r3429) - Feature (Followup): Change the gamelist window to accomodate for the new information.
Darkvater
parents:
2879
diff
changeset
|
624 |
NetworkAddServer(*srv); |
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
625 |
} |
2922
9eb5d9c8f78f
(svn r3478) - Fix: In the network game list do the default sorting on connectivity (so servers which you can join are on top) and sort on names as a second criteria on clients and connectivity.
Darkvater
parents:
2914
diff
changeset
|
626 |
|
9eb5d9c8f78f
(svn r3478) - Fix: In the network game list do the default sorting on connectivity (so servers which you can join are on top) and sort on names as a second criteria on clients and connectivity.
Darkvater
parents:
2914
diff
changeset
|
627 |
_ng_sorting.criteria = 2; // sort default by collectivity (green-dots on top) |
9eb5d9c8f78f
(svn r3478) - Fix: In the network game list do the default sorting on connectivity (so servers which you can join are on top) and sort on names as a second criteria on clients and connectivity.
Darkvater
parents:
2914
diff
changeset
|
628 |
_ng_sorting.order = 0; // sort ascending by default |
764
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
629 |
} |
7e1e17b7c7d4
(svn r1227) -Add: Ingame Server-list (select Internet, then Find Servers)
truelight
parents:
749
diff
changeset
|
630 |
|
0 | 631 |
w = AllocateWindowDesc(&_network_game_window_desc); |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
632 |
if (w != NULL) { |
4171 | 633 |
querystr_d *querystr = &WP(w, network_ql_d).q; |
3470
cd704e52732f
(svn r4315) Remove MAX_QUERYSTR_LEN, rather use lengthof() the real thing
tron
parents:
3469
diff
changeset
|
634 |
|
cd704e52732f
(svn r4315) Remove MAX_QUERYSTR_LEN, rather use lengthof() the real thing
tron
parents:
3469
diff
changeset
|
635 |
ttd_strlcpy(_edit_str_buf, _network_player_name, lengthof(_edit_str_buf)); |
4909
955f318a24cd
(svn r6879) -Codechange: Remove the superflouos argument CharsetFilter parameter from HandleEditBoxKey
Darkvater
parents:
4906
diff
changeset
|
636 |
querystr->afilter = CS_ALPHANUMERAL; |
4948
22ff05c1a3b1
(svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents:
4945
diff
changeset
|
637 |
InitializeTextBuffer(&querystr->text, _edit_str_buf, lengthof(_edit_str_buf), 120); |
0 | 638 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
639 |
UpdateNetworkGameWindow(true); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
640 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
641 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
642 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
643 |
enum { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
644 |
NSSWND_START = 64, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
645 |
NSSWND_ROWSIZE = 12 |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
646 |
}; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
647 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
648 |
/** Enum for NetworkStartServerWindow, referring to _network_start_server_window_widgets */ |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
649 |
enum NetworkStartServerWidgets { |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
650 |
NSSW_CLOSE = 0, ///< Close 'X' button |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
651 |
NSSW_GAMENAME = 4, ///< Background for editbox to set game name |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
652 |
NSSW_SETPWD = 5, ///< 'Set password' button |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
653 |
NSSW_SELMAP = 7, ///< 'Select map' list |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
654 |
NSSW_CONNTYPE_TXT = 10, ///< 'Connection type' droplist |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
655 |
NSSW_CONNTYPE_BTN = 11, ///< 'Connection type' droplist button |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
656 |
NSSW_CLIENTS_BTND = 13, ///< 'Max clients' downarrow |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
657 |
NSSW_CLIENTS_TXT = 14, ///< 'Max clients' text |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
658 |
NSSW_CLIENTS_BTNU = 15, ///< 'Max clients' uparrow |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
659 |
NSSW_COMPANIES_BTND = 17, ///< 'Max companies' downarrow |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
660 |
NSSW_COMPANIES_TXT = 18, ///< 'Max companies' text |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
661 |
NSSW_COMPANIES_BTNU = 19, ///< 'Max companies' uparrow |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
662 |
NSSW_SPECTATORS_BTND = 21, ///< 'Max spectators' downarrow |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
663 |
NSSW_SPECTATORS_TXT = 22, ///< 'Max spectators' text |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
664 |
NSSW_SPECTATORS_BTNU = 23, ///< 'Max spectators' uparrow |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
665 |
NSSW_LANGUAGE_TXT = 25, ///< 'Language spoken' droplist |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
666 |
NSSW_LANGUAGE_BTN = 26, ///< 'Language spoken' droplist button |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
667 |
NSSW_START = 27, ///< 'Start' button |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
668 |
NSSW_LOAD = 28, ///< 'Load' button |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
669 |
NSSW_CANCEL = 29, ///< 'Cancel' button |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
670 |
}; |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
671 |
|
7961
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
672 |
/** |
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
673 |
* Handler of actions done in the NetworkStartServer window |
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
674 |
* |
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
675 |
* @param w pointer to the Window structure |
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
676 |
* @param e pointer to window event |
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
677 |
* @note Uses network_ql_d (network_d, querystr_d and list_d) WP macro |
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
678 |
* @see struct _network_start_server_window_widgets |
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
679 |
* @see enum NetworkStartServerWidgets |
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
680 |
*/ |
0 | 681 |
static void NetworkStartServerWindowWndProc(Window *w, WindowEvent *e) |
682 |
{ |
|
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
683 |
network_d *nd = &WP(w, network_ql_d).n; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
684 |
|
1653
d2db1ba2abde
(svn r2157) - Feature (request): [ 1166978 ] Focus keyboard on input-box in Multiplayer Menu
Darkvater
parents:
1648
diff
changeset
|
685 |
switch (e->event) { |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
686 |
case WE_CREATE: // focus input box |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
687 |
nd->field = NSSW_GAMENAME; |
1899
81214598ab45
(svn r2405) Simplify a few '? true : false' and '? false : true', especially the latter is confusing
tron
parents:
1891
diff
changeset
|
688 |
_network_game_info.use_password = (_network_server_password[0] != '\0'); |
1653
d2db1ba2abde
(svn r2157) - Feature (request): [ 1166978 ] Focus keyboard on input-box in Multiplayer Menu
Darkvater
parents:
1648
diff
changeset
|
689 |
break; |
d2db1ba2abde
(svn r2157) - Feature (request): [ 1166978 ] Focus keyboard on input-box in Multiplayer Menu
Darkvater
parents:
1648
diff
changeset
|
690 |
|
0 | 691 |
case WE_PAINT: { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
692 |
int y = NSSWND_START, pos; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
693 |
const FiosItem *item; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
694 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
695 |
/* draw basic widgets */ |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
696 |
SetDParam(1, _connection_types_dropdown[_network_advertise]); |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
697 |
SetDParam(2, _network_game_info.clients_max); |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
698 |
SetDParam(3, _network_game_info.companies_max); |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
699 |
SetDParam(4, _network_game_info.spectators_max); |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
700 |
SetDParam(5, STR_NETWORK_LANG_ANY + _network_game_info.server_lang); |
0 | 701 |
DrawWindowWidgets(w); |
702 |
||
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
703 |
/* editbox to set game name */ |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
704 |
DrawEditBox(w, &WP(w, network_ql_d).q, NSSW_GAMENAME); |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
705 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
706 |
/* if password is set, draw red '*' next to 'Set password' button */ |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
707 |
if (_network_game_info.use_password) DoDrawString("*", 408, 23, TC_RED); |
1653
d2db1ba2abde
(svn r2157) - Feature (request): [ 1166978 ] Focus keyboard on input-box in Multiplayer Menu
Darkvater
parents:
1648
diff
changeset
|
708 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
709 |
/* draw list of maps */ |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
710 |
GfxFillRect(11, 63, 258, 215, 0xD7); // black background of maps list |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
711 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
712 |
pos = w->vscroll.pos; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
713 |
while (pos < _fios_num + 1) { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
714 |
item = _fios_list + pos - 1; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
715 |
if (item == nd->map || (pos == 0 && nd->map == NULL)) |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
716 |
GfxFillRect(11, y - 1, 258, y + 10, 155); // show highlighted item with a different colour |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
717 |
|
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
718 |
if (pos == 0) { |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
719 |
DrawString(14, y, STR_4010_GENERATE_RANDOM_NEW_GAME, TC_DARK_GREEN); |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
720 |
} else { |
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
721 |
DoDrawString(item->title, 14, y, _fios_colors[item->type] ); |
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
722 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
723 |
pos++; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
724 |
y += NSSWND_ROWSIZE; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
725 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
726 |
if (y >= w->vscroll.cap * NSSWND_ROWSIZE + NSSWND_START) break; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
727 |
} |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6491
diff
changeset
|
728 |
} break; |
0 | 729 |
|
730 |
case WE_CLICK: |
|
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
731 |
nd->field = e->we.click.widget; |
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
732 |
switch (e->we.click.widget) { |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
733 |
case NSSW_CLOSE: // Close 'X' |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
734 |
case NSSW_CANCEL: // Cancel button |
0 | 735 |
ShowNetworkGameWindow(); |
736 |
break; |
|
2639 | 737 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
738 |
case NSSW_SETPWD: // Set password button |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
739 |
nd->widget_id = NSSW_SETPWD; |
5431
6e56b4f13dd7
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5352
diff
changeset
|
740 |
ShowQueryString(BindCString(_network_server_password), STR_NETWORK_SET_PASSWORD, 20, 250, w, CS_ALPHANUMERAL); |
2639 | 741 |
break; |
742 |
||
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
743 |
case NSSW_SELMAP: { // Select map |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
744 |
int y = (e->we.click.pt.y - NSSWND_START) / NSSWND_ROWSIZE; |
2639 | 745 |
|
746 |
y += w->vscroll.pos; |
|
747 |
if (y >= w->vscroll.count) return; |
|
2100
217ea6fdfd18
(svn r2610) - Feature: set server map name to the loaded name of the game/scenario. Also truncate where neccessary
Darkvater
parents:
2071
diff
changeset
|
748 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
749 |
nd->map = (y == 0) ? NULL : _fios_list + y - 1; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
750 |
SetWindowDirty(w); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
751 |
} break; |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
752 |
case NSSW_CONNTYPE_TXT: case NSSW_CONNTYPE_BTN: // Connection type |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
753 |
ShowDropDownMenu(w, _connection_types_dropdown, _network_advertise, NSSW_CONNTYPE_BTN, 0, 0); // do it for widget NSSW_CONNTYPE_BTN |
675
9be22ffb4625
(svn r1113) -Add: [Network] Added the GUI part for server advertising. When you go
truelight
parents:
670
diff
changeset
|
754 |
break; |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
755 |
case NSSW_CLIENTS_BTND: case NSSW_CLIENTS_BTNU: // Click on up/down button for number of clients |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
756 |
case NSSW_COMPANIES_BTND: case NSSW_COMPANIES_BTNU: // Click on up/down button for number of companies |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
757 |
case NSSW_SPECTATORS_BTND: case NSSW_SPECTATORS_BTNU: // Click on up/down button for number of spectators |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
758 |
/* Don't allow too fast scrolling */ |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
759 |
if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
8036
279f4cbf9ec7
(svn r11596) -Codechange: Use the Window member HandleButtonClick and remove its now useless counterpart function
belugas
parents:
8028
diff
changeset
|
760 |
w->HandleButtonClick(e->we.click.widget); |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
761 |
SetWindowDirty(w); |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
762 |
switch (e->we.click.widget) { |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
763 |
default: NOT_REACHED(); |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
764 |
case NSSW_CLIENTS_BTND: case NSSW_CLIENTS_BTNU: |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
765 |
_network_game_info.clients_max = Clamp(_network_game_info.clients_max + e->we.click.widget - NSSW_CLIENTS_TXT, 2, MAX_CLIENTS); |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
766 |
break; |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
767 |
case NSSW_COMPANIES_BTND: case NSSW_COMPANIES_BTNU: |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
768 |
_network_game_info.companies_max = Clamp(_network_game_info.companies_max + e->we.click.widget - NSSW_COMPANIES_TXT, 1, MAX_PLAYERS); |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
769 |
break; |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
770 |
case NSSW_SPECTATORS_BTND: case NSSW_SPECTATORS_BTNU: |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
771 |
_network_game_info.spectators_max = Clamp(_network_game_info.spectators_max + e->we.click.widget - NSSW_SPECTATORS_TXT, 0, MAX_CLIENTS); |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
772 |
break; |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
773 |
} |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
774 |
} |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
775 |
_left_button_clicked = false; |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
776 |
break; |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
777 |
case NSSW_CLIENTS_TXT: // Click on number of players |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
778 |
nd->widget_id = NSSW_CLIENTS_TXT; |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
779 |
SetDParam(0, _network_game_info.clients_max); |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
780 |
ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_CLIENTS, 3, 50, w, CS_NUMERAL); |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
781 |
break; |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
782 |
case NSSW_COMPANIES_TXT: // Click on number of companies |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
783 |
nd->widget_id = NSSW_COMPANIES_TXT; |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
784 |
SetDParam(0, _network_game_info.companies_max); |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
785 |
ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_COMPANIES, 3, 50, w, CS_NUMERAL); |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
786 |
break; |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
787 |
case NSSW_SPECTATORS_TXT: // Click on number of spectators |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
788 |
nd->widget_id = NSSW_SPECTATORS_TXT; |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
789 |
SetDParam(0, _network_game_info.spectators_max); |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
790 |
ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_SPECTATORS, 3, 50, w, CS_NUMERAL); |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
791 |
break; |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
792 |
case NSSW_LANGUAGE_TXT: case NSSW_LANGUAGE_BTN: { // Language |
6798
a640d9b85407
(svn r10037) -Fix (r10035, r10036): silence some 'may be used uninitialized' warnings
glx
parents:
6796
diff
changeset
|
793 |
uint sel = 0; |
6796
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
794 |
for (uint i = 0; i < lengthof(_language_dropdown) - 1; i++) { |
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
795 |
if (_language_dropdown[i] == STR_NETWORK_LANG_ANY + _network_game_info.server_lang) { |
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
796 |
sel = i; |
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
797 |
break; |
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
798 |
} |
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
799 |
} |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
800 |
ShowDropDownMenu(w, _language_dropdown, sel, NSSW_LANGUAGE_BTN, 0, 0); |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
801 |
break; |
6796
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
802 |
} |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
803 |
case NSSW_START: // Start game |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
804 |
_is_network_server = true; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
805 |
|
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
806 |
if (nd->map == NULL) { // start random new game |
4300
c7e43c47a2b9
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
807 |
ShowGenerateLandscape(); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
808 |
} else { // load a scenario |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
809 |
char *name = FiosBrowseTo(nd->map); |
2100
217ea6fdfd18
(svn r2610) - Feature: set server map name to the loaded name of the game/scenario. Also truncate where neccessary
Darkvater
parents:
2071
diff
changeset
|
810 |
if (name != NULL) { |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
811 |
SetFiosType(nd->map->type); |
8152
ab21de45f8ab
(svn r11714) -Fix[FS#1569]: Do not allow player inauguration date on scenarios to be bigger than current year.
belugas
parents:
8140
diff
changeset
|
812 |
_file_to_saveload.filetype = FT_SCENARIO; |
2100
217ea6fdfd18
(svn r2610) - Feature: set server map name to the loaded name of the game/scenario. Also truncate where neccessary
Darkvater
parents:
2071
diff
changeset
|
813 |
ttd_strlcpy(_file_to_saveload.name, name, sizeof(_file_to_saveload.name)); |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
814 |
ttd_strlcpy(_file_to_saveload.title, nd->map->title, sizeof(_file_to_saveload.title)); |
2100
217ea6fdfd18
(svn r2610) - Feature: set server map name to the loaded name of the game/scenario. Also truncate where neccessary
Darkvater
parents:
2071
diff
changeset
|
815 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
816 |
DeleteWindow(w); |
4300
c7e43c47a2b9
(svn r5946) -Add: merged the TGP branch to mainline. TGP adds:
truelight
parents:
4299
diff
changeset
|
817 |
SwitchMode(SM_START_SCENARIO); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
818 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
819 |
} |
0 | 820 |
break; |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
821 |
case NSSW_LOAD: // Load game |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
822 |
_is_network_server = true; |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
823 |
/* XXX - WC_NETWORK_WINDOW (this window) should stay, but if it stays, it gets |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
824 |
* copied all the elements of 'load game' and upon closing that, it segfaults */ |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
825 |
DeleteWindow(w); |
172
8d8b3383470d
(svn r173) -Network: [1023231] Debug Code + ErrorBoxes + Load Game/Scenario. Added some more desync debug code and replaced some of the error() calls with some better error boxes. Hopefully find desyncs easier (sign_de)
darkvater
parents:
105
diff
changeset
|
826 |
ShowSaveLoadDialog(SLD_LOAD_GAME); |
8d8b3383470d
(svn r173) -Network: [1023231] Debug Code + ErrorBoxes + Load Game/Scenario. Added some more desync debug code and replaced some of the error() calls with some better error boxes. Hopefully find desyncs easier (sign_de)
darkvater
parents:
105
diff
changeset
|
827 |
break; |
0 | 828 |
} |
172
8d8b3383470d
(svn r173) -Network: [1023231] Debug Code + ErrorBoxes + Load Game/Scenario. Added some more desync debug code and replaced some of the error() calls with some better error boxes. Hopefully find desyncs easier (sign_de)
darkvater
parents:
105
diff
changeset
|
829 |
break; |
8d8b3383470d
(svn r173) -Network: [1023231] Debug Code + ErrorBoxes + Load Game/Scenario. Added some more desync debug code and replaced some of the error() calls with some better error boxes. Hopefully find desyncs easier (sign_de)
darkvater
parents:
105
diff
changeset
|
830 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
831 |
case WE_DROPDOWN_SELECT: // we have selected a dropdown item in the list |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
832 |
switch (e->we.dropdown.button) { |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
833 |
case NSSW_CONNTYPE_BTN: |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
834 |
_network_advertise = (e->we.dropdown.index != 0); |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
835 |
break; |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
836 |
case NSSW_LANGUAGE_BTN: |
6796
ff1875ba196d
(svn r10035) -Change: simplified network language string sorting
glx
parents:
6793
diff
changeset
|
837 |
_network_game_info.server_lang = _language_dropdown[e->we.dropdown.index] - STR_NETWORK_LANG_ANY; |
6780
ba49b125d95e
(svn r10017) -Add (FS#790): more languages flags for servers
glx
parents:
6531
diff
changeset
|
838 |
break; |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
839 |
default: |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
840 |
NOT_REACHED(); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
841 |
} |
172
8d8b3383470d
(svn r173) -Network: [1023231] Debug Code + ErrorBoxes + Load Game/Scenario. Added some more desync debug code and replaced some of the error() calls with some better error boxes. Hopefully find desyncs easier (sign_de)
darkvater
parents:
105
diff
changeset
|
842 |
|
8d8b3383470d
(svn r173) -Network: [1023231] Debug Code + ErrorBoxes + Load Game/Scenario. Added some more desync debug code and replaced some of the error() calls with some better error boxes. Hopefully find desyncs easier (sign_de)
darkvater
parents:
105
diff
changeset
|
843 |
SetWindowDirty(w); |
8d8b3383470d
(svn r173) -Network: [1023231] Debug Code + ErrorBoxes + Load Game/Scenario. Added some more desync debug code and replaced some of the error() calls with some better error boxes. Hopefully find desyncs easier (sign_de)
darkvater
parents:
105
diff
changeset
|
844 |
break; |
0 | 845 |
|
846 |
case WE_MOUSELOOP: |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
847 |
if (nd->field == NSSW_GAMENAME) HandleEditBox(w, &WP(w, network_ql_d).q, NSSW_GAMENAME); |
0 | 848 |
break; |
849 |
||
850 |
case WE_KEYPRESS: |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
851 |
if (nd->field == NSSW_GAMENAME) { |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
852 |
if (HandleEditBoxKey(w, &WP(w, network_ql_d).q, NSSW_GAMENAME, e) == 1) break; // enter pressed |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
853 |
|
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
854 |
ttd_strlcpy(_network_server_name, WP(w, network_ql_d).q.text.buf, sizeof(_network_server_name)); |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
855 |
} |
0 | 856 |
break; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
857 |
|
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
858 |
case WE_ON_EDIT_TEXT: |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
859 |
if (e->we.edittext.str == NULL) break; |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
860 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
861 |
if (nd->widget_id == NSSW_SETPWD) { |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
862 |
ttd_strlcpy(_network_server_password, e->we.edittext.str, lengthof(_network_server_password)); |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
863 |
_network_game_info.use_password = (_network_server_password[0] != '\0'); |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
864 |
} else { |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
865 |
int32 value = atoi(e->we.edittext.str); |
8028
e578ea22f371
(svn r11588) -Codechange: use the new member introduced in r11551
glx
parents:
8019
diff
changeset
|
866 |
w->InvalidateWidget(nd->widget_id); |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
867 |
switch (nd->widget_id) { |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
868 |
default: NOT_REACHED(); |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
869 |
case NSSW_CLIENTS_TXT: _network_game_info.clients_max = Clamp(value, 2, MAX_CLIENTS); break; |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
870 |
case NSSW_COMPANIES_TXT: _network_game_info.companies_max = Clamp(value, 1, MAX_PLAYERS); break; |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
871 |
case NSSW_SPECTATORS_TXT: _network_game_info.spectators_max = Clamp(value, 0, MAX_CLIENTS); break; |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
872 |
} |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
873 |
} |
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
874 |
|
1653
d2db1ba2abde
(svn r2157) - Feature (request): [ 1166978 ] Focus keyboard on input-box in Multiplayer Menu
Darkvater
parents:
1648
diff
changeset
|
875 |
SetWindowDirty(w); |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
876 |
break; |
0 | 877 |
} |
878 |
} |
|
879 |
||
880 |
static const Widget _network_start_server_window_widgets[] = { |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
881 |
/* Window decoration and background panel */ |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
882 |
{ WWT_CLOSEBOX, RESIZE_NONE, BGC, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW }, // NSSW_CLOSE |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
883 |
{ WWT_CAPTION, RESIZE_NONE, BGC, 11, 419, 0, 13, STR_NETWORK_START_GAME_WINDOW, STR_NULL}, |
7961
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
884 |
{ WWT_PANEL, RESIZE_NONE, BGC, 0, 419, 14, 243, 0x0, STR_NULL}, |
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
885 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
886 |
/* Set game name and password widgets */ |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
887 |
{ WWT_TEXT, RESIZE_NONE, BGC, 10, 90, 22, 34, STR_NETWORK_NEW_GAME_NAME, STR_NULL}, |
7961
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
888 |
{ WWT_PANEL, RESIZE_NONE, BGC, 100, 272, 22, 33, 0x0, STR_NETWORK_NEW_GAME_NAME_TIP}, // NSSW_GAMENAME |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
889 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 285, 405, 22, 33, STR_NETWORK_SET_PASSWORD, STR_NETWORK_PASSWORD_TIP}, // NSSW_SETPWD |
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
890 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
891 |
/* List of playable scenarios */ |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
892 |
{ WWT_TEXT, RESIZE_NONE, BGC, 10, 110, 43, 55, STR_NETWORK_SELECT_MAP, STR_NULL}, |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
893 |
{ WWT_INSET, RESIZE_NONE, BGC, 10, 271, 62, 216, STR_NULL, STR_NETWORK_SELECT_MAP_TIP}, // NSSW_SELMAP |
7961
6d30992b6084
(svn r11517) -Codechange: better cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7960
diff
changeset
|
894 |
{ WWT_SCROLLBAR, RESIZE_NONE, BGC, 259, 270, 63, 215, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
895 |
|
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
896 |
/* Combo/selection boxes to control Connection Type / Max Clients / Max Companies / Max Observers / Language */ |
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
897 |
{ WWT_TEXT, RESIZE_NONE, BGC, 280, 419, 63, 75, STR_NETWORK_CONNECTION, STR_NULL}, |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
898 |
{ WWT_INSET, RESIZE_NONE, BGC, 280, 410, 77, 88, STR_NETWORK_LAN_INTERNET_COMBO, STR_NETWORK_CONNECTION_TIP}, // NSSW_CONNTYPE_TXT |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
899 |
{ WWT_TEXTBTN, RESIZE_NONE, BGC, 399, 409, 78, 87, STR_0225, STR_NETWORK_CONNECTION_TIP}, // NSSW_CONNTYPE_BTN |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
900 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
901 |
{ WWT_TEXT, RESIZE_NONE, BGC, 280, 419, 95, 107, STR_NETWORK_NUMBER_OF_CLIENTS, STR_NULL}, |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
902 |
{ WWT_IMGBTN, RESIZE_NONE, BGC, 280, 291, 109, 120, SPR_ARROW_DOWN, STR_NETWORK_NUMBER_OF_CLIENTS_TIP}, // NSSW_CLIENTS_BTND |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
903 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BGC, 292, 397, 109, 120, STR_NETWORK_CLIENTS_SELECT, STR_NETWORK_NUMBER_OF_CLIENTS_TIP}, // NSSW_CLIENTS_TXT |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
904 |
{ WWT_IMGBTN, RESIZE_NONE, BGC, 398, 410, 109, 120, SPR_ARROW_UP, STR_NETWORK_NUMBER_OF_CLIENTS_TIP}, // NSSW_CLIENTS_BTNU |
7439
dfbe1adff313
(svn r10886) -Codechange: modify the "start network server" GUI so it can actually handle more than 10 clients/companies/spectators in a nice way, i.e. without making a combobox with 100 players and add 90 new strings to be able to do so.
rubidium
parents:
7363
diff
changeset
|
905 |
|
7959
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
906 |
{ WWT_TEXT, RESIZE_NONE, BGC, 280, 419, 127, 139, STR_NETWORK_NUMBER_OF_COMPANIES, STR_NULL}, |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
907 |
{ WWT_IMGBTN, RESIZE_NONE, BGC, 280, 291, 141, 152, SPR_ARROW_DOWN, STR_NETWORK_NUMBER_OF_COMPANIES_TIP}, // NSSW_COMPANIES_BTND |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
908 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BGC, 292, 397, 141, 152, STR_NETWORK_COMPANIES_SELECT, STR_NETWORK_NUMBER_OF_COMPANIES_TIP}, // NSSW_COMPANIES_TXT |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
909 |
{ WWT_IMGBTN, RESIZE_NONE, BGC, 398, 410, 141, 152, SPR_ARROW_UP, STR_NETWORK_NUMBER_OF_COMPANIES_TIP}, // NSSW_COMPANIES_BTNU |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
910 |
|
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
911 |
{ WWT_TEXT, RESIZE_NONE, BGC, 280, 419, 159, 171, STR_NETWORK_NUMBER_OF_SPECTATORS, STR_NULL}, |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
912 |
{ WWT_IMGBTN, RESIZE_NONE, BGC, 280, 291, 173, 184, SPR_ARROW_DOWN, STR_NETWORK_NUMBER_OF_SPECTATORS_TIP}, // NSSW_SPECTATORS_BTND |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
913 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BGC, 292, 397, 173, 184, STR_NETWORK_SPECTATORS_SELECT, STR_NETWORK_NUMBER_OF_SPECTATORS_TIP}, // NSSW_SPECTATORS_TXT |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
914 |
{ WWT_IMGBTN, RESIZE_NONE, BGC, 398, 410, 173, 184, SPR_ARROW_UP, STR_NETWORK_NUMBER_OF_SPECTATORS_TIP}, // NSSW_SPECTATORS_BTNU |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
915 |
|
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
916 |
{ WWT_TEXT, RESIZE_NONE, BGC, 280, 419, 191, 203, STR_NETWORK_LANGUAGE_SPOKEN, STR_NULL}, |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
917 |
{ WWT_INSET, RESIZE_NONE, BGC, 280, 410, 205, 216, STR_NETWORK_LANGUAGE_COMBO, STR_NETWORK_LANGUAGE_TIP}, // NSSW_LANGUAGE_TXT |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
918 |
{ WWT_TEXTBTN, RESIZE_NONE, BGC, 399, 409, 206, 215, STR_0225, STR_NETWORK_LANGUAGE_TIP}, // NSSW_LANGUAGE_BTN |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
919 |
|
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
920 |
/* Buttons Start / Load / Cancel */ |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
921 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 40, 140, 224, 235, STR_NETWORK_START_GAME, STR_NETWORK_START_GAME_TIP}, // NSSW_START |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
922 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 150, 250, 224, 235, STR_NETWORK_LOAD_GAME, STR_NETWORK_LOAD_GAME_TIP}, // NSSW_LOAD |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
923 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 260, 360, 224, 235, STR_012E_CANCEL, STR_NULL}, // NSSW_CANCEL |
e0476faea1e2
(svn r11515) -Codechange: cleanup of NetworkStartServerWindow in network_gui.cpp
smatz
parents:
7931
diff
changeset
|
924 |
|
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
175
diff
changeset
|
925 |
{ WIDGETS_END}, |
0 | 926 |
}; |
927 |
||
928 |
static const WindowDesc _network_start_server_window_desc = { |
|
7341
02515d0d4ced
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents:
7321
diff
changeset
|
929 |
WDP_CENTER, WDP_CENTER, 420, 244, 420, 244, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5669
diff
changeset
|
930 |
WC_NETWORK_WINDOW, WC_NONE, |
2064
e6a2b42d0b15
(svn r2573) Codechange: Removed WDF_RESTORE_DPARAM, it's not needed with the new string system.
ludde
parents:
2055
diff
changeset
|
931 |
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
0 | 932 |
_network_start_server_window_widgets, |
933 |
NetworkStartServerWindowWndProc, |
|
934 |
}; |
|
935 |
||
6247 | 936 |
static void ShowNetworkStartServerWindow() |
0 | 937 |
{ |
938 |
Window *w; |
|
939 |
DeleteWindowById(WC_NETWORK_WINDOW, 0); |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
940 |
|
0 | 941 |
w = AllocateWindowDesc(&_network_start_server_window_desc); |
3470
cd704e52732f
(svn r4315) Remove MAX_QUERYSTR_LEN, rather use lengthof() the real thing
tron
parents:
3469
diff
changeset
|
942 |
ttd_strlcpy(_edit_str_buf, _network_server_name, lengthof(_edit_str_buf)); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
943 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
944 |
_saveload_mode = SLD_NEW_GAME; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
945 |
BuildFileList(); |
2943
2e24a1c0a0cd
(svn r3499) - Fix: a few gui glitches in the network window:
Darkvater
parents:
2938
diff
changeset
|
946 |
w->vscroll.cap = 12; |
6491
00dc414c909d
(svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents:
6248
diff
changeset
|
947 |
w->vscroll.count = _fios_num + 1; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
948 |
|
4909
955f318a24cd
(svn r6879) -Codechange: Remove the superflouos argument CharsetFilter parameter from HandleEditBoxKey
Darkvater
parents:
4906
diff
changeset
|
949 |
WP(w, network_ql_d).q.afilter = CS_ALPHANUMERAL; |
4948
22ff05c1a3b1
(svn r6937) -Codechange: Add an InitializeTextBuffer() function that handles setting up the
Darkvater
parents:
4945
diff
changeset
|
950 |
InitializeTextBuffer(&WP(w, network_ql_d).q.text, _edit_str_buf, lengthof(_edit_str_buf), 160); |
0 | 951 |
} |
952 |
||
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
953 |
static PlayerID NetworkLobbyFindCompanyIndex(byte pos) |
734
f4ad2f5805fd
(svn r1186) -Fix: [Network] You can now join a company on a server where a company
truelight
parents:
722
diff
changeset
|
954 |
{ |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
955 |
PlayerID i; |
2639 | 956 |
|
734
f4ad2f5805fd
(svn r1186) -Fix: [Network] You can now join a company on a server where a company
truelight
parents:
722
diff
changeset
|
957 |
/* Scroll through all _network_player_info and get the 'pos' item |
f4ad2f5805fd
(svn r1186) -Fix: [Network] You can now join a company on a server where a company
truelight
parents:
722
diff
changeset
|
958 |
that is not empty */ |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
959 |
for (i = PLAYER_FIRST; i < MAX_PLAYERS; i++) { |
734
f4ad2f5805fd
(svn r1186) -Fix: [Network] You can now join a company on a server where a company
truelight
parents:
722
diff
changeset
|
960 |
if (_network_player_info[i].company_name[0] != '\0') { |
2639 | 961 |
if (pos-- == 0) return i; |
734
f4ad2f5805fd
(svn r1186) -Fix: [Network] You can now join a company on a server where a company
truelight
parents:
722
diff
changeset
|
962 |
} |
f4ad2f5805fd
(svn r1186) -Fix: [Network] You can now join a company on a server where a company
truelight
parents:
722
diff
changeset
|
963 |
} |
f4ad2f5805fd
(svn r1186) -Fix: [Network] You can now join a company on a server where a company
truelight
parents:
722
diff
changeset
|
964 |
|
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
965 |
return PLAYER_FIRST; |
734
f4ad2f5805fd
(svn r1186) -Fix: [Network] You can now join a company on a server where a company
truelight
parents:
722
diff
changeset
|
966 |
} |
f4ad2f5805fd
(svn r1186) -Fix: [Network] You can now join a company on a server where a company
truelight
parents:
722
diff
changeset
|
967 |
|
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
968 |
/** Enum for NetworkLobbyWindow, referring to _network_lobby_window_widgets */ |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
969 |
enum NetworkLobbyWindowWidgets { |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
970 |
NLWW_CLOSE = 0, ///< Close 'X' button |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
971 |
NLWW_MATRIX = 5, ///< List of companies |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
972 |
NLWW_DETAILS = 7, ///< Company details |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
973 |
NLWW_JOIN = 8, ///< 'Join company' button |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
974 |
NLWW_NEW = 9, ///< 'New company' button |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
975 |
NLWW_SPECTATE = 10, ///< 'Spectate game' button |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
976 |
NLWW_REFRESH = 11, ///< 'Refresh server' button |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
977 |
NLWW_CANCEL = 12, ///< 'Cancel' button |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
978 |
}; |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
979 |
|
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
980 |
/** |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
981 |
* Handler of actions done in the NetworkLobby window |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
982 |
* |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
983 |
* @param w pointer to the Window structure |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
984 |
* @param e pointer to window event |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
985 |
* @note uses network_d WP macro |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
986 |
* @see struct _network_lobby_window_widgets |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
987 |
* @see enum NetworkLobbyWindowWidgets |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
988 |
*/ |
0 | 989 |
static void NetworkLobbyWindowWndProc(Window *w, WindowEvent *e) |
990 |
{ |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
991 |
network_d *nd = &WP(w, network_d); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
992 |
|
2639 | 993 |
switch (e->event) { |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
994 |
case WE_CREATE: |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
995 |
nd->company = INVALID_PLAYER; |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
996 |
break; |
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
997 |
|
0 | 998 |
case WE_PAINT: { |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
999 |
const NetworkGameInfo *gi = &nd->server->info; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1000 |
int y = NET_PRC__OFFSET_TOP_WIDGET_COMPANY, pos; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1001 |
|
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1002 |
/* Join button is disabled when no company is selected */ |
7997
df87ccd00a96
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
7966
diff
changeset
|
1003 |
w->SetWidgetDisabledState(NLWW_JOIN, nd->company == INVALID_PLAYER); |
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1004 |
/* Cannot start new company if there are too many */ |
7997
df87ccd00a96
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
7966
diff
changeset
|
1005 |
w->SetWidgetDisabledState(NLWW_NEW, gi->companies_on >= gi->companies_max); |
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1006 |
/* Cannot spectate if there are too many spectators */ |
7997
df87ccd00a96
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
7966
diff
changeset
|
1007 |
w->SetWidgetDisabledState(NLWW_SPECTATE, gi->spectators_on >= gi->spectators_max); |
621
31b12c30b54c
(svn r1051) -Fix: [Network] New Company button is disabled when there is no more
truelight
parents:
618
diff
changeset
|
1008 |
|
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1009 |
/* Draw window widgets */ |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1010 |
SetDParamStr(0, gi->server_name); |
0 | 1011 |
DrawWindowWidgets(w); |
1012 |
||
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1013 |
/* Draw company list */ |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1014 |
pos = w->vscroll.pos; |
2879
365ecd52f2db
(svn r3427) - Feature: Allow seeing and setting the maximum amount of companies and spectators for a server. This can be changed/viewed during runtime as well in the console.
Darkvater
parents:
2788
diff
changeset
|
1015 |
while (pos < gi->companies_on) { |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1016 |
byte company = NetworkLobbyFindCompanyIndex(pos); |
1011
933efc472c62
(svn r1510) -Add: Improved Network Lobby GUI: (bociusz)
truelight
parents:
1009
diff
changeset
|
1017 |
bool income = false; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1018 |
if (nd->company == company) |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1019 |
GfxFillRect(11, y - 1, 154, y + 10, 10); // show highlighted item with a different colour |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1020 |
|
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1021 |
DoDrawStringTruncated(_network_player_info[company].company_name, 13, y, TC_BLACK, 135 - 13); |
5669
631901f52707
(svn r8129) -Codechange: Change data tables to use split off palette map. And
peter1138
parents:
5658
diff
changeset
|
1022 |
if (_network_player_info[company].use_password != 0) DrawSprite(SPR_LOCK, PAL_NONE, 135, y); |
1011
933efc472c62
(svn r1510) -Add: Improved Network Lobby GUI: (bociusz)
truelight
parents:
1009
diff
changeset
|
1023 |
|
933efc472c62
(svn r1510) -Add: Improved Network Lobby GUI: (bociusz)
truelight
parents:
1009
diff
changeset
|
1024 |
/* If the company's income was positive puts a green dot else a red dot */ |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1025 |
if (_network_player_info[company].income >= 0) income = true; |
5669
631901f52707
(svn r8129) -Codechange: Change data tables to use split off palette map. And
peter1138
parents:
5658
diff
changeset
|
1026 |
DrawSprite(SPR_BLOT, income ? PALETTE_TO_GREEN : PALETTE_TO_RED, 145, y); |
0 | 1027 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1028 |
pos++; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1029 |
y += NET_PRC__SIZE_OF_ROW; |
2639 | 1030 |
if (pos >= w->vscroll.cap) break; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1031 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1032 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1033 |
/* Draw info about selected company when it is selected in the left window */ |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1034 |
GfxFillRect(174, 39, 403, 75, 157); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1035 |
DrawStringCentered(290, 50, STR_NETWORK_COMPANY_INFO, TC_FROMSTRING); |
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1036 |
if (nd->company != INVALID_PLAYER) { |
1025
f10da46b66f0
(svn r1526) -Fix: [1103027] Minor changes for the lobby GUI (widen window) (bociusz)
darkvater
parents:
1019
diff
changeset
|
1037 |
const uint x = 183; |
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1038 |
const uint trunc_width = w->widget[NLWW_DETAILS].right - x; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1039 |
y = 80; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1040 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1041 |
SetDParam(0, nd->server->info.clients_on); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1042 |
SetDParam(1, nd->server->info.clients_max); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1043 |
SetDParam(2, nd->server->info.companies_on); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1044 |
SetDParam(3, nd->server->info.companies_max); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1045 |
DrawString(x, y, STR_NETWORK_CLIENTS, TC_GOLD); |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1046 |
y += 10; |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1047 |
|
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1048 |
SetDParamStr(0, _network_player_info[nd->company].company_name); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1049 |
DrawStringTruncated(x, y, STR_NETWORK_COMPANY_NAME, TC_GOLD, trunc_width); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1050 |
y += 10; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1051 |
|
4329
0e6e689f66e7
(svn r6002) -Cleanup: remove the now redundant BASE_YEAR constant.
rubidium
parents:
4319
diff
changeset
|
1052 |
SetDParam(0, _network_player_info[nd->company].inaugurated_year); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1053 |
DrawString(x, y, STR_NETWORK_INAUGURATION_YEAR, TC_GOLD); // inauguration year |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1054 |
y += 10; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1055 |
|
7002
1bf6a62b0fcb
(svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents:
6991
diff
changeset
|
1056 |
SetDParam(0, _network_player_info[nd->company].company_value); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1057 |
DrawString(x, y, STR_NETWORK_VALUE, TC_GOLD); // company value |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1058 |
y += 10; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1059 |
|
7002
1bf6a62b0fcb
(svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents:
6991
diff
changeset
|
1060 |
SetDParam(0, _network_player_info[nd->company].money); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1061 |
DrawString(x, y, STR_NETWORK_CURRENT_BALANCE, TC_GOLD); // current balance |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1062 |
y += 10; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1063 |
|
7002
1bf6a62b0fcb
(svn r10258) -Codechange: as we are now using int64 all over the place, it's better to use int64 variables in the string generating too instead of packing them into two int32s.
rubidium
parents:
6991
diff
changeset
|
1064 |
SetDParam(0, _network_player_info[nd->company].income); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1065 |
DrawString(x, y, STR_NETWORK_LAST_YEARS_INCOME, TC_GOLD); // last year's income |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1066 |
y += 10; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1067 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1068 |
SetDParam(0, _network_player_info[nd->company].performance); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1069 |
DrawString(x, y, STR_NETWORK_PERFORMANCE, TC_GOLD); // performance |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1070 |
y += 10; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1071 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1072 |
SetDParam(0, _network_player_info[nd->company].num_vehicle[0]); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1073 |
SetDParam(1, _network_player_info[nd->company].num_vehicle[1]); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1074 |
SetDParam(2, _network_player_info[nd->company].num_vehicle[2]); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1075 |
SetDParam(3, _network_player_info[nd->company].num_vehicle[3]); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1076 |
SetDParam(4, _network_player_info[nd->company].num_vehicle[4]); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1077 |
DrawString(x, y, STR_NETWORK_VEHICLES, TC_GOLD); // vehicles |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1078 |
y += 10; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1079 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1080 |
SetDParam(0, _network_player_info[nd->company].num_station[0]); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1081 |
SetDParam(1, _network_player_info[nd->company].num_station[1]); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1082 |
SetDParam(2, _network_player_info[nd->company].num_station[2]); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1083 |
SetDParam(3, _network_player_info[nd->company].num_station[3]); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1084 |
SetDParam(4, _network_player_info[nd->company].num_station[4]); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1085 |
DrawString(x, y, STR_NETWORK_STATIONS, TC_GOLD); // stations |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1086 |
y += 10; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1087 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1088 |
SetDParamStr(0, _network_player_info[nd->company].players); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1089 |
DrawStringTruncated(x, y, STR_NETWORK_PLAYERS, TC_GOLD, trunc_width); // players |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1090 |
} |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6491
diff
changeset
|
1091 |
} break; |
0 | 1092 |
|
1093 |
case WE_CLICK: |
|
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1094 |
switch (e->we.click.widget) { |
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1095 |
case NLWW_CLOSE: // Close 'X' |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1096 |
case NLWW_CANCEL: // Cancel button |
0 | 1097 |
ShowNetworkGameWindow(); |
1098 |
break; |
|
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1099 |
case NLWW_MATRIX: { // Company list |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1100 |
uint32 id_v = (e->we.click.pt.y - NET_PRC__OFFSET_TOP_WIDGET_COMPANY) / NET_PRC__SIZE_OF_ROW; |
0 | 1101 |
|
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1102 |
if (id_v >= w->vscroll.cap) break; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1103 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1104 |
id_v += w->vscroll.pos; |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
1105 |
nd->company = (id_v >= nd->server->info.companies_on) ? INVALID_PLAYER : NetworkLobbyFindCompanyIndex(id_v); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1106 |
SetWindowDirty(w); |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6491
diff
changeset
|
1107 |
} break; |
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1108 |
case NLWW_JOIN: // Join company |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1109 |
/* Button can be clicked only when it is enabled */ |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1110 |
_network_playas = nd->company; |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1111 |
NetworkClientConnectGame(_network_last_host, _network_last_port); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1112 |
break; |
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1113 |
case NLWW_NEW: // New company |
4861
2119f5d46e41
(svn r6787) -Codechange: Use PLAYER_NEW_COMPANY as a player identifier wishing to become a
Darkvater
parents:
4848
diff
changeset
|
1114 |
_network_playas = PLAYER_NEW_COMPANY; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1115 |
NetworkClientConnectGame(_network_last_host, _network_last_port); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1116 |
break; |
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1117 |
case NLWW_SPECTATE: // Spectate game |
4848
45f848b46222
(svn r6774) -Codechange: Rename the badly named OWNER_SPECTATOR to PLAYER_SPECTATOR and
Darkvater
parents:
4830
diff
changeset
|
1118 |
_network_playas = PLAYER_SPECTATOR; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1119 |
NetworkClientConnectGame(_network_last_host, _network_last_port); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1120 |
break; |
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1121 |
case NLWW_REFRESH: // Refresh |
5916
8931f4450f51
(svn r8543) -Codechange: make a real difference between querying the server via UDP and TCP.
rubidium
parents:
5893
diff
changeset
|
1122 |
NetworkTCPQueryServer(_network_last_host, _network_last_port); // company info |
8931f4450f51
(svn r8543) -Codechange: make a real difference between querying the server via UDP and TCP.
rubidium
parents:
5893
diff
changeset
|
1123 |
NetworkUDPQueryServer(_network_last_host, _network_last_port); // general data |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1124 |
break; |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6491
diff
changeset
|
1125 |
} break; |
2884
8f00f4e86bf6
(svn r3434) - Correctly update all network information when pressing refresh in the lobby. Also always allow the join button to a server unless all clients are used up (otherwise you can always join an existing company
Darkvater
parents:
2881
diff
changeset
|
1126 |
|
8f00f4e86bf6
(svn r3434) - Correctly update all network information when pressing refresh in the lobby. Also always allow the join button to a server unless all clients are used up (otherwise you can always join an existing company
Darkvater
parents:
2881
diff
changeset
|
1127 |
case WE_MESSAGE: |
8f00f4e86bf6
(svn r3434) - Correctly update all network information when pressing refresh in the lobby. Also always allow the join button to a server unless all clients are used up (otherwise you can always join an existing company
Darkvater
parents:
2881
diff
changeset
|
1128 |
SetWindowDirty(w); |
8f00f4e86bf6
(svn r3434) - Correctly update all network information when pressing refresh in the lobby. Also always allow the join button to a server unless all clients are used up (otherwise you can always join an existing company
Darkvater
parents:
2881
diff
changeset
|
1129 |
break; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1130 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1131 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1132 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1133 |
static const Widget _network_lobby_window_widgets[] = { |
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1134 |
{ WWT_CLOSEBOX, RESIZE_NONE, BGC, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW }, // NLWW_CLOSE |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1135 |
{ WWT_CAPTION, RESIZE_NONE, BGC, 11, 419, 0, 13, STR_NETWORK_GAME_LOBBY, STR_NULL}, |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1136 |
{ WWT_PANEL, RESIZE_NONE, BGC, 0, 419, 14, 234, 0x0, STR_NULL}, |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1137 |
{ WWT_TEXT, RESIZE_NONE, BGC, 10, 419, 22, 34, STR_NETWORK_PREPARE_TO_JOIN, STR_NULL}, |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1138 |
|
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1139 |
/* company list */ |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1140 |
{ WWT_PANEL, RESIZE_NONE, BTC, 10, 155, 38, 49, 0x0, STR_NULL}, |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1141 |
{ WWT_MATRIX, RESIZE_NONE, BGC, 10, 155, 50, 190, (10 << 8) + 1, STR_NETWORK_COMPANY_LIST_TIP}, // NLWW_MATRIX |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1142 |
{ WWT_SCROLLBAR, RESIZE_NONE, BGC, 156, 167, 38, 190, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1143 |
|
7963
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1144 |
/* company/player info */ |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1145 |
{ WWT_PANEL, RESIZE_NONE, BGC, 173, 404, 38, 190, 0x0, STR_NULL}, // NLWW_DETAILS |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1146 |
|
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1147 |
/* buttons */ |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1148 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 10, 151, 200, 211, STR_NETWORK_JOIN_COMPANY, STR_NETWORK_JOIN_COMPANY_TIP}, // NLWW_JOIN |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1149 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 10, 151, 215, 226, STR_NETWORK_NEW_COMPANY, STR_NETWORK_NEW_COMPANY_TIP}, // NLWW_NEW |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1150 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 158, 268, 200, 211, STR_NETWORK_SPECTATE_GAME, STR_NETWORK_SPECTATE_GAME_TIP}, // NLWW_SPECTATE |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1151 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 158, 268, 215, 226, STR_NETWORK_REFRESH, STR_NETWORK_REFRESH_TIP}, // NLWW_REFRESH |
bf9d4e26ea5b
(svn r11519) -Codechange: enumerization and cleanup of NetworkLobbyWindow in network_gui.cpp
smatz
parents:
7961
diff
changeset
|
1152 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 278, 388, 200, 211, STR_012E_CANCEL, STR_NULL}, // NLWW_CANCEL |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1153 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1154 |
{ WIDGETS_END}, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1155 |
}; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1156 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1157 |
static const WindowDesc _network_lobby_window_desc = { |
7341
02515d0d4ced
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents:
7321
diff
changeset
|
1158 |
WDP_CENTER, WDP_CENTER, 420, 235, 420, 235, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5669
diff
changeset
|
1159 |
WC_NETWORK_WINDOW, WC_NONE, |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1160 |
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1161 |
_network_lobby_window_widgets, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1162 |
NetworkLobbyWindowWndProc, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1163 |
}; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1164 |
|
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
1165 |
/* Show the networklobbywindow with the selected server |
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
1166 |
* @param ngl Selected game pointer which is passed to the new window */ |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1167 |
static void ShowNetworkLobbyWindow(NetworkGameList *ngl) |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1168 |
{ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1169 |
Window *w; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1170 |
DeleteWindowById(WC_NETWORK_WINDOW, 0); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1171 |
|
5916
8931f4450f51
(svn r8543) -Codechange: make a real difference between querying the server via UDP and TCP.
rubidium
parents:
5893
diff
changeset
|
1172 |
NetworkTCPQueryServer(_network_last_host, _network_last_port); // company info |
8931f4450f51
(svn r8543) -Codechange: make a real difference between querying the server via UDP and TCP.
rubidium
parents:
5893
diff
changeset
|
1173 |
NetworkUDPQueryServer(_network_last_host, _network_last_port); // general data |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1174 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1175 |
w = AllocateWindowDesc(&_network_lobby_window_desc); |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1176 |
if (w != NULL) { |
2888
79da960a5372
(svn r3441) - Feature: Allow the network game list to be sorted (by name/clients/compatibility ascending/descending)
Darkvater
parents:
2887
diff
changeset
|
1177 |
WP(w, network_ql_d).n.server = ngl; |
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1178 |
strcpy(_edit_str_buf, ""); |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1179 |
w->vscroll.cap = 10; |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1180 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1181 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1182 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1183 |
// The window below gives information about the connected clients |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1184 |
// and also makes able to give money to them, kick them (if server) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1185 |
// and stuff like that. |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1186 |
|
3692 | 1187 |
extern void DrawPlayerIcon(PlayerID pid, int x, int y); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1188 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1189 |
// Every action must be of this form |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1190 |
typedef void ClientList_Action_Proc(byte client_no); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1191 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1192 |
// Max 10 actions per client |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1193 |
#define MAX_CLIENTLIST_ACTION 10 |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1194 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1195 |
// Some standard bullshit.. defines variables ;) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1196 |
static void ClientListWndProc(Window *w, WindowEvent *e); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1197 |
static void ClientListPopupWndProc(Window *w, WindowEvent *e); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1198 |
static byte _selected_clientlist_item = 255; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1199 |
static byte _selected_clientlist_y = 0; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1200 |
static char _clientlist_action[MAX_CLIENTLIST_ACTION][50]; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1201 |
static ClientList_Action_Proc *_clientlist_proc[MAX_CLIENTLIST_ACTION]; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1202 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1203 |
enum { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1204 |
CLNWND_OFFSET = 16, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1205 |
CLNWND_ROWSIZE = 10 |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1206 |
}; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1207 |
|
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1208 |
static const Widget _client_list_widgets[] = { |
2725
775e3e14ca46
(svn r3270) Correct all (mis)uses of WWT_CLOSEBOX / WWT_TEXTBTN to reflect their actual use, and add "Close Window" tooltip where missing.
peter1138
parents:
2669
diff
changeset
|
1209 |
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
7029
7b84f0befa90
(svn r10293) -Add [FS#885]: a sticky button for the client list window (oxygene)
truelight
parents:
7002
diff
changeset
|
1210 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 237, 0, 13, STR_NETWORK_CLIENT_LIST, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
7b84f0befa90
(svn r10293) -Add [FS#885]: a sticky button for the client list window (oxygene)
truelight
parents:
7002
diff
changeset
|
1211 |
{ WWT_STICKYBOX, RESIZE_NONE, 14, 238, 249, 0, 13, STR_NULL, STR_STICKY_BUTTON}, |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1212 |
|
4938
0447845fd1b3
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1213 |
{ WWT_PANEL, RESIZE_NONE, 14, 0, 249, 14, 14 + CLNWND_ROWSIZE + 1, 0x0, STR_NULL}, |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1214 |
{ WIDGETS_END}, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1215 |
}; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1216 |
|
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1217 |
static const Widget _client_list_popup_widgets[] = { |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4329
diff
changeset
|
1218 |
{ WWT_PANEL, RESIZE_NONE, 14, 0, 99, 0, 0, 0, STR_NULL}, |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1219 |
{ WIDGETS_END}, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1220 |
}; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1221 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1222 |
static WindowDesc _client_list_desc = { |
7341
02515d0d4ced
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents:
7321
diff
changeset
|
1223 |
WDP_AUTO, WDP_AUTO, 250, 1, 250, 1, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5669
diff
changeset
|
1224 |
WC_CLIENT_LIST, WC_NONE, |
7029
7b84f0befa90
(svn r10293) -Add [FS#885]: a sticky button for the client list window (oxygene)
truelight
parents:
7002
diff
changeset
|
1225 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON, |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1226 |
_client_list_widgets, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1227 |
ClientListWndProc |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1228 |
}; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1229 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1230 |
// Finds the Xth client-info that is active |
4171 | 1231 |
static const NetworkClientInfo *NetworkFindClientInfo(byte client_no) |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1232 |
{ |
4171 | 1233 |
const NetworkClientInfo *ci; |
2630 | 1234 |
|
4883
c9c7d15c0b0b
(svn r6820) -Codechange: Some more const correctness, coding style.
Darkvater
parents:
4880
diff
changeset
|
1235 |
FOR_ALL_ACTIVE_CLIENT_INFOS(ci) { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1236 |
if (client_no == 0) return ci; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1237 |
client_no--; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1238 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1239 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1240 |
return NULL; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1241 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1242 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1243 |
// Here we start to define the options out of the menu |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1244 |
static void ClientList_Kick(byte client_no) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1245 |
{ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1246 |
if (client_no < MAX_PLAYERS) |
4880
aac84a9dcd03
(svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents:
4878
diff
changeset
|
1247 |
SEND_COMMAND(PACKET_SERVER_ERROR)(DEREF_CLIENT(client_no), NETWORK_ERROR_KICKED); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1248 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1249 |
|
841
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1250 |
static void ClientList_Ban(byte client_no) |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1251 |
{ |
841
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1252 |
uint i; |
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1253 |
uint32 ip = NetworkFindClientInfo(client_no)->client_ip; |
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1254 |
|
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1255 |
for (i = 0; i < lengthof(_network_ban_list); i++) { |
2914
ccfa238c6645
(svn r3469) - Fix: plug a possible memleak with subsequential strdup's without freeing the previous value and make it possible to ban offline clients
Darkvater
parents:
2889
diff
changeset
|
1256 |
if (_network_ban_list[i] == NULL) { |
841
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1257 |
_network_ban_list[i] = strdup(inet_ntoa(*(struct in_addr *)&ip)); |
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1258 |
break; |
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1259 |
} |
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1260 |
} |
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1261 |
|
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1262 |
if (client_no < MAX_PLAYERS) |
4880
aac84a9dcd03
(svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents:
4878
diff
changeset
|
1263 |
SEND_COMMAND(PACKET_SERVER_ERROR)(DEREF_CLIENT(client_no), NETWORK_ERROR_KICKED); |
841
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1264 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1265 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1266 |
static void ClientList_GiveMoney(byte client_no) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1267 |
{ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1268 |
if (NetworkFindClientInfo(client_no) != NULL) |
4878
4d4f76a898fd
(svn r6814) -Codechange: For network games ci->client_playas was always p->index + 1. To
Darkvater
parents:
4861
diff
changeset
|
1269 |
ShowNetworkGiveMoneyWindow(NetworkFindClientInfo(client_no)->client_playas); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1270 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1271 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1272 |
static void ClientList_SpeakToClient(byte client_no) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1273 |
{ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1274 |
if (NetworkFindClientInfo(client_no) != NULL) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1275 |
ShowNetworkChatQueryWindow(DESTTYPE_CLIENT, NetworkFindClientInfo(client_no)->client_index); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1276 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1277 |
|
4906
935e6280c093
(svn r6876) -Codechange: Change the naming of _PLAYER in DESTTYPE_PLAYER/NETWORK_ACTION_CHAT_PLAYER
Darkvater
parents:
4895
diff
changeset
|
1278 |
static void ClientList_SpeakToCompany(byte client_no) |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1279 |
{ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1280 |
if (NetworkFindClientInfo(client_no) != NULL) |
4906
935e6280c093
(svn r6876) -Codechange: Change the naming of _PLAYER in DESTTYPE_PLAYER/NETWORK_ACTION_CHAT_PLAYER
Darkvater
parents:
4895
diff
changeset
|
1281 |
ShowNetworkChatQueryWindow(DESTTYPE_TEAM, NetworkFindClientInfo(client_no)->client_playas); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1282 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1283 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1284 |
static void ClientList_SpeakToAll(byte client_no) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1285 |
{ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1286 |
ShowNetworkChatQueryWindow(DESTTYPE_BROADCAST, 0); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1287 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1288 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1289 |
static void ClientList_None(byte client_no) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1290 |
{ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1291 |
// No action ;) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1292 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1293 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1294 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1295 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1296 |
// Help, a action is clicked! What do we do? |
7321
f91bdca345e8
(svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents:
7221
diff
changeset
|
1297 |
static void HandleClientListPopupClick(byte index, byte clientno) |
f91bdca345e8
(svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents:
7221
diff
changeset
|
1298 |
{ |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1299 |
// A click on the Popup of the ClientList.. handle the command |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1300 |
if (index < MAX_CLIENTLIST_ACTION && _clientlist_proc[index] != NULL) { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1301 |
_clientlist_proc[index](clientno); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1302 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1303 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1304 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1305 |
// Finds the amount of clients and set the height correct |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1306 |
static bool CheckClientListHeight(Window *w) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1307 |
{ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1308 |
int num = 0; |
4883
c9c7d15c0b0b
(svn r6820) -Codechange: Some more const correctness, coding style.
Darkvater
parents:
4880
diff
changeset
|
1309 |
const NetworkClientInfo *ci; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1310 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1311 |
// Should be replaced with a loop through all clients |
4883
c9c7d15c0b0b
(svn r6820) -Codechange: Some more const correctness, coding style.
Darkvater
parents:
4880
diff
changeset
|
1312 |
FOR_ALL_ACTIVE_CLIENT_INFOS(ci) { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1313 |
num++; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1314 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1315 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1316 |
num *= CLNWND_ROWSIZE; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1317 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1318 |
// If height is changed |
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1319 |
if (w->height != CLNWND_OFFSET + num + 1) { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1320 |
// XXX - magic unfortunately; (num + 2) has to be one bigger than heigh (num + 1) |
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1321 |
SetWindowDirty(w); |
7029
7b84f0befa90
(svn r10293) -Add [FS#885]: a sticky button for the client list window (oxygene)
truelight
parents:
7002
diff
changeset
|
1322 |
w->widget[3].bottom = w->widget[3].top + num + 2; |
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1323 |
w->height = CLNWND_OFFSET + num + 1; |
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1324 |
SetWindowDirty(w); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1325 |
return false; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1326 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1327 |
return true; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1328 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1329 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1330 |
// Finds the amount of actions in the popup and set the height correct |
7321
f91bdca345e8
(svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents:
7221
diff
changeset
|
1331 |
static uint ClientListPopupHeight() |
f91bdca345e8
(svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents:
7221
diff
changeset
|
1332 |
{ |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1333 |
int i, num = 0; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1334 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1335 |
// Find the amount of actions |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1336 |
for (i = 0; i < MAX_CLIENTLIST_ACTION; i++) { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1337 |
if (_clientlist_action[i][0] == '\0') continue; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1338 |
if (_clientlist_proc[i] == NULL) continue; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1339 |
num++; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1340 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1341 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1342 |
num *= CLNWND_ROWSIZE; |
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1343 |
|
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1344 |
return num + 1; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1345 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1346 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1347 |
// Show the popup (action list) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1348 |
static Window *PopupClientList(Window *w, int client_no, int x, int y) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1349 |
{ |
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1350 |
int i, h; |
4171 | 1351 |
const NetworkClientInfo *ci; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1352 |
DeleteWindowById(WC_TOOLBAR_MENU, 0); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1353 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1354 |
// Clean the current actions |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1355 |
for (i = 0; i < MAX_CLIENTLIST_ACTION; i++) { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1356 |
_clientlist_action[i][0] = '\0'; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1357 |
_clientlist_proc[i] = NULL; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1358 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1359 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1360 |
// Fill the actions this client has |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1361 |
// Watch is, max 50 chars long! |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1362 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1363 |
ci = NetworkFindClientInfo(client_no); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1364 |
if (ci == NULL) return NULL; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1365 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1366 |
i = 0; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1367 |
if (_network_own_client_index != ci->client_index) { |
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4909
diff
changeset
|
1368 |
GetString(_clientlist_action[i], STR_NETWORK_CLIENTLIST_SPEAK_TO_CLIENT, lastof(_clientlist_action[i])); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1369 |
_clientlist_proc[i++] = &ClientList_SpeakToClient; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1370 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1371 |
|
4945
d20e68851e70
(svn r6933) -Feature: Allow spectators to speak to eachother (team)
Darkvater
parents:
4943
diff
changeset
|
1372 |
if (IsValidPlayer(ci->client_playas) || ci->client_playas == PLAYER_SPECTATOR) { |
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4909
diff
changeset
|
1373 |
GetString(_clientlist_action[i], STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY, lastof(_clientlist_action[i])); |
4906
935e6280c093
(svn r6876) -Codechange: Change the naming of _PLAYER in DESTTYPE_PLAYER/NETWORK_ACTION_CHAT_PLAYER
Darkvater
parents:
4895
diff
changeset
|
1374 |
_clientlist_proc[i++] = &ClientList_SpeakToCompany; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1375 |
} |
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4909
diff
changeset
|
1376 |
GetString(_clientlist_action[i], STR_NETWORK_CLIENTLIST_SPEAK_TO_ALL, lastof(_clientlist_action[i])); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1377 |
_clientlist_proc[i++] = &ClientList_SpeakToAll; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1378 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1379 |
if (_network_own_client_index != ci->client_index) { |
7657
2b55af55cc51
(svn r11188) -Codechange: rewrite of the town action related code (remove some of the magic).
rubidium
parents:
7441
diff
changeset
|
1380 |
/* We are no spectator and the player we want to give money to is no spectator and money gifts are allowed */ |
2b55af55cc51
(svn r11188) -Codechange: rewrite of the town action related code (remove some of the magic).
rubidium
parents:
7441
diff
changeset
|
1381 |
if (IsValidPlayer(_network_playas) && IsValidPlayer(ci->client_playas) && _patches.give_money) { |
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4909
diff
changeset
|
1382 |
GetString(_clientlist_action[i], STR_NETWORK_CLIENTLIST_GIVE_MONEY, lastof(_clientlist_action[i])); |
4878
4d4f76a898fd
(svn r6814) -Codechange: For network games ci->client_playas was always p->index + 1. To
Darkvater
parents:
4861
diff
changeset
|
1383 |
_clientlist_proc[i++] = &ClientList_GiveMoney; |
0 | 1384 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1385 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1386 |
|
4880
aac84a9dcd03
(svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents:
4878
diff
changeset
|
1387 |
// A server can kick clients (but not himself) |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1388 |
if (_network_server && _network_own_client_index != ci->client_index) { |
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4909
diff
changeset
|
1389 |
GetString(_clientlist_action[i], STR_NETWORK_CLIENTLIST_KICK, lastof(_clientlist_action[i])); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1390 |
_clientlist_proc[i++] = &ClientList_Kick; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1391 |
|
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4909
diff
changeset
|
1392 |
sprintf(_clientlist_action[i],"Ban"); // XXX GetString? |
841
4874b9ce2765
(svn r1322) -Add: banning system (mostly tnx to guru3)
truelight
parents:
827
diff
changeset
|
1393 |
_clientlist_proc[i++] = &ClientList_Ban; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1394 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1395 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1396 |
if (i == 0) { |
4912
0f51b47cb983
(svn r6884) -Codechange: Add strict bounds checking in string formatting system.
Darkvater
parents:
4909
diff
changeset
|
1397 |
GetString(_clientlist_action[i], STR_NETWORK_CLIENTLIST_NONE, lastof(_clientlist_action[i])); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1398 |
_clientlist_proc[i++] = &ClientList_None; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1399 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1400 |
|
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1401 |
/* Calculate the height */ |
7321
f91bdca345e8
(svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents:
7221
diff
changeset
|
1402 |
h = ClientListPopupHeight(); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1403 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1404 |
// Allocate the popup |
3250
4d19bcd78d22
(svn r3933) - [ 1439907 ] Increase client list window width so at least most languages fit (wikipedian).
Darkvater
parents:
2952
diff
changeset
|
1405 |
w = AllocateWindow(x, y, 150, h + 1, ClientListPopupWndProc, WC_TOOLBAR_MENU, _client_list_popup_widgets); |
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1406 |
w->widget[0].bottom = w->widget[0].top + h; |
3250
4d19bcd78d22
(svn r3933) - [ 1439907 ] Increase client list window width so at least most languages fit (wikipedian).
Darkvater
parents:
2952
diff
changeset
|
1407 |
w->widget[0].right = w->widget[0].left + 150; |
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1408 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1409 |
w->flags4 &= ~WF_WHITE_BORDER_MASK; |
8082
63240e1bd6cc
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8069
diff
changeset
|
1410 |
WP(w, menu_d).item_count = 0; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1411 |
// Save our client |
8082
63240e1bd6cc
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8069
diff
changeset
|
1412 |
WP(w, menu_d).main_button = client_no; |
63240e1bd6cc
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8069
diff
changeset
|
1413 |
WP(w, menu_d).sel_index = 0; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1414 |
// We are a popup |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1415 |
_popup_menu_active = true; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1416 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1417 |
return w; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1418 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1419 |
|
2887
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1420 |
/** Main handle for the client popup list |
810e555d5249
(svn r3439) - CodeChange: Remove a whole bunch of global variables and put them into the WP() macro. Also combine more than one WP-custom element. For this the maximum size of w->custom (WP) has been increased, and multiple types put inside one with possibly moved to the corresponding gui file if it is only used there.
Darkvater
parents:
2886
diff
changeset
|
1421 |
* uses menu_d WP macro */ |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1422 |
static void ClientListPopupWndProc(Window *w, WindowEvent *e) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1423 |
{ |
2639 | 1424 |
switch (e->event) { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1425 |
case WE_PAINT: { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1426 |
int i, y, sel; |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1427 |
TextColour colour; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1428 |
DrawWindowWidgets(w); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1429 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1430 |
// Draw the actions |
8082
63240e1bd6cc
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8069
diff
changeset
|
1431 |
sel = WP(w, menu_d).sel_index; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1432 |
y = 1; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1433 |
for (i = 0; i < MAX_CLIENTLIST_ACTION; i++, y += CLNWND_ROWSIZE) { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1434 |
if (_clientlist_action[i][0] == '\0') continue; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1435 |
if (_clientlist_proc[i] == NULL) continue; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1436 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1437 |
if (sel-- == 0) { // Selected item, highlight it |
3250
4d19bcd78d22
(svn r3933) - [ 1439907 ] Increase client list window width so at least most languages fit (wikipedian).
Darkvater
parents:
2952
diff
changeset
|
1438 |
GfxFillRect(1, y, 150 - 2, y + CLNWND_ROWSIZE - 1, 0); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1439 |
colour = TC_WHITE; |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
1440 |
} else { |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1441 |
colour = TC_BLACK; |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
1442 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1443 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1444 |
DoDrawString(_clientlist_action[i], 4, y, colour); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1445 |
} |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6491
diff
changeset
|
1446 |
} break; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1447 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1448 |
case WE_POPUPMENU_SELECT: { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1449 |
// We selected an action |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1450 |
int index = (e->we.popupmenu.pt.y - w->top) / CLNWND_ROWSIZE; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1451 |
|
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1452 |
if (index >= 0 && e->we.popupmenu.pt.y >= w->top) |
8082
63240e1bd6cc
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8069
diff
changeset
|
1453 |
HandleClientListPopupClick(index, WP(w, menu_d).main_button); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1454 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1455 |
DeleteWindowById(WC_TOOLBAR_MENU, 0); |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6491
diff
changeset
|
1456 |
} break; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1457 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1458 |
case WE_POPUPMENU_OVER: { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1459 |
// Our mouse hoovers over an action? Select it! |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1460 |
int index = (e->we.popupmenu.pt.y - w->top) / CLNWND_ROWSIZE; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1461 |
|
8082
63240e1bd6cc
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8069
diff
changeset
|
1462 |
if (index == -1 || index == WP(w, menu_d).sel_index) return; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1463 |
|
8082
63240e1bd6cc
(svn r11643) -Codechange: conform with the coding style for the WP macro uses.
rubidium
parents:
8069
diff
changeset
|
1464 |
WP(w, menu_d).sel_index = index; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1465 |
SetWindowDirty(w); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1466 |
} break; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1467 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1468 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1469 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1470 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1471 |
// Main handle for clientlist |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1472 |
static void ClientListWndProc(Window *w, WindowEvent *e) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1473 |
{ |
2639 | 1474 |
switch (e->event) { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1475 |
case WE_PAINT: { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1476 |
NetworkClientInfo *ci; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1477 |
int y, i = 0; |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1478 |
TextColour colour; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1479 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1480 |
// Check if we need to reset the height |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1481 |
if (!CheckClientListHeight(w)) break; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1482 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1483 |
DrawWindowWidgets(w); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1484 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1485 |
y = CLNWND_OFFSET; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1486 |
|
4883
c9c7d15c0b0b
(svn r6820) -Codechange: Some more const correctness, coding style.
Darkvater
parents:
4880
diff
changeset
|
1487 |
FOR_ALL_ACTIVE_CLIENT_INFOS(ci) { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1488 |
if (_selected_clientlist_item == i++) { // Selected item, highlight it |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1489 |
GfxFillRect(1, y, 248, y + CLNWND_ROWSIZE - 1, 0); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1490 |
colour = TC_WHITE; |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
1491 |
} else { |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1492 |
colour = TC_BLACK; |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
1493 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1494 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1495 |
if (ci->client_index == NETWORK_SERVER_INDEX) { |
722
f420fa9bd521
(svn r1174) -Fix: [Network] All strings can now be translated (no more hardcoded strings)
truelight
parents:
716
diff
changeset
|
1496 |
DrawString(4, y, STR_NETWORK_SERVER, colour); |
2639 | 1497 |
} else { |
722
f420fa9bd521
(svn r1174) -Fix: [Network] All strings can now be translated (no more hardcoded strings)
truelight
parents:
716
diff
changeset
|
1498 |
DrawString(4, y, STR_NETWORK_CLIENT, colour); |
2639 | 1499 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1500 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1501 |
// Filter out spectators |
4878
4d4f76a898fd
(svn r6814) -Codechange: For network games ci->client_playas was always p->index + 1. To
Darkvater
parents:
4861
diff
changeset
|
1502 |
if (IsValidPlayer(ci->client_playas)) DrawPlayerIcon(ci->client_playas, 64, y + 1); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1503 |
|
3250
4d19bcd78d22
(svn r3933) - [ 1439907 ] Increase client list window width so at least most languages fit (wikipedian).
Darkvater
parents:
2952
diff
changeset
|
1504 |
DoDrawString(ci->client_name, 81, y, colour); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1505 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1506 |
y += CLNWND_ROWSIZE; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1507 |
} |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6491
diff
changeset
|
1508 |
} break; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1509 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1510 |
case WE_CLICK: |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1511 |
// Show the popup with option |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1512 |
if (_selected_clientlist_item != 255) { |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1513 |
PopupClientList(w, _selected_clientlist_item, e->we.click.pt.x + w->left, e->we.click.pt.y + w->top); |
0 | 1514 |
} |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1515 |
|
0 | 1516 |
break; |
1517 |
||
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1518 |
case WE_MOUSEOVER: |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1519 |
// -1 means we left the current window |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1520 |
if (e->we.mouseover.pt.y == -1) { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1521 |
_selected_clientlist_y = 0; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1522 |
_selected_clientlist_item = 255; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1523 |
SetWindowDirty(w); |
0 | 1524 |
break; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1525 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1526 |
// It did not change.. no update! |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1527 |
if (e->we.mouseover.pt.y == _selected_clientlist_y) break; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1528 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1529 |
// Find the new selected item (if any) |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1530 |
_selected_clientlist_y = e->we.mouseover.pt.y; |
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1531 |
if (e->we.mouseover.pt.y > CLNWND_OFFSET) { |
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1532 |
_selected_clientlist_item = (e->we.mouseover.pt.y - CLNWND_OFFSET) / CLNWND_ROWSIZE; |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
1533 |
} else { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1534 |
_selected_clientlist_item = 255; |
4077
d4d440dd8925
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4013
diff
changeset
|
1535 |
} |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1536 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1537 |
// Repaint |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1538 |
SetWindowDirty(w); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1539 |
break; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1540 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1541 |
case WE_DESTROY: case WE_CREATE: |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1542 |
// When created or destroyed, data is reset |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1543 |
_selected_clientlist_item = 255; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1544 |
_selected_clientlist_y = 0; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1545 |
break; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1546 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1547 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1548 |
|
6247 | 1549 |
void ShowClientList() |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1550 |
{ |
4491 | 1551 |
AllocateWindowDescFront(&_client_list_desc, 0); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1552 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1553 |
|
4512
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1554 |
|
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1555 |
static NetworkPasswordType pw_type; |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1556 |
|
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1557 |
|
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1558 |
void ShowNetworkNeedPassword(NetworkPasswordType npt) |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1559 |
{ |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1560 |
StringID caption; |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1561 |
|
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1562 |
pw_type = npt; |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1563 |
switch (npt) { |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1564 |
default: NOT_REACHED(); |
4774
f93b1f0a9cf3
(svn r6688) -Fix (r6297): Wrong caption for server password query window (eg put 'break' after switch statements)
Darkvater
parents:
4719
diff
changeset
|
1565 |
case NETWORK_GAME_PASSWORD: caption = STR_NETWORK_NEED_GAME_PASSWORD_CAPTION; break; |
f93b1f0a9cf3
(svn r6688) -Fix (r6297): Wrong caption for server password query window (eg put 'break' after switch statements)
Darkvater
parents:
4719
diff
changeset
|
1566 |
case NETWORK_COMPANY_PASSWORD: caption = STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION; break; |
4512
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1567 |
} |
5431
6e56b4f13dd7
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5352
diff
changeset
|
1568 |
ShowQueryString(STR_EMPTY, caption, 20, 180, FindWindowById(WC_NETWORK_STATUS_WINDOW, 0), CS_ALPHANUMERAL); |
4512
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1569 |
} |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1570 |
|
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1571 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1572 |
static void NetworkJoinStatusWindowWndProc(Window *w, WindowEvent *e) |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1573 |
{ |
2639 | 1574 |
switch (e->event) { |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1575 |
case WE_PAINT: { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1576 |
uint8 progress; // used for progress bar |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1577 |
DrawWindowWidgets(w); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1578 |
|
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1579 |
DrawStringCentered(125, 35, STR_NETWORK_CONNECTING_1 + _network_join_status, TC_GREY); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1580 |
switch (_network_join_status) { |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1581 |
case NETWORK_JOIN_STATUS_CONNECTING: case NETWORK_JOIN_STATUS_AUTHORIZING: |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1582 |
case NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO: |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1583 |
progress = 10; // first two stages 10% |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1584 |
break; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1585 |
case NETWORK_JOIN_STATUS_WAITING: |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1586 |
SetDParam(0, _network_join_waiting); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1587 |
DrawStringCentered(125, 46, STR_NETWORK_CONNECTING_WAITING, TC_GREY); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1588 |
progress = 15; // third stage is 15% |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1589 |
break; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1590 |
case NETWORK_JOIN_STATUS_DOWNLOADING: |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1591 |
SetDParam(0, _network_join_kbytes); |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1592 |
SetDParam(1, _network_join_kbytes_total); |
7824
5a63d41b59ea
(svn r11374) -Codechange: Give meaning to the magical number that specifies the color of the text in a DrawString call.
belugas
parents:
7657
diff
changeset
|
1593 |
DrawStringCentered(125, 46, STR_NETWORK_CONNECTING_DOWNLOADING, TC_GREY); |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1594 |
/* Fallthrough */ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1595 |
default: /* Waiting is 15%, so the resting receivement of map is maximum 70% */ |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1596 |
progress = 15 + _network_join_kbytes * (100 - 15) / _network_join_kbytes_total; |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1597 |
} |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1598 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1599 |
/* Draw nice progress bar :) */ |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
1600 |
DrawFrameRect(20, 18, (int)((w->width - 20) * progress / 100), 28, 10, FR_NONE); |
6492
286a52449b54
(svn r9673) -Cleanup: remove spaces before tabs and replace non-indenting tabs with spaces.
rubidium
parents:
6491
diff
changeset
|
1601 |
} break; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1602 |
|
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1603 |
case WE_CLICK: |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1604 |
switch (e->we.click.widget) { |
5432
5940d6a253c5
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5431
diff
changeset
|
1605 |
case 2: /* Disconnect button */ |
2639 | 1606 |
NetworkDisconnect(); |
5431
6e56b4f13dd7
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5352
diff
changeset
|
1607 |
DeleteWindow(w); |
2639 | 1608 |
SwitchMode(SM_MENU); |
1609 |
ShowNetworkGameWindow(); |
|
1610 |
break; |
|
0 | 1611 |
} |
1612 |
break; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
176
diff
changeset
|
1613 |
|
5431
6e56b4f13dd7
(svn r7637) -Codechange: Change ShowQueryString to use a window pointer as a parent. If the
Darkvater
parents:
5352
diff
changeset
|
1614 |
/* If the server asks for a password, we need to fill it in */ |
4512
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1615 |
case WE_ON_EDIT_TEXT_CANCEL: |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1616 |
NetworkDisconnect(); |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1617 |
ShowNetworkGameWindow(); |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1618 |
break; |
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1619 |
|
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1620 |
case WE_ON_EDIT_TEXT: |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1621 |
SEND_COMMAND(PACKET_CLIENT_PASSWORD)(pw_type, e->we.edittext.str); |
4512
823dfd4aa413
(svn r6297) -Codechange: Disentangle the query window mess a bit: Move the network game password handling somewhere were it belongs to
tron
parents:
4491
diff
changeset
|
1622 |
break; |
0 | 1623 |
} |
1624 |
} |
|
1625 |
||
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1626 |
static const Widget _network_join_status_window_widget[] = { |
5432
5940d6a253c5
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5431
diff
changeset
|
1627 |
{ WWT_CAPTION, RESIZE_NONE, 14, 0, 249, 0, 13, STR_NETWORK_CONNECTING, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
4938
0447845fd1b3
(svn r6925) -Codechange: Be more strict with widget distinctions. WWT_PANEL is only plain panel,
Darkvater
parents:
4912
diff
changeset
|
1628 |
{ WWT_PANEL, RESIZE_NONE, 14, 0, 249, 14, 84, 0x0, STR_NULL}, |
867
dffd33233237
(svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents:
853
diff
changeset
|
1629 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 75, 175, 69, 80, STR_NETWORK_DISCONNECT, STR_NULL}, |
176
84990c4b9212
(svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents:
175
diff
changeset
|
1630 |
{ WIDGETS_END}, |
0 | 1631 |
}; |
1632 |
||
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1633 |
static const WindowDesc _network_join_status_window_desc = { |
7341
02515d0d4ced
(svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents:
7321
diff
changeset
|
1634 |
WDP_CENTER, WDP_CENTER, 250, 85, 250, 85, |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5669
diff
changeset
|
1635 |
WC_NETWORK_STATUS_WINDOW, WC_NONE, |
5432
5940d6a253c5
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5431
diff
changeset
|
1636 |
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_MODAL, |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1637 |
_network_join_status_window_widget, |
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1638 |
NetworkJoinStatusWindowWndProc, |
0 | 1639 |
}; |
1640 |
||
6247 | 1641 |
void ShowJoinStatusWindow() |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1642 |
{ |
5432
5940d6a253c5
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5431
diff
changeset
|
1643 |
Window *w; |
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1644 |
DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0); |
5432
5940d6a253c5
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5431
diff
changeset
|
1645 |
w = AllocateWindowDesc(&_network_join_status_window_desc); |
5940d6a253c5
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5431
diff
changeset
|
1646 |
/* Parent the status window to the lobby */ |
5940d6a253c5
(svn r7638) -Codechange: Remove special window ShowJoinStatusWindowAfterJoin and shuffle around
Darkvater
parents:
5431
diff
changeset
|
1647 |
if (w != NULL) w->parent = FindWindowById(WC_NETWORK_WINDOW, 0); |
670
d164965bb35a
(svn r1108) -Fix: [Network] Fixed problem around slow clients:
truelight
parents:
659
diff
changeset
|
1648 |
} |
0 | 1649 |
|
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1650 |
static void SendChat(const char *buf, DestType type, int dest) |
4013
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1651 |
{ |
7321
f91bdca345e8
(svn r10684) -Codechange: some more coding style related changes. Primarily moving { to a new line.
rubidium
parents:
7221
diff
changeset
|
1652 |
if (StrEmpty(buf)) return; |
4013
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1653 |
if (!_network_server) { |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
1654 |
SEND_COMMAND(PACKET_CLIENT_CHAT)((NetworkAction)(NETWORK_ACTION_CHAT + type), type, dest, buf); |
4013
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1655 |
} else { |
5587
167d9a91ef02
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents:
5584
diff
changeset
|
1656 |
NetworkServer_HandleChat((NetworkAction)(NETWORK_ACTION_CHAT + type), type, dest, buf, NETWORK_SERVER_INDEX); |
4013
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1657 |
} |
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1658 |
} |
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1659 |
|
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1660 |
/** |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1661 |
* Find the next item of the list of things that can be auto-completed. |
4319
b4c237cf69c1
(svn r5972) -Fix: usr strrchr instead of your own function (tnx Darkvater)
truelight
parents:
4315
diff
changeset
|
1662 |
* @param item The current indexed item to return. This function can, and most |
b4c237cf69c1
(svn r5972) -Fix: usr strrchr instead of your own function (tnx Darkvater)
truelight
parents:
4315
diff
changeset
|
1663 |
* likely will, alter item, to skip empty items in the arrays. |
b4c237cf69c1
(svn r5972) -Fix: usr strrchr instead of your own function (tnx Darkvater)
truelight
parents:
4315
diff
changeset
|
1664 |
* @return Returns the char that matched to the index. |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1665 |
*/ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1666 |
static const char *ChatTabCompletionNextItem(uint *item) |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1667 |
{ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1668 |
static char chat_tab_temp_buffer[64]; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1669 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1670 |
/* First, try clients */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1671 |
if (*item < MAX_CLIENT_INFO) { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1672 |
/* Skip inactive clients */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1673 |
while (_network_client_info[*item].client_index == NETWORK_EMPTY_INDEX && *item < MAX_CLIENT_INFO) (*item)++; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1674 |
if (*item < MAX_CLIENT_INFO) return _network_client_info[*item].client_name; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1675 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1676 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1677 |
/* Then, try townnames */ |
5247
1f982de55b88
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5125
diff
changeset
|
1678 |
/* Not that the following assumes all town indices are adjacent, ie no |
1f982de55b88
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5125
diff
changeset
|
1679 |
* towns have been deleted. */ |
1f982de55b88
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5125
diff
changeset
|
1680 |
if (*item <= (uint)MAX_CLIENT_INFO + GetMaxTownIndex()) { |
4319
b4c237cf69c1
(svn r5972) -Fix: usr strrchr instead of your own function (tnx Darkvater)
truelight
parents:
4315
diff
changeset
|
1681 |
const Town *t; |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1682 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1683 |
FOR_ALL_TOWNS_FROM(t, *item - MAX_CLIENT_INFO) { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1684 |
/* Get the town-name via the string-system */ |
6956
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6798
diff
changeset
|
1685 |
SetDParam(0, t->index); |
3579bfc5157b
(svn r10211) -Feature: [NewGRF] Add support for action 0F
glx
parents:
6798
diff
changeset
|
1686 |
GetString(chat_tab_temp_buffer, STR_TOWN, lastof(chat_tab_temp_buffer)); |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1687 |
return &chat_tab_temp_buffer[0]; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1688 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1689 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1690 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1691 |
return NULL; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1692 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1693 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1694 |
/** |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1695 |
* Find what text to complete. It scans for a space from the left and marks |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1696 |
* the word right from that as to complete. It also writes a \0 at the |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1697 |
* position of the space (if any). If nothing found, buf is returned. |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1698 |
*/ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1699 |
static char *ChatTabCompletionFindText(char *buf) |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1700 |
{ |
4880
aac84a9dcd03
(svn r6816) -Codechange: Some coding style, variable localization, const correctness.
Darkvater
parents:
4878
diff
changeset
|
1701 |
char *p = strrchr(buf, ' '); |
4319
b4c237cf69c1
(svn r5972) -Fix: usr strrchr instead of your own function (tnx Darkvater)
truelight
parents:
4315
diff
changeset
|
1702 |
if (p == NULL) return buf; |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1703 |
|
4319
b4c237cf69c1
(svn r5972) -Fix: usr strrchr instead of your own function (tnx Darkvater)
truelight
parents:
4315
diff
changeset
|
1704 |
*p = '\0'; |
b4c237cf69c1
(svn r5972) -Fix: usr strrchr instead of your own function (tnx Darkvater)
truelight
parents:
4315
diff
changeset
|
1705 |
return p + 1; |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1706 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1707 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1708 |
/** |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1709 |
* See if we can auto-complete the current text of the user. |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1710 |
*/ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1711 |
static void ChatTabCompletion(Window *w) |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1712 |
{ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1713 |
static char _chat_tab_completion_buf[lengthof(_edit_str_buf)]; |
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1714 |
Textbuf *tb = &WP(w, chatquerystr_d).text; |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1715 |
uint len, tb_len; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1716 |
uint item; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1717 |
char *tb_buf, *pre_buf; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1718 |
const char *cur_name; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1719 |
bool second_scan = false; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1720 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1721 |
item = 0; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1722 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1723 |
/* Copy the buffer so we can modify it without damaging the real data */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1724 |
pre_buf = (_chat_tab_completion_active) ? strdup(_chat_tab_completion_buf) : strdup(tb->buf); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1725 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1726 |
tb_buf = ChatTabCompletionFindText(pre_buf); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1727 |
tb_len = strlen(tb_buf); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1728 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1729 |
while ((cur_name = ChatTabCompletionNextItem(&item)) != NULL) { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1730 |
item++; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1731 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1732 |
if (_chat_tab_completion_active) { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1733 |
/* We are pressing TAB again on the same name, is there an other name |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1734 |
* that starts with this? */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1735 |
if (!second_scan) { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1736 |
uint offset; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1737 |
uint length; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1738 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1739 |
/* If we are completing at the begin of the line, skip the ': ' we added */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1740 |
if (tb_buf == pre_buf) { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1741 |
offset = 0; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1742 |
length = tb->length - 2; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1743 |
} else { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1744 |
/* Else, find the place we are completing at */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1745 |
offset = strlen(pre_buf) + 1; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1746 |
length = tb->length - offset; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1747 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1748 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1749 |
/* Compare if we have a match */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1750 |
if (strlen(cur_name) == length && strncmp(cur_name, tb->buf + offset, length) == 0) second_scan = true; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1751 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1752 |
continue; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1753 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1754 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1755 |
/* Now any match we make on _chat_tab_completion_buf after this, is perfect */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1756 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1757 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1758 |
len = strlen(cur_name); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1759 |
if (tb_len < len && strncasecmp(cur_name, tb_buf, tb_len) == 0) { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1760 |
/* Save the data it was before completion */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1761 |
if (!second_scan) snprintf(_chat_tab_completion_buf, lengthof(_chat_tab_completion_buf), "%s", tb->buf); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1762 |
_chat_tab_completion_active = true; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1763 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1764 |
/* Change to the found name. Add ': ' if we are at the start of the line (pretty) */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1765 |
if (pre_buf == tb_buf) { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1766 |
snprintf(tb->buf, lengthof(_edit_str_buf), "%s: ", cur_name); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1767 |
} else { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1768 |
snprintf(tb->buf, lengthof(_edit_str_buf), "%s %s", pre_buf, cur_name); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1769 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1770 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1771 |
/* Update the textbuffer */ |
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1772 |
UpdateTextBufferSize(&WP(w, chatquerystr_d).text); |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1773 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1774 |
SetWindowDirty(w); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1775 |
free(pre_buf); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1776 |
return; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1777 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1778 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1779 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1780 |
if (second_scan) { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1781 |
/* We walked all posibilities, and the user presses tab again.. revert to original text */ |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1782 |
strcpy(tb->buf, _chat_tab_completion_buf); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1783 |
_chat_tab_completion_active = false; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1784 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1785 |
/* Update the textbuffer */ |
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1786 |
UpdateTextBufferSize(&WP(w, chatquerystr_d).text); |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1787 |
|
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1788 |
SetWindowDirty(w); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1789 |
} |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1790 |
free(pre_buf); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1791 |
} |
4013
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1792 |
|
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1793 |
/* |
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1794 |
* uses chatquerystr_d WP macro |
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1795 |
* uses chatquerystr_d->caption to store type of chat message (Private/Team/All) |
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1796 |
*/ |
649 | 1797 |
static void ChatWindowWndProc(Window *w, WindowEvent *e) |
1798 |
{ |
|
1648
41c3d5de9994
(svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents:
1390
diff
changeset
|
1799 |
switch (e->event) { |
41c3d5de9994
(svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents:
1390
diff
changeset
|
1800 |
case WE_CREATE: |
8069
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1801 |
SendWindowMessage(WC_NEWS_WINDOW, 0, WE_CREATE, w->height, 0); |
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1802 |
SetBit(_no_scroll, SCROLL_CHAT); // do not scroll the game with the arrow-keys |
1648
41c3d5de9994
(svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents:
1390
diff
changeset
|
1803 |
break; |
649 | 1804 |
|
4887
71da70810c22
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4883
diff
changeset
|
1805 |
case WE_PAINT: { |
8069
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1806 |
static const StringID chat_captions[] = { |
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1807 |
STR_NETWORK_CHAT_ALL_CAPTION, |
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1808 |
STR_NETWORK_CHAT_COMPANY_CAPTION, |
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1809 |
STR_NETWORK_CHAT_CLIENT_CAPTION |
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1810 |
}; |
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1811 |
StringID msg; |
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1812 |
|
649 | 1813 |
DrawWindowWidgets(w); |
4887
71da70810c22
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4883
diff
changeset
|
1814 |
|
8069
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1815 |
assert(WP(w, chatquerystr_d).caption < lengthof(chat_captions)); |
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1816 |
msg = chat_captions[WP(w, chatquerystr_d).caption]; |
59a0fe1af11a
(svn r11630) -Fix [FS#1544] (r11556): the chat GUI got broken.
rubidium
parents:
8040
diff
changeset
|
1817 |
DrawStringRightAligned(w->widget[2].left - 2, w->widget[2].top + 1, msg, TC_BLACK); |
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1818 |
DrawEditBox(w, &WP(w, chatquerystr_d), 2); |
4887
71da70810c22
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4883
diff
changeset
|
1819 |
} break; |
649 | 1820 |
|
1821 |
case WE_CLICK: |
|
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1822 |
switch (e->we.click.widget) { |
4888
acb34a8e5b13
(svn r6825) -Codechange: Remove two globals from chat-window
Darkvater
parents:
4887
diff
changeset
|
1823 |
case 3: { /* Send */ |
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1824 |
DestType type = (DestType)WP(w, chatquerystr_d).caption; |
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1825 |
int dest = WP(w, chatquerystr_d).dest; |
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1826 |
SendChat(WP(w, chatquerystr_d).text.buf, type, dest); |
4888
acb34a8e5b13
(svn r6825) -Codechange: Remove two globals from chat-window
Darkvater
parents:
4887
diff
changeset
|
1827 |
} /* FALLTHROUGH */ |
4887
71da70810c22
(svn r6824) -Feature: Change the functionality of the chat window. SHIFT+ENTER (SHIFT+T)
Darkvater
parents:
4883
diff
changeset
|
1828 |
case 0: /* Cancel */ DeleteWindow(w); break; |
649 | 1829 |
} |
1830 |
break; |
|
1831 |
||
4013
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1832 |
case WE_MOUSELOOP: |
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1833 |
HandleEditBox(w, &WP(w, chatquerystr_d), 2); |
4013
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1834 |
break; |
649 | 1835 |
|
4013
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1836 |
case WE_KEYPRESS: |
4634
07699ac2bf37
(svn r6499) -Codechange: Finally, got "byte event" outside of the union WindowEvent, which is now a struct
belugas
parents:
4542
diff
changeset
|
1837 |
if (e->we.keypress.keycode == WKC_TAB) { |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1838 |
ChatTabCompletion(w); |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1839 |
} else { |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1840 |
_chat_tab_completion_active = false; |
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1841 |
switch (HandleEditBoxKey(w, &WP(w, chatquerystr_d), 2, e)) { |
4888
acb34a8e5b13
(svn r6825) -Codechange: Remove two globals from chat-window
Darkvater
parents:
4887
diff
changeset
|
1842 |
case 1: { /* Return */ |
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1843 |
DestType type = (DestType)WP(w, chatquerystr_d).caption; |
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1844 |
int dest = WP(w, chatquerystr_d).dest; |
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1845 |
SendChat(WP(w, chatquerystr_d).text.buf, type, dest); |
4888
acb34a8e5b13
(svn r6825) -Codechange: Remove two globals from chat-window
Darkvater
parents:
4887
diff
changeset
|
1846 |
} /* FALLTHROUGH */ |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1847 |
case 2: /* Escape */ DeleteWindow(w); break; |
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1848 |
} |
649 | 1849 |
} |
4013
53a7dd9a1fbf
(svn r5226) Reduce the mess that sending chat messages is
tron
parents:
3860
diff
changeset
|
1850 |
break; |
649 | 1851 |
|
1852 |
case WE_DESTROY: |
|
1648
41c3d5de9994
(svn r2152) - Fix: Chatbar in MP games is now on-top of the news window.
darkvater
parents:
1390
diff
changeset
|
1853 |
SendWindowMessage(WC_NEWS_WINDOW, 0, WE_DESTROY, 0, 0); |
7929
6c9b25842b0f
(svn r11482) -Codechange: Remove the doubled function ClrBitT and rename the remaining to fit with the naming style
skidd13
parents:
7922
diff
changeset
|
1854 |
ClrBit(_no_scroll, SCROLL_CHAT); |
649 | 1855 |
break; |
1856 |
} |
|
1857 |
} |
|
1858 |
||
1859 |
static const Widget _chat_window_widgets[] = { |
|
7363
2600aa1a6b16
(svn r10726) -Codechange: make it possible that the chat window is less than 640 pixels.
rubidium
parents:
7343
diff
changeset
|
1860 |
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
2600aa1a6b16
(svn r10726) -Codechange: make it possible that the chat window is less than 640 pixels.
rubidium
parents:
7343
diff
changeset
|
1861 |
{ WWT_PANEL, RESIZE_RIGHT, 14, 11, 319, 0, 13, 0x0, STR_NULL}, // background |
2600aa1a6b16
(svn r10726) -Codechange: make it possible that the chat window is less than 640 pixels.
rubidium
parents:
7343
diff
changeset
|
1862 |
{ WWT_PANEL, RESIZE_RIGHT, 14, 75, 257, 1, 12, 0x0, STR_NULL}, // text box |
2600aa1a6b16
(svn r10726) -Codechange: make it possible that the chat window is less than 640 pixels.
rubidium
parents:
7343
diff
changeset
|
1863 |
{ WWT_PUSHTXTBTN, RESIZE_LR, 14, 258, 319, 1, 12, STR_NETWORK_SEND, STR_NULL}, // send button |
649 | 1864 |
{ WIDGETS_END}, |
1865 |
}; |
|
1866 |
||
1867 |
static const WindowDesc _chat_window_desc = { |
|
7363
2600aa1a6b16
(svn r10726) -Codechange: make it possible that the chat window is less than 640 pixels.
rubidium
parents:
7343
diff
changeset
|
1868 |
WDP_CENTER, -26, 320, 14, 640, 14, // x, y, width, height |
5893
7e431a4abebb
(svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents:
5669
diff
changeset
|
1869 |
WC_SEND_NETWORK_MSG, WC_NONE, |
8019
fc0e94dee165
(svn r11579) -Revert(r11578): some cases of key propagation are not handled correctly.
belugas
parents:
8018
diff
changeset
|
1870 |
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET, |
649 | 1871 |
_chat_window_widgets, |
1872 |
ChatWindowWndProc |
|
1873 |
}; |
|
1874 |
||
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1875 |
void ShowNetworkChatQueryWindow(DestType type, int dest) |
649 | 1876 |
{ |
1877 |
Window *w; |
|
1878 |
||
1879 |
DeleteWindowById(WC_SEND_NETWORK_MSG, 0); |
|
1880 |
||
3464
6e01708de019
(svn r4309) The initial string of the chat box is always the empty string, so don't jump through hoops to check if nothing was entered and simplify the code
tron
parents:
3460
diff
changeset
|
1881 |
_edit_str_buf[0] = '\0'; |
4315
2e634e3ecd02
(svn r5968) -Feature: add auto-completion in chat-window. It completes Player-Names and
truelight
parents:
4300
diff
changeset
|
1882 |
_chat_tab_completion_active = false; |
649 | 1883 |
|
1884 |
w = AllocateWindowDesc(&_chat_window_desc); |
|
1885 |
||
7997
df87ccd00a96
(svn r11555) -Codechange: use the new members introduced in r11551.
rubidium
parents:
7966
diff
changeset
|
1886 |
w->LowerWidget(2); |
6531
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1887 |
WP(w, chatquerystr_d).caption = type; // Misuse of caption |
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1888 |
WP(w, chatquerystr_d).dest = dest; |
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1889 |
WP(w, chatquerystr_d).afilter = CS_ALPHANUMERAL; |
4445b25832c4
(svn r9719) -Fix: in-game private messages did not work for clients with a Client ID > 255.
rubidium
parents:
6492
diff
changeset
|
1890 |
InitializeTextBuffer(&WP(w, chatquerystr_d).text, _edit_str_buf, lengthof(_edit_str_buf), 0); |
649 | 1891 |
} |
1892 |
||
7998
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1893 |
/** Enum for NetworkGameWindow, referring to _network_game_window_widgets */ |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1894 |
enum NetworkCompanyPasswordWindowWidgets { |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1895 |
NCPWW_CLOSE, ///< Close 'X' button |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1896 |
NCPWW_CAPTION, ///< Caption of the whole window |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1897 |
NCPWW_BACKGROUND, ///< The background of the interface |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1898 |
NCPWW_LABEL, ///< Label in front of the password field |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1899 |
NCPWW_PASSWORD, ///< Input field for the password |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1900 |
NCPWW_SAVE_AS_DEFAULT_PASSWORD, ///< Toggle 'button' for saving the current password as default password |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1901 |
NCPWW_CANCEL, ///< Close the window without changing anything |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1902 |
NCPWW_OK, ///< Safe the password etc. |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1903 |
}; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1904 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1905 |
static void NetworkCompanyPasswordWindowWndProc(Window *w, WindowEvent *e) |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1906 |
{ |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1907 |
switch (e->event) { |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1908 |
case WE_PAINT: |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1909 |
DrawWindowWidgets(w); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1910 |
DrawEditBox(w, &WP(w, chatquerystr_d), 4); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1911 |
break; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1912 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1913 |
case WE_CLICK: |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1914 |
switch (e->we.click.widget) { |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1915 |
case NCPWW_OK: { |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1916 |
if (w->IsWidgetLowered(NCPWW_SAVE_AS_DEFAULT_PASSWORD)) { |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1917 |
snprintf(_network_default_company_pass, lengthof(_network_default_company_pass), "%s", _edit_str_buf); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1918 |
} |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1919 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1920 |
/* empty password is a '*' because of console argument */ |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1921 |
if (StrEmpty(_edit_str_buf)) snprintf(_edit_str_buf, lengthof(_edit_str_buf), "*"); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1922 |
char *password = _edit_str_buf; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1923 |
NetworkChangeCompanyPassword(1, &password); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1924 |
} |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1925 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1926 |
/* FALL THROUGH */ |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1927 |
case NCPWW_CANCEL: |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1928 |
DeleteWindow(w); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1929 |
break; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1930 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1931 |
case NCPWW_SAVE_AS_DEFAULT_PASSWORD: |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1932 |
w->ToggleWidgetLoweredState(NCPWW_SAVE_AS_DEFAULT_PASSWORD); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1933 |
SetWindowDirty(w); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1934 |
break; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1935 |
} |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1936 |
break; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1937 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1938 |
case WE_MOUSELOOP: |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1939 |
HandleEditBox(w, &WP(w, chatquerystr_d), 4); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1940 |
break; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1941 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1942 |
case WE_KEYPRESS: |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1943 |
switch (HandleEditBoxKey(w, &WP(w, chatquerystr_d), 4, e)) { |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1944 |
case 1: // Return |
8087
25e5cc4a5344
(svn r11648) -Fix [FS#1560]: the company password was not set when one pressed the enter key.
rubidium
parents:
8082
diff
changeset
|
1945 |
e->event = WE_CLICK; |
25e5cc4a5344
(svn r11648) -Fix [FS#1560]: the company password was not set when one pressed the enter key.
rubidium
parents:
8082
diff
changeset
|
1946 |
e->we.click.widget = NCPWW_OK; |
25e5cc4a5344
(svn r11648) -Fix [FS#1560]: the company password was not set when one pressed the enter key.
rubidium
parents:
8082
diff
changeset
|
1947 |
NetworkCompanyPasswordWindowWndProc(w, e); |
25e5cc4a5344
(svn r11648) -Fix [FS#1560]: the company password was not set when one pressed the enter key.
rubidium
parents:
8082
diff
changeset
|
1948 |
break; |
25e5cc4a5344
(svn r11648) -Fix [FS#1560]: the company password was not set when one pressed the enter key.
rubidium
parents:
8082
diff
changeset
|
1949 |
|
7998
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1950 |
case 2: // Escape |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1951 |
DeleteWindow(w); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1952 |
break; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1953 |
} |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1954 |
break; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1955 |
} |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1956 |
} |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1957 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1958 |
static const Widget _ncp_window_widgets[] = { |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1959 |
{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1960 |
{ WWT_CAPTION, RESIZE_NONE, 14, 11, 299, 0, 13, STR_COMPANY_PASSWORD_CAPTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1961 |
{ WWT_PANEL, RESIZE_NONE, 14, 0, 299, 14, 50, 0x0, STR_NULL}, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1962 |
{ WWT_TEXT, RESIZE_NONE, 14, 5, 100, 19, 30, STR_COMPANY_PASSWORD, STR_NULL}, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1963 |
{ WWT_PANEL, RESIZE_NONE, 14, 101, 294, 19, 30, 0x0, STR_NULL}, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1964 |
{ WWT_TEXTBTN, RESIZE_NONE, 14, 101, 294, 35, 46, STR_MAKE_DEFAULT_COMPANY_PASSWORD, STR_MAKE_DEFAULT_COMPANY_PASSWORD_TIP}, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1965 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 0, 149, 51, 62, STR_012E_CANCEL, STR_COMPANY_PASSWORD_CANCEL}, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1966 |
{ WWT_PUSHTXTBTN, RESIZE_NONE, 14, 150, 299, 51, 62, STR_012F_OK, STR_COMPANY_PASSWORD_OK}, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1967 |
{ WIDGETS_END}, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1968 |
}; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1969 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1970 |
static const WindowDesc _ncp_window_desc = { |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1971 |
WDP_AUTO, WDP_AUTO, 300, 63, 300, 63, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1972 |
WC_COMPANY_PASSWORD_WINDOW, WC_NONE, |
8019
fc0e94dee165
(svn r11579) -Revert(r11578): some cases of key propagation are not handled correctly.
belugas
parents:
8018
diff
changeset
|
1973 |
WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON, |
7998
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1974 |
_ncp_window_widgets, |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1975 |
NetworkCompanyPasswordWindowWndProc |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1976 |
}; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1977 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1978 |
void ShowNetworkCompanyPasswordWindow() |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1979 |
{ |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1980 |
DeleteWindowById(WC_COMPANY_PASSWORD_WINDOW, 0); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1981 |
|
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1982 |
_edit_str_buf[0] = '\0'; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1983 |
Window *w = AllocateWindowDesc(&_ncp_window_desc); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1984 |
WP(w, chatquerystr_d).afilter = CS_ALPHANUMERAL; |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1985 |
InitializeTextBuffer(&WP(w, chatquerystr_d).text, _edit_str_buf, min(lengthof(_network_default_company_pass), lengthof(_edit_str_buf)), 0); |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1986 |
} |
9cf9f9153262
(svn r11556) -Feature: allow setting a default password for new companies in network games.
rubidium
parents:
7997
diff
changeset
|
1987 |
|
543
946badd71033
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
1988 |
#endif /* ENABLE_NETWORK */ |