Menu-FN: Make Chat Rooms and Controls accessible from other menus, keeping track of where we originated from

This commit is contained in:
Marco Cawthorne 2023-11-18 14:34:16 -08:00
parent 1ccb640ce6
commit af4212987f
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
6 changed files with 99 additions and 19 deletions

View File

@ -95,9 +95,9 @@ enum
typedef enum
{
RESOURCE_UNCHECKED,
RESOURCE_AVAILABLE,
RESOURCE_MISSING
RESOURCE_UNCHECKED, /**<< State of the resource is unknown. Check it with Resource_Check() first. */
RESOURCE_AVAILABLE, /**<< The resource exists. */
RESOURCE_MISSING /**<< The resource is unavailable. */
} resource_t;
resource_t
@ -112,12 +112,10 @@ Resource_Check(string fname)
bool
Resource_Available(resource_t res)
{
if (res == RESOURCE_MISSING)
return false;
else if (res == RESOURCE_AVAILABLE)
if (res == RESOURCE_AVAILABLE)
return true;
return RESOURCE_UNCHECKED;
return false;
}
void m_hide(void);
@ -126,4 +124,10 @@ void
warning(string msg)
{
print(sprintf("^1WARNING: ^7%s\n", msg));
}
bool
mp_connected(void)
{
return (!autocvar__menu_singleplayer && clientstate() == 2 && !g_background) ? true : false;
}

View File

