
Currently, my demo game includes a hotkey system.  You will use the
existing hotkey system as inspiration to build a menu system.

In my lua code, I can create a class such as "sphere."  Then
I can create an instance of that class and make it appear in
the world.

I can also define a lua function "sphere.lookhotkeys" which adds
hotkeys to objects of class sphere.  When I aim the crosshairs
at a sphere, a widget WB_Hotkeys appears, and it shows me the
hotkeys for spheres.

I can then press one of those hotkeys.  The WB_Hotkeys widget
handles the key event, displaying visual feedback, and it
also invokes a lua function which eventually leads to the
proper hotkey action being taken in lua.

I want you to study this mechanism, learning exactly how this
process works.  Then, I want you to implement a menu system
that operates on exactly the same principles.

Currently, my demo game contains a sphere and a cube which
both have hotkeys.  I want you to reprogram the cube
so that it has a menu instead of hotkeys.

The menu system will require me to write a lua function
such as cube.lookmenu, which generates the contents of the
menu.  When I point the crosshairs at a cube, the menu
widget WB_Menu will appear in minimized form.  In minimized
form, the WB_Menu widget will just look like a little
circle or something.  This is just enough of a clue to
the user that a menu is there to be activated.

When the user clicks the left mouse button, WB_Menu will
switch to active form: it will display the menu and put
the mouse pointer on the first menu item.  I can then
drag the mouse and select a menu item, or I can drag off
the menu to choose nothing.  When I release the mouse
button, if the mouse is over a menu item, there's some
visual feedback, and the appropriate lua closure is
invoked.  Then, the menu goes back to minimized state.

You must implement all of this using a combination of lua
and blueprint-language.  No C++.  You can use the UE
Wingman plugin to edit blueprints.

Along the way, it is possible that the UE Wingman plugin may
fail - it's still in beta.  If so, please pause, notify me,
and you and I will work together to get things up and
running again.




