From ca17bdd697b6a837f3a61954e0e3a446ce325fd0 Mon Sep 17 00:00:00 2001 From: Marco Cawthorne Date: Tue, 18 Apr 2023 19:27:53 -0700 Subject: [PATCH] Client: VGUI based buy menus have been implemented. --- src/client/cmds.qc | 15 +- src/client/progs.src | 2 + src/client/vgui_buymenu.qc | 224 ++++++++++++++++++ src/client/vgui_buypages.qc | 452 ++++++++++++++++++++++++++++++++++++ 4 files changed, 691 insertions(+), 2 deletions(-) create mode 100644 src/client/vgui_buymenu.qc create mode 100644 src/client/vgui_buypages.qc diff --git a/src/client/cmds.qc b/src/client/cmds.qc index f7ea1af..c85a92e 100644 --- a/src/client/cmds.qc +++ b/src/client/cmds.qc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2020 Marco Cawthorne + * Copyright (c) 2016-2023 Marco Cawthorne * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,6 +15,7 @@ */ void VGUI_ChooseTeam(void); +void VGUI_BuyMenu(void); void CMD_ChooseTeam(void) @@ -29,6 +30,16 @@ CMD_ChooseTeam(void) Textmenu_Toggle("TEAM_SELECT"); } +void +CMD_BuyMenu(void) +{ + /* handle both VGUI and text menus */ + if (ClientGame_IsUsingVGUI()) + VGUI_BuyMenu(); + else + Textmenu_Toggle("BUY"); +} + int ClientGame_ConsoleCommand(void) { @@ -37,7 +48,7 @@ ClientGame_ConsoleCommand(void) CMD_ChooseTeam(); break; case "buy": - Textmenu_Toggle("BUY"); + CMD_BuyMenu(); break; case "radio1": Textmenu_Toggle("RADIOA"); diff --git a/src/client/progs.src b/src/client/progs.src index 188ae62..13469b8 100644 --- a/src/client/progs.src +++ b/src/client/progs.src @@ -42,6 +42,8 @@ radio.qc ../../../valve/src/client/modelevent.qc ../../../src/client/include.src +vgui_buypages.qc +vgui_buymenu.qc vgui_motd.qc vgui_changeclass_t.qc vgui_changeclass_ct.qc diff --git a/src/client/vgui_buymenu.qc b/src/client/vgui_buymenu.qc new file mode 100644 index 0000000..3700adf --- /dev/null +++ b/src/client/vgui_buymenu.qc @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2023 Marco Cawthorne + * + * 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. + */ + +static VGUIWindow winBuyMenu; +static VGUILabel lblCategoryDescr; + +class CSBuyMenuButton:VGUIButton +{ + void CSBuyMenuButton(void); + + virtual void OnMouseUp(void); + virtual void OnMouseEntered(void); +}; + +void +CSBuyMenuButton::CSBuyMenuButton(void) +{ +} + +void +CSBuyMenuButton::OnMouseUp(void) +{ + int categorySelection = GetTag(); + + switch (categorySelection) { + case 1: + VGUI_BuyMenu_Page(BUYPAGE_PISTOLS); + break; + case 2: + VGUI_BuyMenu_Page(BUYPAGE_SHOTGUNS); + break; + case 3: + VGUI_BuyMenu_Page(BUYPAGE_SMGS); + break; + case 4: + VGUI_BuyMenu_Page(BUYPAGE_RIFLES); + break; + case 5: + VGUI_BuyMenu_Page(BUYPAGE_MGS); + break; + case 6: + sendevent("AmmoBuyPrimary", ""); + break; + case 7: + sendevent("AmmoBuySecondary", ""); + break; + case 8: + VGUI_BuyMenu_Page(BUYPAGE_EQUIPMENT); + break; + } + + winBuyMenu.Hide(); +} + +void +CSBuyMenuButton::OnMouseEntered(void) +{ + int categorySelection = GetTag(); + + switch (categorySelection) { + case 1: + lblCategoryDescr.SetTitle(Titles_GetTextBody("Buy_pistols")); + break; + case 2: + lblCategoryDescr.SetTitle(Titles_GetTextBody("Buy_shotguns")); + break; + case 3: + lblCategoryDescr.SetTitle(Titles_GetTextBody("Buy_smgs")); + break; + case 4: + lblCategoryDescr.SetTitle(Titles_GetTextBody("Buy_rifles")); + break; + case 5: + lblCategoryDescr.SetTitle(Titles_GetTextBody("Buy_machineguns")); + break; + case 6: + lblCategoryDescr.SetTitle(Titles_GetTextBody("Buy_prim_ammo")); + break; + case 7: + lblCategoryDescr.SetTitle(Titles_GetTextBody("Buy_sec_ammo")); + break; + case 8: + lblCategoryDescr.SetTitle(Titles_GetTextBody("Buy_equipment")); + break; + } +} + +void +VGUI_BuyMenu(void) +{ + static int initialized; + static CSBuyMenuButton btnPistols; + static CSBuyMenuButton btnShotguns; + static CSBuyMenuButton btnSMGs; + static CSBuyMenuButton btnRifles; + static CSBuyMenuButton btnMachineguns; + static CSBuyMenuButton btnPrimAmmo; + static CSBuyMenuButton btnSecAmmo; + static CSBuyMenuButton btnEquipment; + static VGUIButton btnCancel; + static VGUILabel lblSelectTeam; + static VGUIFrame frmBuyInfo; + + static void VGUI_BuyMenu_Cancel(void) { + winBuyMenu.Hide(); + } + + if (!initialized) { + vector btnpos = [40,80]; + + initialized = TRUE; + winBuyMenu = spawn(VGUIWindow); + winBuyMenu.SetSize('640 480'); + winBuyMenu.SetStyleMask(VGUIWindowBorderless | VGUIWindowFullscreen); + + lblSelectTeam = spawn(VGUILabel); + lblSelectTeam.SetTitle(Titles_GetTextBody("Title_select_category_of_purchase")); + lblSelectTeam.SetTextSize(19); + lblSelectTeam.SetPos([40, 38]); + lblSelectTeam.SetSize('400 24'); + + frmBuyInfo = spawn(VGUIFrame); + frmBuyInfo.SetPos('176 80'); + frmBuyInfo.SetSize('200 100'); + + lblCategoryDescr = spawn(VGUILabel); + lblCategoryDescr.SetTitle(""); + lblCategoryDescr.SetPos('185 90'); + lblCategoryDescr.SetSize('375 250'); + + btnPistols = spawn(CSBuyMenuButton); + btnPistols.SetTitle(Titles_GetTextBody("Pistols")); + btnPistols.SetPos('40 80'); + btnPistols.SetSize('124 24'); + btnPistols.SetKeyEquivalent("1"); + btnPistols.SetTag(1); + + btnShotguns = spawn(CSBuyMenuButton); + btnShotguns.SetTitle(Titles_GetTextBody("Shotguns")); + btnShotguns.SetPos('40 112'); + btnShotguns.SetSize('124 24'); + btnShotguns.SetKeyEquivalent("2"); + btnShotguns.SetTag(2); + + btnSMGs = spawn(CSBuyMenuButton); + btnSMGs.SetTitle(Titles_GetTextBody("SMGs")); + btnSMGs.SetPos('40 144'); + btnSMGs.SetSize('124 24'); + btnSMGs.SetKeyEquivalent("3"); + btnSMGs.SetTag(3); + + btnRifles = spawn(CSBuyMenuButton); + btnRifles.SetTitle(Titles_GetTextBody("Rifles")); + btnRifles.SetPos('40 175'); + btnRifles.SetSize('124 24'); + btnRifles.SetKeyEquivalent("4"); + btnRifles.SetTag(4); + + btnMachineguns = spawn(CSBuyMenuButton); + btnMachineguns.SetTitle(Titles_GetTextBody("MachineGuns")); + btnMachineguns.SetPos('40 208'); + btnMachineguns.SetSize('124 24'); + btnMachineguns.SetKeyEquivalent("5"); + btnMachineguns.SetTag(5); + + btnPrimAmmo = spawn(CSBuyMenuButton); + btnPrimAmmo.SetTitle(Titles_GetTextBody("Prim_Ammo")); + btnPrimAmmo.SetPos('40 240'); + btnPrimAmmo.SetSize('124 24'); + btnPrimAmmo.SetKeyEquivalent("6"); + btnPrimAmmo.SetTag(6); + + btnSecAmmo = spawn(CSBuyMenuButton); + btnSecAmmo.SetTitle(Titles_GetTextBody("Sec_Ammo")); + btnSecAmmo.SetPos('40 272'); + btnSecAmmo.SetSize('124 24'); + btnSecAmmo.SetKeyEquivalent("7"); + btnSecAmmo.SetTag(7); + + btnEquipment = spawn(CSBuyMenuButton); + btnEquipment.SetTitle(Titles_GetTextBody("Equipment")); + btnEquipment.SetPos('40 304'); + btnEquipment.SetSize('124 24'); + btnEquipment.SetTag(8); + btnEquipment.SetKeyEquivalent("8"); + + btnCancel = spawn(CSBuyMenuButton); + btnCancel.SetTitle(Titles_GetTextBody("Menu_Cancel")); + btnCancel.SetPos('40 368'); + btnCancel.SetSize('124 24'); + btnCancel.SetKeyEquivalent("0"); + btnCancel.SetFunc(VGUI_BuyMenu_Cancel); + + g_uiDesktop.Add(winBuyMenu); + winBuyMenu.Add(lblSelectTeam); + winBuyMenu.Add(frmBuyInfo); + winBuyMenu.Add(lblCategoryDescr); + winBuyMenu.Add(btnPistols); + winBuyMenu.Add(btnShotguns); + winBuyMenu.Add(btnSMGs); + winBuyMenu.Add(btnRifles); + winBuyMenu.Add(btnMachineguns); + winBuyMenu.Add(btnPrimAmmo); + winBuyMenu.Add(btnSecAmmo); + winBuyMenu.Add(btnEquipment); + winBuyMenu.Add(btnCancel); + } + + winBuyMenu.Show(); + winBuyMenu.SetPos((video_res / 2) - (winBuyMenu.GetSize() / 2)); +} diff --git a/src/client/vgui_buypages.qc b/src/client/vgui_buypages.qc new file mode 100644 index 0000000..b576689 --- /dev/null +++ b/src/client/vgui_buypages.qc @@ -0,0 +1,452 @@ +/* + * Copyright (c) 2023 Marco Cawthorne + * + * 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. + */ + +static VGUIWindow winBuyMenuPage; +static VGUILabel lblBuyItemDescr; +static VGUILabel lblBuyItemTitle; +static VGUIPic imgBuyItemPic; + +/* these id's are for the button tags only */ +typedef enum +{ + BUYITEM_USP45, + BUYITEM_GLOCK18, + BUYITEM_DEAGLE, + BUYITEM_P228, + BUYITEM_ELITES, + BUYITEM_FIVESEVEN, + BUYITEM_M3, + BUYITEM_XM1014, + BUYITEM_AK47, + BUYITEM_SG552, + BUYITEM_M4A1, + BUYITEM_AUG, + BUYITEM_SCOUT, + BUYITEM_AWP, + BUYITEM_G3SG1, + BUYITEM_SG550, + BUYITEM_MP5, + BUYITEM_TMP, + BUYITEM_P90, + BUYITEM_MAC10, + BUYITEM_UMP45, + BUYITEM_PARA, + BUYITEM_KEVLAR, + BUYITEM_HELMET, + BUYITEM_FLASHBANG, + BUYITEM_HENADE, + BUYITEM_SMOKE, + BUYITEM_DEFUSE, + BUYITEM_NIGHTVISION +} buyItems_e; + +typedef struct +{ + string eventCmd; /* the sendevent type for this buy command */ + float itemID; /* the id of the item */ + string descrPath; /* path to the description file */ + string imgPath; /* the path to the vgui image to use */ + string titleName; /* the name of the titles.txt entry */ +} buyItems_t; + +const buyItems_t g_buyItemList [29] = { + { "BuyWeapon", WEAPON_USP45, "classes/usp.txt", "gfx/vgui/640_usp", "USP45" }, + { "BuyWeapon", WEAPON_GLOCK18, "classes/glock18.txt", "gfx/vgui/640_glock18", "Glock18" }, + { "BuyWeapon", WEAPON_DEAGLE, "classes/deagle.txt", "gfx/vgui/640_deagle", "DesertEagle" }, + { "BuyWeapon", WEAPON_P228, "classes/p228.txt", "gfx/vgui/640_p228", "P228" }, + { "BuyWeapon", WEAPON_ELITES, "classes/elite.txt", "gfx/vgui/640_elite", "Beretta96G" }, + { "BuyWeapon", WEAPON_FIVESEVEN, "classes/fiveseven.txt", "gfx/vgui/640_fiveseven", "FiveSeven" }, + { "BuyWeapon", WEAPON_M3, "classes/m3.txt", "gfx/vgui/640_m3", "Super90" }, + { "BuyWeapon", WEAPON_XM1014, "classes/xm1014.txt", "gfx/vgui/640_xm1014", "XM1014" }, + { "BuyWeapon", WEAPON_AK47, "classes/ak47.txt", "gfx/vgui/640_ak47", "AK47" }, + { "BuyWeapon", WEAPON_SG552, "classes/sg552.txt", "gfx/vgui/640_sg552", "SG552" }, + { "BuyWeapon", WEAPON_M4A1, "classes/m4a1.txt", "gfx/vgui/640_m4a1", "M4A1" }, + { "BuyWeapon", WEAPON_AUG, "classes/aug.txt", "gfx/vgui/640_aug", "Aug" }, + { "BuyWeapon", WEAPON_SCOUT, "classes/scout.txt", "gfx/vgui/640_scout", "Scout" }, + { "BuyWeapon", WEAPON_AWP, "classes/awp.txt", "gfx/vgui/640_awp", "ArcticWarfareMagnum" }, + { "BuyWeapon", WEAPON_G3SG1, "classes/g3sg1.txt", "gfx/vgui/640_g3sg1", "G3SG1" }, + { "BuyWeapon", WEAPON_SG550, "classes/sg550.txt", "gfx/vgui/640_sg550", "SG550" }, + { "BuyWeapon", WEAPON_MP5, "classes/mp5.txt", "gfx/vgui/640_mp5", "mp5navy" }, + { "BuyWeapon", WEAPON_TMP, "classes/tmp.txt", "gfx/vgui/640_tmp", "tmp" }, + { "BuyWeapon", WEAPON_P90, "classes/p90.txt", "gfx/vgui/640_p90", "FNP90" }, + { "BuyWeapon", WEAPON_MAC10, "classes/mac10.txt", "gfx/vgui/640_mac10", "Mac10" }, + { "BuyWeapon", WEAPON_UMP45, "classes/ump45.txt", "gfx/vgui/640_ump45", "UMP45" }, + { "BuyWeapon", WEAPON_PARA, "classes/m249.txt", "gfx/vgui/640_m249", "M249" }, + { "BuyEquipment", 0, "classes/kevlar.txt", "", "Kevlar_Vest" }, + { "BuyEquipment", 1, "classes/kevlar_helmet.txt", "", "Kevlar_Vest_Ballistic_Helmet" }, + { "BuyEquipment", 2, "classes/flashbang.txt", "gfx/vgui/640_flashbang", "Flashbang" }, + { "BuyEquipment", 3, "classes/hegrenade.txt", "gfx/vgui/640_hegrenade", "High_Explosive_Grenade" }, + { "BuyEquipment", 4, "classes/smokegrenade.txt", "gfx/vgui/640_smokegrenade", "Smoke_Grenade" }, + { "BuyEquipment", 5, "classes/defuse.txt", "", "Defusal_Kit" }, + { "BuyEquipment", 6, "classes/nightvision.txt", "", "Nightvision_Goggles" }, +}; + +string g_butItemDescr[29]; + +class CSBuyItemButton:VGUIButton +{ + void CSBuyItemButton(void); + + virtual void OnMouseUp(void); + virtual void OnMouseEntered(void); +}; + +void +CSBuyItemButton::CSBuyItemButton(void) +{ +} + +void +CSBuyItemButton::OnMouseUp(void) +{ + int i = GetTag(); + + /* this is where we buy things */ + sendevent(g_buyItemList[i].eventCmd, "f", g_buyItemList[i].itemID); + winBuyMenuPage.Hide(); +} + +void +CSBuyItemButton::OnMouseEntered(void) +{ + int i = GetTag(); + lblBuyItemDescr.SetTitle(g_butItemDescr[i]); + imgBuyItemPic.SetImage(g_buyItemList[i].imgPath); + lblBuyItemTitle.SetTitle(Titles_GetTextBody(g_buyItemList[i].titleName)); +} + +enum +{ + BUYPAGE_PISTOLS, + BUYPAGE_SHOTGUNS, + BUYPAGE_SMGS, + BUYPAGE_RIFLES, + BUYPAGE_MGS, + BUYPAGE_EQUIPMENT +}; + +void +VGUI_BuyMenu_Page(int buyPage) +{ + static int initialized; + static VGUIButton btnCancel; + static VGUIFrame frmBuyInfo; + static VGUILabel lblBuyScreenTitle; + + static CSBuyItemButton btnBuyItem1; + static CSBuyItemButton btnBuyItem2; + static CSBuyItemButton btnBuyItem3; + static CSBuyItemButton btnBuyItem4; + static CSBuyItemButton btnBuyItem5; + static CSBuyItemButton btnBuyItem6; + static CSBuyItemButton btnBuyItem7; + static CSBuyItemButton btnBuyItem8; + static CSBuyItemButton btnBuyItem9; + + player pl = (player)pSeat->m_ePlayer; + + int inTeam = getplayerkeyfloat(pl.entnum-1, "*team"); + + static void VGUI_BuyMenu_Pistols_Cancel(void) { + winBuyMenuPage.Hide(); + } + + if (!initialized) { + vector btnpos = [40,80]; + + initialized = TRUE; + winBuyMenuPage = spawn(VGUIWindow); + winBuyMenuPage.SetSize([640,480]); + winBuyMenuPage.SetStyleMask(VGUIWindowBorderless | VGUIWindowFullscreen); + + lblBuyScreenTitle = spawn(VGUILabel); + lblBuyScreenTitle.SetTitle(Titles_GetTextBody("Title_select_category_of_purchase")); + lblBuyScreenTitle.SetTextSize(19); + lblBuyScreenTitle.SetPos([40, 38]); + lblBuyScreenTitle.SetSize('400 24'); + + frmBuyInfo = spawn(VGUIFrame); + frmBuyInfo.SetPos('176 80'); + frmBuyInfo.SetSize('424 312'); + + lblBuyItemDescr = spawn(VGUILabel); + lblBuyItemDescr.SetTitle(""); + lblBuyItemDescr.SetPos('185 190'); + lblBuyItemDescr.SetSize('408 250'); + + imgBuyItemPic = spawn(VGUIPic); + imgBuyItemPic.SetPos([260, 130]); + + lblBuyItemTitle = spawn(VGUILabel); + lblBuyItemTitle.SetPos([185, 96]); + lblBuyItemTitle.SetTextSize(19); + lblBuyItemTitle.SetSize([390, 24]); + + btnBuyItem1 = spawn(CSBuyItemButton); + btnBuyItem1.SetPos('40 80'); + btnBuyItem1.SetSize('124 24'); + btnBuyItem1.SetKeyEquivalent("1"); + btnBuyItem1.SetTag(1); + + btnBuyItem2 = spawn(CSBuyItemButton); + btnBuyItem2.SetPos('40 112'); + btnBuyItem2.SetSize('124 24'); + btnBuyItem2.SetKeyEquivalent("2"); + btnBuyItem2.SetTag(2); + + btnBuyItem3 = spawn(CSBuyItemButton); + btnBuyItem3.SetPos('40 144'); + btnBuyItem3.SetSize('124 24'); + btnBuyItem3.SetKeyEquivalent("3"); + btnBuyItem3.SetTag(3); + + btnBuyItem4 = spawn(CSBuyItemButton); + btnBuyItem4.SetPos('40 175'); + btnBuyItem4.SetSize('124 24'); + btnBuyItem4.SetKeyEquivalent("4"); + btnBuyItem4.SetTag(4); + + btnBuyItem5 = spawn(CSBuyItemButton); + btnBuyItem5.SetPos('40 208'); + btnBuyItem5.SetSize('124 24'); + btnBuyItem5.SetKeyEquivalent("5"); + btnBuyItem5.SetTag(5); + + btnBuyItem6 = spawn(CSBuyItemButton); + btnBuyItem6.SetPos('40 240'); + btnBuyItem6.SetSize('124 24'); + btnBuyItem6.SetKeyEquivalent("6"); + btnBuyItem6.SetTag(6); + + btnBuyItem7 = spawn(CSBuyItemButton); + btnBuyItem7.SetPos('40 272'); + btnBuyItem7.SetSize('124 24'); + btnBuyItem7.SetKeyEquivalent("7"); + btnBuyItem7.SetTag(7); + + btnBuyItem8 = spawn(CSBuyItemButton); + btnBuyItem8.SetPos('40 304'); + btnBuyItem8.SetSize('124 24'); + btnBuyItem8.SetTag(8); + btnBuyItem8.SetKeyEquivalent("8"); + + btnBuyItem9 = spawn(CSBuyItemButton); + btnBuyItem9.SetPos('40 336'); + btnBuyItem9.SetSize('124 24'); + btnBuyItem9.SetKeyEquivalent("9"); + btnBuyItem9.SetFunc(VGUI_BuyMenu_Pistols_Cancel); + + btnCancel = spawn(CSBuyItemButton); + btnCancel.SetTitle(Titles_GetTextBody("Menu_Cancel")); + btnCancel.SetPos('40 368'); + btnCancel.SetSize('124 24'); + btnCancel.SetKeyEquivalent("0"); + btnCancel.SetFunc(VGUI_BuyMenu_Pistols_Cancel); + + g_uiDesktop.Add(winBuyMenuPage); + winBuyMenuPage.Add(lblBuyScreenTitle); + winBuyMenuPage.Add(frmBuyInfo); + winBuyMenuPage.Add(lblBuyItemDescr); + winBuyMenuPage.Add(btnBuyItem1); + winBuyMenuPage.Add(btnBuyItem2); + winBuyMenuPage.Add(btnBuyItem3); + winBuyMenuPage.Add(btnBuyItem4); + winBuyMenuPage.Add(btnBuyItem5); + winBuyMenuPage.Add(btnBuyItem6); + winBuyMenuPage.Add(btnBuyItem7); + winBuyMenuPage.Add(btnBuyItem8); + winBuyMenuPage.Add(btnBuyItem9); + winBuyMenuPage.Add(btnCancel); + winBuyMenuPage.Add(imgBuyItemPic); + winBuyMenuPage.Add(lblBuyItemTitle); + + /* last but not least, initialize the item descriptions */ + for (int i = 0; i < 29; i++) { + g_butItemDescr[i] = textfile_to_string(g_buyItemList[i].descrPath); + } + } + + winBuyMenuPage.Show(); + winBuyMenuPage.SetPos((video_res / 2) - (winBuyMenuPage.GetSize() / 2)); + + switch (buyPage) { + case BUYPAGE_PISTOLS: + lblBuyScreenTitle.SetTitle(Titles_GetTextBody("Title_pistol_selection")); + + if (inTeam == TEAM_CT) { + btnBuyItem5.Hide(); + btnBuyItem6.Show(); + } else { + btnBuyItem5.Show(); + btnBuyItem6.Hide(); + } + btnBuyItem1.Show(); + btnBuyItem2.Show(); + btnBuyItem3.Show(); + btnBuyItem4.Show(); + btnBuyItem7.Hide(); + btnBuyItem8.Hide(); + btnBuyItem9.Hide(); + + btnBuyItem1.SetTitle(Titles_GetTextBody("KM45Tactical")); + btnBuyItem1.SetTag(BUYITEM_USP45); + btnBuyItem2.SetTitle(Titles_GetTextBody("Sidearm9X19mm")); + btnBuyItem2.SetTag(BUYITEM_GLOCK18); + btnBuyItem3.SetTitle(Titles_GetTextBody("NightHawk")); + btnBuyItem3.SetTag(BUYITEM_DEAGLE); + btnBuyItem4.SetTitle(Titles_GetTextBody("P228Compact")); + btnBuyItem4.SetTag(BUYITEM_P228); + btnBuyItem5.SetTitle(Titles_GetTextBody("Dual40")); + btnBuyItem5.SetTag(BUYITEM_ELITES); + btnBuyItem6.SetTitle(Titles_GetTextBody("ESFiveSeven")); + btnBuyItem6.SetTag(BUYITEM_FIVESEVEN); + break; + case BUYPAGE_SHOTGUNS: + lblBuyScreenTitle.SetTitle(Titles_GetTextBody("Title_shotgun_selection")); + + btnBuyItem1.Show(); + btnBuyItem2.Show(); + btnBuyItem3.Hide(); + btnBuyItem4.Hide(); + btnBuyItem5.Hide(); + btnBuyItem6.Hide(); + btnBuyItem7.Hide(); + btnBuyItem8.Hide(); + btnBuyItem9.Hide(); + + btnBuyItem1.SetTitle(Titles_GetTextBody("Leone12")); + btnBuyItem1.SetTag(BUYITEM_M3); + btnBuyItem2.SetTitle(Titles_GetTextBody("AutoShotgun")); + btnBuyItem2.SetTag(BUYITEM_XM1014); + break; + case BUYPAGE_SMGS: + lblBuyScreenTitle.SetTitle(Titles_GetTextBody("Title_smg_selection")); + + if (inTeam == TEAM_CT) { + btnBuyItem2.Show(); + btnBuyItem4.Hide(); + } else { + btnBuyItem2.Hide(); + btnBuyItem4.Show(); + } + btnBuyItem1.Show(); + btnBuyItem3.Show(); + btnBuyItem5.Show(); + btnBuyItem6.Hide(); + btnBuyItem7.Hide(); + btnBuyItem8.Hide(); + btnBuyItem9.Hide(); + + btnBuyItem1.SetTitle(Titles_GetTextBody("SubMachineGun")); + btnBuyItem1.SetTag(BUYITEM_MP5); + btnBuyItem2.SetTitle(Titles_GetTextBody("SchmidtMP")); + btnBuyItem2.SetTag(BUYITEM_TMP); + btnBuyItem3.SetTitle(Titles_GetTextBody("ESC90")); + btnBuyItem3.SetTag(BUYITEM_P90); + btnBuyItem4.SetTitle(Titles_GetTextBody("Mac10_Short")); + btnBuyItem4.SetTag(BUYITEM_MAC10); + btnBuyItem5.SetTitle(Titles_GetTextBody("KMUMP45")); + btnBuyItem5.SetTag(BUYITEM_UMP45); + break; + case BUYPAGE_RIFLES: + lblBuyScreenTitle.SetTitle(Titles_GetTextBody("Title_rifle_selection")); + + if (inTeam == TEAM_CT) { + btnBuyItem1.Hide(); + btnBuyItem2.Hide(); + btnBuyItem3.Show(); + btnBuyItem4.Show(); + btnBuyItem7.Hide(); + } else { + btnBuyItem1.Show(); + btnBuyItem2.Show(); + btnBuyItem3.Hide(); + btnBuyItem4.Hide(); + btnBuyItem7.Show(); + } + btnBuyItem5.Show(); + btnBuyItem6.Show(); + btnBuyItem8.Show(); + btnBuyItem9.Hide(); + + btnBuyItem1.SetTitle(Titles_GetTextBody("AK47")); + btnBuyItem1.SetTag(BUYITEM_AK47); + btnBuyItem2.SetTitle(Titles_GetTextBody("Krieg552")); + btnBuyItem2.SetTag(BUYITEM_SG552); + btnBuyItem3.SetTitle(Titles_GetTextBody("M4A1_Short")); + btnBuyItem3.SetTag(BUYITEM_M4A1); + btnBuyItem4.SetTitle(Titles_GetTextBody("Aug")); + btnBuyItem4.SetTag(BUYITEM_AUG); + btnBuyItem5.SetTitle(Titles_GetTextBody("Schmidt")); + btnBuyItem5.SetTag(BUYITEM_SCOUT); + btnBuyItem6.SetTitle(Titles_GetTextBody("Magnum")); + btnBuyItem6.SetTag(BUYITEM_AWP); + btnBuyItem7.SetTitle(Titles_GetTextBody("D3AU1")); + btnBuyItem7.SetTag(BUYITEM_G3SG1); + btnBuyItem8.SetTitle(Titles_GetTextBody("Krieg550")); + btnBuyItem8.SetTag(BUYITEM_G3SG1); + break; + case BUYPAGE_MGS: + lblBuyScreenTitle.SetTitle(Titles_GetTextBody("Title_machinegun_selection")); + + btnBuyItem1.Show(); + btnBuyItem2.Hide(); + btnBuyItem3.Hide(); + btnBuyItem4.Hide(); + btnBuyItem5.Hide(); + btnBuyItem6.Hide(); + btnBuyItem7.Hide(); + btnBuyItem8.Hide(); + btnBuyItem9.Hide(); + + btnBuyItem1.SetTitle(Titles_GetTextBody("ESM249")); + btnBuyItem1.SetTag(BUYITEM_PARA); + break; + case BUYPAGE_EQUIPMENT: + lblBuyScreenTitle.SetTitle(Titles_GetTextBody("Title_equipment_selection")); + + if (inTeam == TEAM_CT) { + btnBuyItem6.Show(); + } else { + btnBuyItem6.Hide(); + } + + btnBuyItem1.Show(); + btnBuyItem2.Show(); + btnBuyItem3.Show(); + btnBuyItem4.Show(); + btnBuyItem5.Show(); + btnBuyItem7.Show(); + btnBuyItem8.Hide(); + btnBuyItem9.Hide(); + + btnBuyItem1.SetTitle(Titles_GetTextBody("Kevlar")); + btnBuyItem1.SetTag(BUYITEM_KEVLAR); + btnBuyItem2.SetTitle(Titles_GetTextBody("Kevlar_Helmet")); + btnBuyItem2.SetTag(BUYITEM_HELMET); + btnBuyItem3.SetTitle(Titles_GetTextBody("Flashbang")); + btnBuyItem3.SetTag(BUYITEM_FLASHBANG); + btnBuyItem4.SetTitle(Titles_GetTextBody("HE_Grenade")); + btnBuyItem4.SetTag(BUYITEM_HENADE); + btnBuyItem5.SetTitle(Titles_GetTextBody("Smoke_Grenade")); + btnBuyItem5.SetTag(BUYITEM_SMOKE); + btnBuyItem6.SetTitle(Titles_GetTextBody("Defusal_Kit")); + btnBuyItem6.SetTag(BUYITEM_DEFUSE); + btnBuyItem7.SetTitle(Titles_GetTextBody("NightVision")); + btnBuyItem7.SetTag(BUYITEM_NIGHTVISION); + break; + } +} \ No newline at end of file