257 lines
7.9 KiB
Plaintext
257 lines
7.9 KiB
Plaintext
/*
|
|
* Copyright (c) 2016-2022 Vera Visions LLC.
|
|
*
|
|
* Permission to use, copy, modify, and distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
|
|
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
|
|
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
CWidget fn_viewgameinfo;
|
|
CMainButton vgi_btnDone;
|
|
CFrame vgi_frPlayers;
|
|
CScrollbar vgi_sbPlayers;
|
|
CFrame vgi_frServerinfo;
|
|
CScrollbar vgi_sbServerinfo;
|
|
|
|
CListBox vgi_lbPlayerNum;
|
|
CListBox vgi_lbPlayerName;
|
|
CListBox vgi_lbPlayerKills;
|
|
CListBox vgi_lbPlayerTime;
|
|
CListBox vgi_lbServerKey;
|
|
CListBox vgi_lbServerValue;
|
|
|
|
string g_vgiLabelName;
|
|
string g_vgiLabelAddress;
|
|
string g_vgiLabelPing;
|
|
|
|
static void
|
|
vgi_btndone_start(void)
|
|
{
|
|
static void vgi_btndone_end(void) {
|
|
if (g_menuLAN == true)
|
|
g_menupage = PAGE_LANGAMES;
|
|
else
|
|
g_menupage = PAGE_INTERNETGAMES;
|
|
}
|
|
localsound("../media/launch_dnmenu1.wav");
|
|
header.SetStartEndPos(45, 45, 50, 172);
|
|
header.SetStartEndSize(460, 80, 156, 26);
|
|
header.m_lerp = 0.0f;
|
|
header.m_visible = TRUE;
|
|
header.SetHeader(HEAD_MULTI);
|
|
header.SetExecute(vgi_btndone_end);
|
|
}
|
|
|
|
static void
|
|
vgi_sbplayers_changed(int val)
|
|
{
|
|
vgi_lbPlayerNum.SetScroll(val);
|
|
vgi_lbPlayerName.SetScroll(val);
|
|
vgi_lbPlayerKills.SetScroll(val);
|
|
vgi_lbPlayerTime.SetScroll(val);
|
|
}
|
|
|
|
static void
|
|
vgi_sbserverinfo_changed(int val)
|
|
{
|
|
vgi_lbServerKey.SetScroll(val);
|
|
vgi_lbServerValue.SetScroll(val);
|
|
}
|
|
|
|
static void
|
|
vgi_lbplayers_clicked(int val)
|
|
{
|
|
vgi_lbPlayerNum.SetSelected(val, FALSE);
|
|
vgi_lbPlayerName.SetSelected(val, FALSE);
|
|
vgi_lbPlayerKills.SetSelected(val, FALSE);
|
|
vgi_lbPlayerTime.SetSelected(val, FALSE);
|
|
}
|
|
|
|
static void
|
|
vgi_lbserverinfo_clicked(int val)
|
|
{
|
|
vgi_lbServerKey.SetSelected(val, FALSE);
|
|
vgi_lbServerValue.SetSelected(val, FALSE);
|
|
}
|
|
|
|
/* this gets called every time we prepare a new menu for the player */
|
|
void
|
|
menu_viewgameinfo_setserver(float serverNum)
|
|
{
|
|
float playerCount = stof(gethostcachestring(srv_fldPlayers, serverNum));
|
|
string serverInfo = gethostcachestring(srv_fldServerInfo, serverNum);
|
|
|
|
vgi_sbPlayers.SetMax(playerCount+1);
|
|
|
|
//print(sprintf("Server Num? %d\n", serverNum));
|
|
//print(sprintf("PlayerCount? %d\n", playerCount));
|
|
//print(sprintf("ServerInfo? %S\n", serverInfo));
|
|
//print(sprintf("Player? %S\n", gethostcachestring( srv_fldPlayer0, serverNum )));
|
|
//print(sprintf("Player1? %S\n", gethostcachestring( gethostcacheindexforkey("player1"), serverNum )));
|
|
//print(sprintf("Player2? %S\n", gethostcachestring( gethostcacheindexforkey("player0"), serverNum )));
|
|
|
|
vgi_lbPlayerNum.Clear();
|
|
vgi_lbPlayerName.Clear();
|
|
vgi_lbPlayerKills.Clear();
|
|
vgi_lbPlayerTime.Clear();
|
|
vgi_lbServerKey.Clear();
|
|
vgi_lbServerValue.Clear();
|
|
|
|
g_vgiLabelName = gethostcachestring(srv_fldName, serverNum);
|
|
g_vgiLabelAddress = gethostcachestring(srv_fldAdress, serverNum);
|
|
|
|
float serverPing = stof(gethostcachestring(srv_fldPing, serverNum));
|
|
|
|
if (serverPing == 65534)
|
|
g_vgiLabelPing = _("PING_ICE");
|
|
else
|
|
g_vgiLabelPing = sprintf(_("PING_IN_MS"), serverPing);
|
|
|
|
/* add the player info entries */
|
|
for (int i = 0; i < playerCount; i++) {
|
|
#if 0
|
|
string playerName = gethostcachestring(gethostcacheindexforkey(sprintf("player%i", i)), serverNum);
|
|
#else
|
|
string playerName = sprintf("Player %i", i);
|
|
#endif
|
|
vgi_lbPlayerNum.AddEntry(sprintf("%i", i+1i));
|
|
vgi_lbPlayerName.AddEntry(playerName);
|
|
vgi_lbPlayerKills.AddEntry(sprintf("%i", i));
|
|
vgi_lbPlayerTime.AddEntry(sprintf("%i", i));
|
|
}
|
|
|
|
/* add the server info entries */
|
|
int serverInfoCount = (int)tokenizebyseparator(serverInfo, "\\");
|
|
vgi_sbServerinfo.SetMax((serverInfoCount/2)+1);
|
|
for (int i = 0; i < serverInfoCount; i+=2) {
|
|
vgi_lbServerKey.AddEntry(argv(i+1));
|
|
vgi_lbServerValue.AddEntry(argv(i+0));
|
|
}
|
|
}
|
|
|
|
void
|
|
menu_viewgameinfo_init(void)
|
|
{
|
|
fn_viewgameinfo = spawn(CWidget);
|
|
|
|
vgi_btnDone = spawn(CMainButton);
|
|
vgi_btnDone.SetImage(BTN_DONE);
|
|
vgi_btnDone.SetExecute(vgi_btndone_start);
|
|
vgi_btnDone.SetPos(50, 405);
|
|
Widget_Add(fn_viewgameinfo, vgi_btnDone);
|
|
|
|
vgi_frPlayers = spawn(CFrame);
|
|
vgi_frPlayers.SetPos(216,156);
|
|
vgi_frPlayers.SetSize(404,154);
|
|
Widget_Add(fn_viewgameinfo, vgi_frPlayers);
|
|
|
|
vgi_frServerinfo = spawn(CFrame);
|
|
vgi_frServerinfo.SetPos(216,336);
|
|
vgi_frServerinfo.SetSize(404,124);
|
|
Widget_Add(fn_viewgameinfo, vgi_frServerinfo);
|
|
|
|
vgi_sbPlayers = spawn(CScrollbar);
|
|
vgi_sbPlayers.SetPos(604,156);
|
|
vgi_sbPlayers.SetHeight(154);
|
|
vgi_sbPlayers.SetCallback(vgi_sbplayers_changed);
|
|
Widget_Add(fn_viewgameinfo, vgi_sbPlayers);
|
|
|
|
vgi_sbServerinfo = spawn(CScrollbar);
|
|
vgi_sbServerinfo.SetPos(604,336);
|
|
vgi_sbServerinfo.SetHeight(124);
|
|
vgi_sbServerinfo.SetCallback(vgi_sbserverinfo_changed);
|
|
Widget_Add(fn_viewgameinfo, vgi_sbServerinfo);
|
|
|
|
/* listboxes ahoy */
|
|
vgi_lbPlayerNum = spawn(CListBox);
|
|
vgi_lbPlayerNum.SetPos(219,159);
|
|
vgi_lbPlayerNum.SetSize(25,148);
|
|
vgi_lbPlayerNum.SetChanged(vgi_lbplayers_clicked);
|
|
Widget_Add(fn_viewgameinfo, vgi_lbPlayerNum);
|
|
|
|
vgi_lbPlayerName = spawn(CListBox);
|
|
vgi_lbPlayerName.SetPos(244,159);
|
|
vgi_lbPlayerName.SetSize(100, 148);
|
|
vgi_lbPlayerName.SetChanged(vgi_lbplayers_clicked);
|
|
Widget_Add(fn_viewgameinfo, vgi_lbPlayerName);
|
|
|
|
vgi_lbPlayerKills = spawn(CListBox);
|
|
vgi_lbPlayerKills.SetPos(344,159);
|
|
vgi_lbPlayerKills.SetSize(35, 148);
|
|
vgi_lbPlayerKills.SetChanged(vgi_lbplayers_clicked);
|
|
Widget_Add(fn_viewgameinfo, vgi_lbPlayerKills);
|
|
|
|
vgi_lbPlayerTime = spawn(CListBox);
|
|
vgi_lbPlayerTime.SetPos(379,159);
|
|
vgi_lbPlayerTime.SetSize(225, 148);
|
|
vgi_lbPlayerTime.SetChanged(vgi_lbplayers_clicked);
|
|
Widget_Add(fn_viewgameinfo, vgi_lbPlayerTime);
|
|
|
|
|
|
vgi_lbServerKey = spawn(CListBox);
|
|
vgi_lbServerKey.SetPos(220,339);
|
|
vgi_lbServerKey.SetSize(150,118);
|
|
vgi_lbServerKey.SetChanged(vgi_lbserverinfo_clicked);
|
|
Widget_Add(fn_viewgameinfo, vgi_lbServerKey);
|
|
|
|
vgi_lbServerValue = spawn(CListBox);
|
|
vgi_lbServerValue.SetPos(370, 339);
|
|
vgi_lbServerValue.SetSize(232,118);
|
|
vgi_lbServerValue.SetChanged(vgi_lbserverinfo_clicked);
|
|
Widget_Add(fn_viewgameinfo, vgi_lbServerValue);
|
|
|
|
menu_viewgameinfo_setserver(0);
|
|
}
|
|
|
|
void
|
|
menu_viewgameinfo_draw(void)
|
|
{
|
|
Widget_Draw(fn_viewgameinfo);
|
|
Header_Draw(HEAD_MULTI);
|
|
|
|
/* draw the left side-bar elements and descriptions */
|
|
WLabel_Static(57, 156, m_reslbl[IDS_PLAYERINFO_SERVERNAME], 14, 14, col_button_bg,
|
|
1.0f, 0, font_label_b);
|
|
WLabel_Static(57, 240, m_reslbl[IDS_PLAYERINFO_SERVERIP], 14, 14, col_button_bg,
|
|
1.0f, 0, font_label_b);
|
|
WLabel_Static(57, 324, m_reslbl[IDS_PLAYERINFO_SERVERPING], 14, 14, col_button_bg,
|
|
1.0f, 0, font_label_b);
|
|
|
|
WField_Static(56, 189, g_vgiLabelName, 128, 64, [1,1,1],
|
|
1.0f, AF_LEFT | AF_TOP, font_label);
|
|
WLabel_Static(56, 272, g_vgiLabelAddress, 11, 11, [1,1,1],
|
|
1.0f, 0, font_label);
|
|
WLabel_Static(56, 356, g_vgiLabelPing, 11, 11, [1,1,1],
|
|
1.0f, 0, font_label);
|
|
|
|
/* the descriptions over the two frames */
|
|
/* player list */
|
|
WLabel_Static(220, 143, m_reslbl[IDS_PLAYERINFO_NUMBER], 11, 11, [1,1,1],
|
|
1.0f, 0, font_arial);
|
|
WLabel_Static(245, 143, m_reslbl[IDS_PLAYERINFO_NAME], 11, 11, [1,1,1],
|
|
1.0f, 0, font_arial);
|
|
WLabel_Static(345, 143, m_reslbl[IDS_PLAYERINFO_KILLS], 11, 11, [1,1,1],
|
|
1.0f, 0, font_arial);
|
|
WLabel_Static(380, 143, m_reslbl[IDS_PLAYERINFO_TIME], 11, 11, [1,1,1],
|
|
1.0f, 0, font_arial);
|
|
/* serverinfo */
|
|
WLabel_Static(220, 323, m_reslbl[IDS_PLAYERINFO_RULENAME], 11, 11, [1,1,1],
|
|
1.0f, 0, font_arial);
|
|
WLabel_Static(370, 323, m_reslbl[IDS_PLAYERINFO_RULEVALUE], 11, 11, [1,1,1],
|
|
1.0f, 0, font_arial);
|
|
}
|
|
|
|
void
|
|
menu_viewgameinfo_input(float evtype, float x, float y, float devid)
|
|
{
|
|
Widget_Input(fn_viewgameinfo, evtype, x, y, devid);
|
|
}
|