Skip to content

Main menu UI toolkit for Xash3D FWGS engine

Notifications You must be signed in to change notification settings

FWGS/mainui_cpp

Folders and files

NameName
Last commit message
Last commit date
Mar 1, 2025
Dec 7, 2024
Mar 15, 2025
Feb 9, 2025
Dec 1, 2022
Feb 9, 2025
Nov 12, 2019
Mar 1, 2025
Oct 10, 2024
Jun 3, 2023
Apr 9, 2019
Jun 3, 2024
Dec 7, 2024
Oct 25, 2024
May 3, 2024
Oct 28, 2024
Jul 8, 2024
Aug 25, 2022
Dec 6, 2024
Oct 21, 2024
Jun 1, 2017
Nov 25, 2019
Aug 27, 2021
Jan 18, 2019
Nov 26, 2023
Jul 21, 2024
Sep 16, 2018
Aug 13, 2024
Jun 3, 2023
Feb 8, 2020
Sep 22, 2017
Mar 15, 2025
Oct 25, 2024
Jul 28, 2024
May 17, 2023
Jun 15, 2024
Jan 22, 2025
Mar 4, 2020
Jul 3, 2021
Oct 27, 2019
Nov 12, 2019
Jan 4, 2022
Feb 22, 2024
Feb 22, 2024
Dec 6, 2024

Repository files navigation

mainui_cpp

Main Menu UI for Xash3D FWGS engine, built entirely in C++.

Key features:

  • Custom font renderer with multiple backends based on FreeType, stb_truetype and GDI on Windows
  • Unicode and l10n support
  • Completely self-contained, just clone this repo (with --recursive) and add to your mod
  • Complex widget containers system, ability to put widget into containers into container
  • Window system as a continuation of containers system
  • Client-side menus (needs to be documented)

Including mainui_cpp in your mod

  1. Clone this repo: git clone --recursive https://github.com/FWGS/mainui_cpp to your mod source code tree.
  2. If you use:
  • CMake: invoke add_subdirectory(mainui_cpp) in your CMakeLists.txt file
  • Waf/WAiFu: invoke ctx.add_subdirectory('mainui_cpp') in your wscript file
  • Visual Studio: if you want to build it from your mod tree, include vs2022/mainui_cpp.vcxproj to your mod solution, or use vs2022/mainui_cpp.sln.
  1. Place your built menu.dll/libmenu.so ALONGSIDE your client.dll/client.so.
  2. Check that everything is working and happy hacking!

If you have any troubles setting this up, create an issue in https://github.com/FWGS/mainui_cpp/issues.

Notes and restrictions

  • mainui_cpp doesn't supports original Xash3D anymore. If it's possible, you can switch to Xash3D FWGS, otherwise you're on your own. I will accept patches to enable other Xash3D forks, but I won't support them on my own.