mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-10 07:11:41 +00:00
Let's get this into CVS, even if it's not used yet.
This commit is contained in:
parent
527471a7de
commit
ad042134b1
1 changed files with 111 additions and 0 deletions
111
include/menu.h
Normal file
111
include/menu.h
Normal file
|
@ -0,0 +1,111 @@
|
|||
/*
|
||||
menu.h
|
||||
|
||||
menu subsystem
|
||||
|
||||
Copyright (C) 2001 Joseph Carter <knghtbrd@debian.org>
|
||||
|
||||
Author: Joseph Carter <knghtbrd@debian.org>
|
||||
Date: 16 Apr 2001
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to:
|
||||
|
||||
Free Software Foundation, Inc.
|
||||
59 Temple Place - Suite 330
|
||||
Boston, MA 02111-1307, USA
|
||||
|
||||
$Id$
|
||||
*/
|
||||
|
||||
#ifndef __MENU_H
|
||||
#define __MENU_H
|
||||
|
||||
typedef enum {
|
||||
M_Static,
|
||||
M_Menu,
|
||||
M_Toggle,
|
||||
M_Slide,
|
||||
M_SelectStr,
|
||||
M_SelectInt,
|
||||
M_Command,
|
||||
M_Engine,
|
||||
M_Progs
|
||||
} mitem_type;
|
||||
|
||||
|
||||
typedef enum {
|
||||
MHook_None,
|
||||
MHook_Engine,
|
||||
MHook_Progs
|
||||
} mhook_type;
|
||||
|
||||
typedef struct menuitem_s {
|
||||
char *title;
|
||||
// char *desc; // FIXME: Implement or remove?
|
||||
|
||||
mitem_type type;
|
||||
union mitem {
|
||||
/* NOTHING */ // M_Static
|
||||
struct menu_s *menu; // M_Menu
|
||||
struct cvar_s *var; // M_Toggle
|
||||
struct {
|
||||
float min, max, step;
|
||||
struct cvar_s *var;
|
||||
} slide; // M_Slide
|
||||
struct {
|
||||
char **choices;
|
||||
char **strings;
|
||||
struct cvar_s *var;
|
||||
} selectstr; // M_SelectStr
|
||||
struct {
|
||||
char **choices;
|
||||
int *values;
|
||||
struct cvar_s *var;
|
||||
} selectint; // M_SelectInt
|
||||
char *cmd; // M_Command
|
||||
void (*engine)(void); // M_Engine
|
||||
char *progs; // M_Progs
|
||||
};
|
||||
|
||||
// engine/progs function hook for dynamic things, called at display
|
||||
mhook_type hook;
|
||||
union mhook {
|
||||
void (*engine_hook)(struct menuitem_s *item);
|
||||
char *progs_hook;
|
||||
};
|
||||
|
||||
struct menuitem_s *prev;
|
||||
struct menuitem_s *next;
|
||||
} menuitem_t;
|
||||
|
||||
typedef struct menu_s {
|
||||
char *title;
|
||||
|
||||
// for any of the screen is "reserved" for hooks
|
||||
int lofs, rofs; // 0-319 scale
|
||||
int tofs, bofs; // 0-199 scale
|
||||
|
||||
// engine/progs function hook for menu title
|
||||
mhook_type hook;
|
||||
union mthook {
|
||||
void (*engine_hool)(char *title);
|
||||
char *progs_hook;
|
||||
};
|
||||
|
||||
menuitem_t *items;
|
||||
} menu_t;
|
||||
|
||||
#endif // __MENU_H
|
||||
|
Loading…
Reference in a new issue