+-add new config file commands:
+ -chpasswd (change user's password)
+ -chmail (change user's email address)
+ -watch_menu (go to the watching menu)
+ -login (login user)
+ -newuser (register new user)
+ -quit (quit from dgl)
+ -game_menu "x" (go to game menu "x")
+ -return (return to main menu)
+ -start_game (start the selected game)
+
-maybe allow new menu options configurable in config file, like
commands['O', "Edit config file with foo"] = exec "foo" "rcfile"
- menu {
- option {
- keys = 'o', 'O'
- name = "Edit config file with foo"
- commands = exec "foo" "rcfile"
- }
- option {
- keys = 'x', 'X'
- name = "Blahblahblah"
- commands = blahblah
- require_login = 1
- }
- }
-
- menus: main menu, game-specific menu, ...
+ OR:
+
+ menu "mainmenu_anon" {
+ option {
+ keys = 'l'
+ name = "l) Login"
+ commands = login
+ }
+ option {
+ keys = 'r'
+ name = "r) Register new user"
+ commands = newuser
+ flags = allow_new_nicks
+ }
+ option {
+ keys = 'w'
+ name = "w) Watch games in progress"
+ commands = watch_menu
+ }
+ emptyline
+ option {
+ keys = 'q', 'Q'
+ name = "q) Quit"
+ commands = quit
+ }
+ }
+
+ possibly adding a location = (x,y) key into menu option, allowing
+ absolute positioning of the option.
+
+
+ OR: (this looks nicer, but requires also editing the external text files)
+
+ menu "mainmenu_anon" {
+ banner = "dglmenu_main_anon.txt"
+ cursor = (x,y)
+ commands['l'] = login
+ commands['r'] = newuser
+ commands['w'] = watch_menu
+ commands['q'] = quit
+ }
+
+ menu "mainmenu_loggedin" {
+ banner = "dglmenu_main_loggedin.txt"
+ cursor = (x,y)
+ commands['c'] = chpasswd
+ commands['e'] = chmail
+ commands['w'] = watch_menu
+ commands['q', 'Q'] = quit
+ commands['1'] = game_menu "NH343"
+ commands['2'] = game_menu "Crxxx"
+ commands['3'] = game_menu "NhStb"
+ }
+
+ and the game submenus?
+
+ define {
+ blahblahblah game data here
+ short_name = "NH343"
+ menu {
+ banner = "dglmenu_game_nh343.txt"
+ cursor = (x,y)
+ commands['c'] = chpasswd
+ commands['e'] = chmail
+ commands['w'] = watch_menu
+ commands['o'] = exec "virus" "%rrcfiles/%n.nethackrc"
+ commands['q'] = return
+ commands['p'] = # back up savefile
+ commands = cp "/var/games/nethack/save/%u%n.gz" "/var/games/nethack/save/%u%n.gz.bak",
+ # set NETHACKOPTIONS to point to the rcfile
+ setenv "NETHACKOPTIONS" "@%rrcfiles/%n.nethackrc",
+ # set up nethack mail stuff, assuming it's compiled with it...
+ setenv "MAIL" "/var/mail/%n",
+ setenv "SIMPLEMAIL" "1",
+ # don't let the mail file grow
+ unlink "/var/mail/%n",
+ # aannnd we're off!
+ start_game
+ }
+ }
+
+ and maybe allow changing the watching-screen layout too?
-allow setting the default watch-screen sortmode in config file.