/* Copyright (c) 2002-2012 Croteam Ltd. All rights reserved. */ #include "StdH.h" #include #include "MenuPrinting.h" #include "MSelectPlayers.h" #define ADD_GADGET( gd, box, up, dn, lf, rt, txt) \ gd.mg_boxOnScreen = box; \ gd.mg_pmgUp = up; \ gd.mg_pmgDown = dn; \ gd.mg_pmgLeft = lf; \ gd.mg_pmgRight = rt; \ gd.mg_strText = txt; \ gm_lhGadgets.AddTail(gd.mg_lnNode); #define TRIGGER_MG(mg, y, up, down, text, astr) \ mg.mg_pmgUp = &up; \ mg.mg_pmgDown = &down; \ mg.mg_boxOnScreen = BoxMediumRow(y); \ gm_lhGadgets.AddTail(mg.mg_lnNode); \ mg.mg_astrTexts = astr; \ mg.mg_ctTexts = sizeof(astr) / sizeof(astr[0]); \ mg.mg_iSelected = 0; \ mg.mg_strLabel = text; \ mg.mg_strValue = astr[0]; extern CTString astrNoYes[2]; extern CTString astrSplitScreenRadioTexts[4]; extern void SelectPlayersFillMenu(void); extern void SelectPlayersApplyMenu(void); void CSelectPlayersMenu::Initialize_t(void) { // intialize split screen menu gm_mgTitle.mg_boxOnScreen = BoxTitle(); gm_mgTitle.mg_strText = TRANS("SELECT PLAYERS"); gm_lhGadgets.AddTail(gm_mgTitle.mg_lnNode); TRIGGER_MG(gm_mgDedicated, 0, gm_mgStart, gm_mgObserver, TRANS("Dedicated:"), astrNoYes); gm_mgDedicated.mg_strTip = TRANS("select to start dedicated server"); gm_mgDedicated.mg_pOnTriggerChange = NULL; TRIGGER_MG(gm_mgObserver, 1, gm_mgDedicated, gm_mgSplitScreenCfg, TRANS("Observer:"), astrNoYes); gm_mgObserver.mg_strTip = TRANS("select to join in for observing, not for playing"); gm_mgObserver.mg_pOnTriggerChange = NULL; // split screen config trigger TRIGGER_MG(gm_mgSplitScreenCfg, 2, gm_mgObserver, gm_mgPlayer0Change, TRANS("Number of players:"), astrSplitScreenRadioTexts); gm_mgSplitScreenCfg.mg_strTip = TRANS("choose more than one player to play in split screen"); gm_mgSplitScreenCfg.mg_pOnTriggerChange = NULL; gm_mgPlayer0Change.mg_iCenterI = -1; gm_mgPlayer1Change.mg_iCenterI = -1; gm_mgPlayer2Change.mg_iCenterI = -1; gm_mgPlayer3Change.mg_iCenterI = -1; gm_mgPlayer0Change.mg_boxOnScreen = BoxMediumMiddle(4); gm_mgPlayer1Change.mg_boxOnScreen = BoxMediumMiddle(5); gm_mgPlayer2Change.mg_boxOnScreen = BoxMediumMiddle(6); gm_mgPlayer3Change.mg_boxOnScreen = BoxMediumMiddle(7); gm_mgPlayer0Change.mg_strTip = gm_mgPlayer1Change.mg_strTip = gm_mgPlayer2Change.mg_strTip = gm_mgPlayer3Change.mg_strTip = TRANS("select profile for this player"); gm_lhGadgets.AddTail(gm_mgPlayer0Change.mg_lnNode); gm_lhGadgets.AddTail(gm_mgPlayer1Change.mg_lnNode); gm_lhGadgets.AddTail(gm_mgPlayer2Change.mg_lnNode); gm_lhGadgets.AddTail(gm_mgPlayer3Change.mg_lnNode); gm_mgNotes.mg_boxOnScreen = BoxMediumRow(9.0); gm_mgNotes.mg_bfsFontSize = BFS_MEDIUM; gm_mgNotes.mg_iCenterI = -1; gm_mgNotes.mg_bEnabled = FALSE; gm_mgNotes.mg_bLabel = TRUE; gm_lhGadgets.AddTail(gm_mgNotes.mg_lnNode); gm_mgNotes.mg_strText = ""; /* // options button mgSplitOptions.mg_strText = TRANS("Game options"); mgSplitOptions.mg_boxOnScreen = BoxMediumRow(3); mgSplitOptions.mg_bfsFontSize = BFS_MEDIUM; mgSplitOptions.mg_iCenterI = 0; mgSplitOptions.mg_pmgUp = &mgSplitLevel; mgSplitOptions.mg_pmgDown = &mgSplitStartStart; mgSplitOptions.mg_strTip = TRANS("adjust game rules"); mgSplitOptions.mg_pActivatedFunction = &StartGameOptionsFromSplitScreen; gm_lhGadgets.AddTail( mgSplitOptions.mg_lnNode);*/ /* // start button mgSplitStartStart.mg_bfsFontSize = BFS_LARGE; mgSplitStartStart.mg_boxOnScreen = BoxBigRow(4); mgSplitStartStart.mg_pmgUp = &mgSplitOptions; mgSplitStartStart.mg_pmgDown = &mgSplitGameType; mgSplitStartStart.mg_strText = TRANS("START"); gm_lhGadgets.AddTail( mgSplitStartStart.mg_lnNode); mgSplitStartStart.mg_pActivatedFunction = &StartSelectPlayersMenuFromSplit; */ ADD_GADGET(gm_mgStart, BoxMediumRow(11), &gm_mgSplitScreenCfg, &gm_mgPlayer0Change, NULL, NULL, TRANS("START")); gm_mgStart.mg_bfsFontSize = BFS_LARGE; gm_mgStart.mg_iCenterI = 0; } void CSelectPlayersMenu::StartMenu(void) { CGameMenu::StartMenu(); SelectPlayersFillMenu(); SelectPlayersApplyMenu(); } void CSelectPlayersMenu::EndMenu(void) { SelectPlayersApplyMenu(); CGameMenu::EndMenu(); }