Welcome to WC3 Fullscreen GUI project home page!

What is FSGUI?

FSGUI stands for FullScreen Graphic User Interface.

It's just a JASS script for Warcraft 3: The Frozen Throne maps. Nothing more :)
If you aren't interested in TFT mapmaking, you'll find nothing interesting here.

What does it do?

It emulates WC3 built-in dialog menus, by drawing interface elements made of special effects and floating text labels (texttags) and tracking on-screen mouse movement.

You may use it to create nice-looking user-friendly interfaces for your trigger systems, instead of using very limited page-based controls with inventory or spellbook, or even chat string.

If you're not so familiar with JASS, you can just use systems based on it. Only one is available at the moment - new version of Fullscreen Inventory; check the Downloads section to read more about it.

How does it work?

It utilizes an undocumented JASS feature, unavailable via usual trigger editor: so-called "trackables" that allow to capture mouse movement and clicks.

A special zone is created at the left edge of a map, it is covered with a grid of 20x10 small black square trackables, and then we place game camera right above it. So now we can track mouse actions on entire game screen.

Interface is constructed from pre-made small common models - borders, corners, icons, central squares etc. All graphic output is done by creating destructible doodads that use these models with proper replaceable textures. This allows using one imported model for many similar interface elements, thus keeping reasonable count of imported files.

How to code own interface system using FSGUI?

FSGUI is module-based, means you can use multiple systems together in your map. Adding a module is done by writing four JASS functions that should handle following events:

  • Initialization - called every time your module is started.
  • Shutdown - called at the end of session.
  • Mouse Hover - called each time user positions his mouse over any trackable in the grid; trackable internal ID and triggering player ID are provided.
  • Mouse Click - called each time user clicks on any trackable in the grid; trackable internal ID and triggering player ID is provided.

Names of these functions should be exactly [modname]_Init, [modname]_Exit, [modname]_HoverHandler and [modname]_ClickHandler respectively (where [modname] is an arbitrary string).

Then you can run your module by executing special fs_LoadModule function, passing player ID and your module name as parameters. The system will prepare the field, position the camera and launch your initialization function.

In these functions, you can use special functions to do common tasks such as draw a doodad effect, text label, get number and position of trackable that has fired a hover/click event etc..

More detailed documentation...

Sorry, it isn't ready yet :/

If you are ever going to try to create own fullscreen system, please leave a note in Feedback section.

If someone will ever be interested, I'll try to write a detailed tutorial; otherwise that would be just a waste of time. Try looking at Fullscreen Inventory module; if you understand how it was done, you won't need any more tutorials :)

Any comments or suggestions?

Please visit the Feedback section.

Other projects:


[back to top]