@ -14,6 +14,8 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
var bool g_menuChatInternet = false;
CFrame cr_frLog;
CFrame cr_frUsers;
CTextBox cr_tbInput;
@ -388,11 +390,19 @@ void
cr_btndone_start(void)
{
static void cr_btndone_end(void) {
g_menupage = PAGE_MULTIPLAYER;
if (g_menuChatInternet == false)
g_menupage = PAGE_MULTIPLAYER;
else
g_menupage = PAGE_INTERNETGAMES;
}
//cr_closeconnection();
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45,45,50,239);
if (g_menuChatInternet == false)
header.SetStartEndPos(45,45,50,239);
else
header.SetStartEndPos(45,45,30,364);
header.SetStartEndSize(460,80,156,26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;

View File

@ -14,6 +14,8 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
var bool g_menuControlsMultiplayer = false;
CWidget fn_configuration;
CMainButton cf_btnControls;
CMainButton cf_btnAudio;
@ -29,6 +31,7 @@ btn_controls_start(void)
static void btn_controls_end(void) {
g_menupage = PAGE_CONTROLS;
}
g_menuControlsMultiplayer = false;
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(50,140,45,45);
header.SetStartEndSize(156,26,460,80);

View File

@ -51,11 +51,22 @@ void
ctrl_btnok_start(void)
{
static void ctrl_btnok_end(void) {
g_menupage = PAGE_CONFIGURATION;
if (g_menuControlsMultiplayer == false)
g_menupage = PAGE_CONFIGURATION;
else
g_menupage = PAGE_MULTIPLAYER;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45, 45, 50, 140);
if (g_menuControlsMultiplayer == false)
header.SetStartEndPos(45, 45, 50, 140);
else
if (mp_connected())
header.SetStartEndPos(45, 45, 50, 364);
else
header.SetStartEndPos(45, 45, 50, 332);
header.SetStartEndSize(460, 80, 156, 26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
@ -67,12 +78,24 @@ void
ctrl_btncancel_start(void)
{
static void ctrl_btnok_end(void) {
g_menupage = PAGE_CONFIGURATION;
if (g_menuControlsMultiplayer == false)
g_menupage = PAGE_CONFIGURATION;
else
g_menupage = PAGE_MULTIPLAYER;
}
localsound("../media/launch_dnmenu1.wav");
header.SetStartEndPos(45, 45, 50, 172);
if (g_menuControlsMultiplayer == false)
header.SetStartEndPos(45, 45, 50, 140);
else
if (mp_connected())
header.SetStartEndPos(45, 45, 50, 364);
else
header.SetStartEndPos(45, 45, 50, 332);
header.SetStartEndSize(460, 80, 156, 26);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CONTROLS);

View File

@ -105,6 +105,24 @@ inet_btndone_start(void)
header.SetExecute(inet_btndone_end);
}
void
inet_btnchatrooms_start(void)
{
static void mp_btnchatrooms_end(void) {
g_menupage = PAGE_CHATROOMS;
}
g_menuChatInternet = true;
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(30,364,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_ROOMS);
header.SetExecute(mp_btnchatrooms_end);
}
void
inet_btnrefresh(void)
{
@ -250,7 +268,7 @@ menu_internetgames_init(void)
inet_btnChatRooms = spawn(CMainButton);
inet_btnChatRooms.SetImage(BTN_CHATROOMS);
//inet_btnChatRooms.SetExecute(btn_console);
inet_btnChatRooms.SetExecute(inet_btnchatrooms_start);
inet_btnChatRooms.SetPos(30,364);
Widget_Add(fn_inet, inet_btnChatRooms);

View File

@ -139,6 +139,7 @@ mp_btnchatrooms_start(void)
static void mp_btnchatrooms_end(void) {
g_menupage = PAGE_CHATROOMS;
}
g_menuChatInternet = false;
localsound("../media/launch_upmenu1.wav");
header.SetStartEndPos(50,239,45,45);
header.SetStartEndSize(156,26,460,80);
@ -163,6 +164,28 @@ mp_btncustomize_start(void)
header.SetExecute(mp_btncustomize_end);
}
void
mp_btncontrols_start(void)
{
static void btn_controls_end(void) {
g_menupage = PAGE_CONTROLS;
}
g_menuControlsMultiplayer = true;
localsound("../media/launch_upmenu1.wav");
if (mp_connected())
header.SetStartEndPos(50,364,45,45);
else
header.SetStartEndPos(50,332,45,45);
header.SetStartEndSize(156,26,460,80);
header.m_lerp = 0.0f;
header.m_visible = TRUE;
header.SetHeader(HEAD_CONTROLS);
header.SetExecute(btn_controls_end);
}
void
mp_btnresume(void)
{
@ -228,7 +251,7 @@ menu_multiplayer_init(void)
mp_btnControls = spawn(CMainButton);
mp_btnControls.SetImage(BTN_CONTROLS);
//mp_btnControls.SetExecute(btn_console);
mp_btnControls.SetExecute(mp_btncontrols_start);
mp_btnControls.SetPos(50,332);
Widget_Add(fn_multiplayer, mp_btnControls);
@ -238,7 +261,6 @@ menu_multiplayer_init(void)
mp_btnDone.SetPos(50,364);
Widget_Add(fn_multiplayer, mp_btnDone);
/* connected menu */
mp_btn2Resume = spawn(CMainButton);
mp_btn2Resume.SetImage(BTN_RESUMEGAME);
@ -284,7 +306,7 @@ menu_multiplayer_init(void)
mp_btn2Controls = spawn(CMainButton);
mp_btn2Controls.SetImage(BTN_CONTROLS);
//mp_btn2Controls.SetExecute(btn_console);
mp_btn2Controls.SetExecute(mp_btncontrols_start);
mp_btn2Controls.SetPos(50,364);
Widget_Add(fn_multiplayer2, mp_btn2Controls);
@ -302,7 +324,7 @@ menu_multiplayer_draw(void)
{
Header_Draw(HEAD_MULTI);
if (!autocvar__menu_singleplayer && clientstate() == 2 && !g_background) {
if (mp_connected()) {
Widget_Draw(fn_multiplayer2);
WLabel_Static(215, 148, m_reslbl[IDS_MULTI_RESUMEHELP], HELPTXT_SIZE, HELPTXT_SIZE, col_help,
@ -367,7 +389,7 @@ menu_multiplayer_input(float evtype, float scanx, float chary, float devid)
if (g_connectstatus)
return;
if (!autocvar__menu_singleplayer && clientstate() == 2 && !g_background)
if (mp_connected())
Widget_Input(fn_multiplayer2, evtype, scanx, chary, devid);
else
Widget_Input(fn_multiplayer, evtype, scanx, chary, devid);