Menu-FN: Added the slightly buggy 'View game info' function. I now need to write a cache for the server entries, because the engine might clear its own cache by the time we want to display entries.
This commit is contained in:
parent
ae8c2f16ba
commit
0dc3f19b1a
8 changed files with 270 additions and 41 deletions
|
@ -117,7 +117,6 @@ m_init(void)
|
||||||
registercommand("map_background");
|
registercommand("map_background");
|
||||||
registercommand("menu_musicstart");
|
registercommand("menu_musicstart");
|
||||||
registercommand("richpresence_dump");
|
registercommand("richpresence_dump");
|
||||||
registercommand("platformRefreshUpdates");
|
|
||||||
|
|
||||||
Font_Load("fonts/fontcon.font", font_console);
|
Font_Load("fonts/fontcon.font", font_console);
|
||||||
Font_Load("fonts/menu_label.font", font_label);
|
Font_Load("fonts/menu_label.font", font_label);
|
||||||
|
@ -409,9 +408,6 @@ m_consolecommand(string cmd)
|
||||||
localcmd(sprintf("maxplayers 2\nset coop 1\nset sv_background 1\nmap %s\n",
|
localcmd(sprintf("maxplayers 2\nset coop 1\nset sv_background 1\nmap %s\n",
|
||||||
argv(1)));
|
argv(1)));
|
||||||
break;
|
break;
|
||||||
case "platformRefreshUpdates":
|
|
||||||
Updates_RefreshState();
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ CListBox inet_lbServers_Map;
|
||||||
CListBox inet_lbServers_Game;
|
CListBox inet_lbServers_Game;
|
||||||
CListBox inet_lbServers_Players;
|
CListBox inet_lbServers_Players;
|
||||||
CListBox inet_lbServers_Addresses;
|
CListBox inet_lbServers_Addresses;
|
||||||
|
CListBox inet_lbServers_CacheIndex;
|
||||||
CScrollbar inet_sbServers;
|
CScrollbar inet_sbServers;
|
||||||
|
|
||||||
CDialog inet_dgRefresh;
|
CDialog inet_dgRefresh;
|
||||||
|
@ -69,6 +70,25 @@ inet_btncreate_start(void)
|
||||||
header.SetExecute(inet_btncreate_end);
|
header.SetExecute(inet_btncreate_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void menu_viewgameinfo_setserver(float serverNum);
|
||||||
|
void
|
||||||
|
inet_btnview_start(void)
|
||||||
|
{
|
||||||
|
static void lan_btnview_end(void) {
|
||||||
|
g_menupage = PAGE_VIEWGAMEINFO;
|
||||||
|
}
|
||||||
|
localsound("../media/launch_upmenu1.wav");
|
||||||
|
header.SetStartEndPos(30,172,45,45);
|
||||||
|
header.SetStartEndSize(156,26,460,80);
|
||||||
|
header.m_lerp = 0.0f;
|
||||||
|
header.m_visible = TRUE;
|
||||||
|
header.SetHeader(HEAD_MULTI);
|
||||||
|
header.SetExecute(lan_btnview_end);
|
||||||
|
|
||||||
|
float cacheIndex = stof(inet_lbServers_CacheIndex.GetSelectedItem());
|
||||||
|
menu_viewgameinfo_setserver(cacheIndex);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
inet_btndone_start(void)
|
inet_btndone_start(void)
|
||||||
{
|
{
|
||||||
|
@ -102,7 +122,7 @@ inet_refreshframe(void)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Master_RefreshCache();
|
Master_RefreshCache();
|
||||||
count = gethostcachevalue(SLIST_HOSTCACHEVIEWCOUNT);
|
count = Master_GetInternetServers();
|
||||||
refreshtime = time + 0.5f;
|
refreshtime = time + 0.5f;
|
||||||
|
|
||||||
inet_lbServers_Name.Clear();
|
inet_lbServers_Name.Clear();
|
||||||
|
@ -111,6 +131,7 @@ inet_refreshframe(void)
|
||||||
inet_lbServers_Game.Clear();
|
inet_lbServers_Game.Clear();
|
||||||
inet_lbServers_Players.Clear();
|
inet_lbServers_Players.Clear();
|
||||||
inet_lbServers_Addresses.Clear();
|
inet_lbServers_Addresses.Clear();
|
||||||
|
inet_lbServers_CacheIndex.Clear();
|
||||||
|
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
string address;
|
string address;
|
||||||
|
@ -135,6 +156,7 @@ inet_refreshframe(void)
|
||||||
inet_lbServers_Game.AddEntry(gethostcachestring(srv_fldGame, i));
|
inet_lbServers_Game.AddEntry(gethostcachestring(srv_fldGame, i));
|
||||||
inet_lbServers_Players.AddEntry(players);
|
inet_lbServers_Players.AddEntry(players);
|
||||||
inet_lbServers_Addresses.AddEntry(address);
|
inet_lbServers_Addresses.AddEntry(address);
|
||||||
|
inet_lbServers_CacheIndex.AddEntry(sprintf("%i", i));
|
||||||
NSLog("Adding %s to the Internet server list", address);
|
NSLog("Adding %s to the Internet server list", address);
|
||||||
added++;
|
added++;
|
||||||
}
|
}
|
||||||
|
@ -157,6 +179,7 @@ inet_lb_clicked(int val)
|
||||||
inet_lbServers_Game.SetSelected(val, FALSE);
|
inet_lbServers_Game.SetSelected(val, FALSE);
|
||||||
inet_lbServers_Players.SetSelected(val, FALSE);
|
inet_lbServers_Players.SetSelected(val, FALSE);
|
||||||
inet_lbServers_Addresses.SetSelected(val, FALSE);
|
inet_lbServers_Addresses.SetSelected(val, FALSE);
|
||||||
|
inet_lbServers_CacheIndex.SetSelected(val, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -188,7 +211,7 @@ menu_internetgames_init(void)
|
||||||
|
|
||||||
inet_btnViewGame = spawn(CMainButton);
|
inet_btnViewGame = spawn(CMainButton);
|
||||||
inet_btnViewGame.SetImage(BTN_GAMEINFO);
|
inet_btnViewGame.SetImage(BTN_GAMEINFO);
|
||||||
//inet_btnViewGame.SetExecute(btn_console);
|
inet_btnViewGame.SetExecute(inet_btnview_start);
|
||||||
inet_btnViewGame.SetPos(30,204);
|
inet_btnViewGame.SetPos(30,204);
|
||||||
Widget_Add(fn_inet, inet_btnViewGame);
|
Widget_Add(fn_inet, inet_btnViewGame);
|
||||||
|
|
||||||
|
@ -258,6 +281,7 @@ menu_internetgames_init(void)
|
||||||
Widget_Add(fn_inet, inet_lbServers_Players);
|
Widget_Add(fn_inet, inet_lbServers_Players);
|
||||||
|
|
||||||
inet_lbServers_Addresses = spawn(CListBox);
|
inet_lbServers_Addresses = spawn(CListBox);
|
||||||
|
inet_lbServers_CacheIndex = spawn(CListBox);
|
||||||
|
|
||||||
inet_sbServers = spawn(CScrollbar);
|
inet_sbServers = spawn(CScrollbar);
|
||||||
inet_sbServers.SetPos(614,141);
|
inet_sbServers.SetPos(614,141);
|
||||||
|
|
|
@ -115,6 +115,21 @@ lan_btncreate_start(void)
|
||||||
header.SetExecute(lan_btncreate_end);
|
header.SetExecute(lan_btncreate_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
lan_btnview_start(void)
|
||||||
|
{
|
||||||
|
static void lan_btnview_end(void) {
|
||||||
|
g_menupage = PAGE_VIEWGAMEINFO;
|
||||||
|
}
|
||||||
|
localsound("../media/launch_upmenu1.wav");
|
||||||
|
header.SetStartEndPos(30,172,45,45);
|
||||||
|
header.SetStartEndSize(156,26,460,80);
|
||||||
|
header.m_lerp = 0.0f;
|
||||||
|
header.m_visible = TRUE;
|
||||||
|
header.SetHeader(HEAD_MULTI);
|
||||||
|
header.SetExecute(lan_btnview_end);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
lan_btndone_start(void)
|
lan_btndone_start(void)
|
||||||
{
|
{
|
||||||
|
@ -184,7 +199,7 @@ menu_langames_init(void)
|
||||||
|
|
||||||
lan_btnViewGame = spawn(CMainButton);
|
lan_btnViewGame = spawn(CMainButton);
|
||||||
lan_btnViewGame.SetImage(BTN_GAMEINFO);
|
lan_btnViewGame.SetImage(BTN_GAMEINFO);
|
||||||
//lan_btnViewGame.SetExecute(btn_console);
|
lan_btnViewGame.SetExecute(lan_btnview_start);
|
||||||
lan_btnViewGame.SetPos(30,204);
|
lan_btnViewGame.SetPos(30,204);
|
||||||
Widget_Add(fn_lan, lan_btnViewGame);
|
Widget_Add(fn_lan, lan_btnViewGame);
|
||||||
|
|
||||||
|
|
|
@ -14,17 +14,240 @@
|
||||||
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
* 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) {
|
||||||
|
g_menupage = PAGE_MULTIPLAYER;
|
||||||
|
}
|
||||||
|
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 = "Unavailable (ICE)";
|
||||||
|
else
|
||||||
|
g_vgiLabelPing = sprintf("%d 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
|
void
|
||||||
menu_viewgameinfo_init(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
|
void
|
||||||
menu_viewgameinfo_draw(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
|
void
|
||||||
menu_viewgameinfo_input(float evtype, float scanx, float chary, float devid)
|
menu_viewgameinfo_input(float evtype, float x, float y, float devid)
|
||||||
{
|
{
|
||||||
|
Widget_Input(fn_viewgameinfo, evtype, x, y, devid);
|
||||||
}
|
}
|
||||||
|
|
|
@ -736,7 +736,6 @@ GameLibrary_Deactivate(void)
|
||||||
localcmd("menu_musicstart\n");
|
localcmd("menu_musicstart\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return the ID for the currently activate game. */
|
|
||||||
int
|
int
|
||||||
GameLibrary_GetCurrentGame(void)
|
GameLibrary_GetCurrentGame(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -71,7 +71,7 @@ ModServer_ParseList(string data)
|
||||||
int skip = 0;
|
int skip = 0;
|
||||||
string gamedir = argv(i);
|
string gamedir = argv(i);
|
||||||
|
|
||||||
for (int x = 0; x < gameinfo_count; x++) {
|
for (int x = 0; x < GameLibrary_GetGameCount(); x++) {
|
||||||
/* skip mods we already have. */
|
/* skip mods we already have. */
|
||||||
if (gamedir == GameLibrary_GetGameInfo(x, GAMEINFO_GAMEDIR)) {
|
if (gamedir == GameLibrary_GetGameInfo(x, GAMEINFO_GAMEDIR)) {
|
||||||
skip = 1;
|
skip = 1;
|
||||||
|
|
|
@ -102,5 +102,3 @@ bool Updates_Remove(int);
|
||||||
bool Updates_Destroy(int);
|
bool Updates_Destroy(int);
|
||||||
/** Apply all pending changes to packages. May return true/false if it succeeded in doing so. */
|
/** Apply all pending changes to packages. May return true/false if it succeeded in doing so. */
|
||||||
bool Updates_ApplyPendingChanges(void);
|
bool Updates_ApplyPendingChanges(void);
|
||||||
/** Called by the console command `platformRefreshUpdates`, which your menu needs to implement. Otherwise you will not see pending changes reflected in your menu interface. */
|
|
||||||
void Updates_RefreshState(void);
|
|
|
@ -218,6 +218,8 @@ Updates_GetInfo(int packageID, updateType_t fieldType)
|
||||||
return __NULL__;
|
return __NULL__;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Updates_RefreshStateValues(packageID);
|
||||||
|
|
||||||
switch (fieldType) {
|
switch (fieldType) {
|
||||||
case UPDATE_NAME:
|
case UPDATE_NAME:
|
||||||
return (string)updates[packageID].name;
|
return (string)updates[packageID].name;
|
||||||
|
@ -259,8 +261,6 @@ Updates_GetInfo(int packageID, updateType_t fieldType)
|
||||||
/* if we have a action, focus on that */
|
/* if we have a action, focus on that */
|
||||||
switch (updates[packageID].pending_action) {
|
switch (updates[packageID].pending_action) {
|
||||||
case UPDATEACTION_INSTALL:
|
case UPDATEACTION_INSTALL:
|
||||||
Updates_RefreshStateValues(packageID);
|
|
||||||
|
|
||||||
if (updates[packageID].dlpercentage > 0.0) {
|
if (updates[packageID].dlpercentage > 0.0) {
|
||||||
return sprintf("%d %%", updates[packageID].dlpercentage);
|
return sprintf("%d %%", updates[packageID].dlpercentage);
|
||||||
} else {
|
} else {
|
||||||
|
@ -268,23 +268,18 @@ Updates_GetInfo(int packageID, updateType_t fieldType)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UPDATEACTION_REINSTALL:
|
case UPDATEACTION_REINSTALL:
|
||||||
Updates_RefreshStateValues(packageID);
|
|
||||||
return _("UPDATE_PENDING_REINSTALL");
|
return _("UPDATE_PENDING_REINSTALL");
|
||||||
break;
|
break;
|
||||||
case UPDATEACTION_UNINSTALL:
|
case UPDATEACTION_UNINSTALL:
|
||||||
Updates_RefreshStateValues(packageID);
|
|
||||||
return _("UPDATE_PENDING_UNINSTALL");
|
return _("UPDATE_PENDING_UNINSTALL");
|
||||||
break;
|
break;
|
||||||
case UPDATEACTION_AUTOINSTALL:
|
case UPDATEACTION_AUTOINSTALL:
|
||||||
Updates_RefreshStateValues(packageID);
|
|
||||||
return _("UPDATE_PENDING_AUTOINSTALL");
|
return _("UPDATE_PENDING_AUTOINSTALL");
|
||||||
break;
|
break;
|
||||||
case UPDATEACTION_DISABLE:
|
case UPDATEACTION_DISABLE:
|
||||||
Updates_RefreshStateValues(packageID);
|
|
||||||
return _("UPDATE_PENDING_DISABLE");
|
return _("UPDATE_PENDING_DISABLE");
|
||||||
break;
|
break;
|
||||||
case UPDATEACTION_RETAIN:
|
case UPDATEACTION_RETAIN:
|
||||||
Updates_RefreshStateValues(packageID);
|
|
||||||
return _("UPDATE_PENDING_RETAIN");
|
return _("UPDATE_PENDING_RETAIN");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -399,27 +394,6 @@ Updates_ApplyPendingChanges(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* I hate having to put this in, but because we can only interact with the
|
|
||||||
engine its own package manager via console commands (they are delayed as
|
|
||||||
as result) we cannot query the result of our `pkg` commands right after
|
|
||||||
calling them via localcmd(). Therefore menus need to implement the console
|
|
||||||
command `platformRefreshUpdates` which calls this very function below.
|
|
||||||
All in the hopes of improving performance just a tiny bit. */
|
|
||||||
void
|
|
||||||
Updates_RefreshState(void)
|
|
||||||
{
|
|
||||||
/* at least try to be a bit clever about it. */
|
|
||||||
if (argv(0) == "platformRefreshUpdates") {
|
|
||||||
Updates_RefreshStateValues((int)stof(argv(1)));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* just force refresh them all otherwise. */
|
|
||||||
for (int i = 0i; i < g_platform_update_count; i++) {
|
|
||||||
Updates_RefreshStateValues(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Updater_URI_Callback(float id, float code, string data, int resourcebytes)
|
Updater_URI_Callback(float id, float code, string data, int resourcebytes)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue