cvars.txt
来自「quake1 dos源代码最新版本」· 文本 代码 · 共 121 行
TXT
121 行
(This is just the start for a tutorial how to implement the new cvar system)
* Engine kann immer und jede cvar 鋘dern
* PROGS.DAT kann CVARs erstellen
* ROM cvars: User diese nie 鋘dern, PROGS.DAT nur selbst erstellte (CVAR_PROGS_CREATED || CVAR_USER_CREATED)
* User can CVARs erstellen mit SET und SETA, oder auch l鰏chen mit UNSET
* SETA setzt ARCHIVE Flag
* Support of rangecheck (bound the value, example: toggle only 0 and 1)
* Support of callback (react on value, deathmatch changed to 1, then change coop to 0)
* Support of description
* CVARLIST lists all cvars with flags in front of them, CVARLIST <beginning of cvar name> for only a part of it
CVARHELP without a cvarname explains the flags, otherwise gives description of variable and rangecheck if available.
* The cvar flags are kept or overwritten, depending of the priority of the changer
PROGS.DAT superceeds user, and engine superceeds all
user creates -> progs changes (overwritten, keeping ARCHIVE if not changed to ROM, now PROGS.DAT cvar) -> engine changes (overwritten, keeping ARCHIVE if not changed to ROM, now PROGS.DAT cvar)
engine creates -> progs (kept as it is an engine cvar) -> user (kept as it is an engine or progs.dat cvar, SETA sets ARCHIVE when not ROM)
* komplett neu:
cvar.h
cvar.c
cmd.c/Cmd_AddCommand()
host.c/Host_Init()
Cvar_Init (); // add all cvar related manipulation commands and set developer cvar
suchen nach cvar_t/cvar_s in *.h und alle in Pointer wandeln
suchen nach cvar_t in *.c und f黵 jede Variable folgendes tun (ca. 280 St點k :( )
* umwandeln in einen Pointer
* CvarRegister umwandeln in CvarGet ohne CallBack Routine
cvar_t d_subdiv16 = {"d_subdiv16", "1", archive, server, readonly, [rangecheck]};
Cvar_RegisterVariable (&d_subdiv16);
d_subdiv16.
==>
cvar_t *d_subdiv16;
d_subdiv16 = Cvar_Get ("d_subdiv16", "1", CVAR_ORIGINAL, NULL);
none = CVAR_ORIGINAL for id cvars / or CVAR_NONE for your own cvars
archive = CVAR_ARCHIVE
server = CVAR_NOTIFY|CVAR_SERVER
readonly = CVAR_ROM
d_subdiv16->
Cvar_Set[Value] ("bgmvolume", xyz);
==>
Cvar_Set[Value] (bgmvolume, xyz);
If xyz is not a variable use Cvar_Set and put the value in Quotes.
+ NET_DGRM.C: var->server ..to... var->flags & CVAR_SERVER
+ PF_cvar() 鋘dern
+ PF_cvar_set() 鋘dern
+ Flags mit QW abstimmen
+ server kontrollieren wegen net_dgrm.c
// 2001-09-18 New cvar system by Maddes (Init)
cvar.c
cvar.h
scr_fov mit Rangecheck
pr_cmds.h PF_cvar_set PF_cvar
makefile.djgpp
// 2001-09-18 New cvar system by Maddes (Init)
Initialisierung der CVARs auslagern in eigene Routine, diese dann in HOST.C aufrufen.
gl_draw: (Draw_Init_Cvars (DOS: D_Init?))
*
gl_screen: (SCR_Init_Cvars)
* aber: r_brightness, r_contrast, r_waterwarp
gl_rmisc: (R_Init_Cvars)
* kein: r_waterwarp, gl_smoothmodels (daf黵 wohl interpolation)
* aber: r_maxedges, r_maxsurfs (wird aber nicht verwendet, da OpenGL)
gl_vidnt: (VID_Init_Cvars)
* kein: vid_wait, vid_nopageflip, _vid_wait_override, _vid_default_mode, _vid_default_mode_win, vid_config_x, vid_config_y, vid_stretch_by_2
* aber: m_filter, v_gamma*, v_tgamma*
gl_model: (Mod_Init_Cvars)
* identisch
in_win: (IN_Init_Cvars)
* nichts (da TW kein Joystick-Support hat und "m_filter" bei der Video-Initialisierung erstellt wird)
(leere Funktion in vid_sdl.c)
vid_win: (VID_Init_Cvars)
* kein: block_switch(!!!), vid_wait, vid_nopageflip, _vid_wait_override, _vid_default_mode, _vid_default_mode_win, vid_config_x, vid_config_y, vid_stretch_by_2, vid_fullscreen_mode, vid_windowed_mode, vid_window_x, vid_window_y
* aber: m_filter, v_gamma*, v_tgamma*
cl_main: (CL_Init_Cvars)
* kein: cl_upspeed, cl_forwardspeed, cl_backspeed, cl_sidespeed, cl_movespeedkey, cl_yawspeed, cl_pitchspeed, cl_anglespeedkey
(alle in cl_input)
view: (V_Init_Cvars)
* kein: lcd_x, lcd_y, v_gamma
snd_null: (S_Init_Cvars)
* nichts (da in TW nicht vorhanden, nur snd_dma)
screen.c: (SCR_Init_Cvars)
* nichts (da in TW nur OpenGL, siehe gl_screen.c)
* aber: r_brightness, r_contrast, r_waterwarp, [gl_triplebuffer]
r_main: (R_Init_Cvars)
* nichts (da in TW nur OpenGL, siehe gl_rmisc.c)
* kein: r_draworder, r_timegraph, r_graphheight, r_drawflat, r_ambient, r_clearcolor, r_waterwarp, r_aliasstats, r_dspeeds, r_reportsurfout, r_numsurfs, r_reportedgeout, r_numedges, r_aliastransbase, r_aliastransadj
* aber: r_norefresh, r_lightmap, r_shadows, r_wateralpha, r_mirroralpha, r_dynamic, r_novis
chase: (Chase_Init_Cvars)
* identisch
common: (COM_Init_Cvars)
* identisch
console: (Con_Init_Cvars)
* identisch
cvar:
* aber: developer (doppelt auch host.c)
host: (Host_InitLocal_Cvars)
* identisch
net_main: (NET_Init_Cvars)
* identisch
nvs: (NVS_Init_Cvars)
* ok
pr_edict: (PR_Init_Cvars)
* identisch
snd_dma: (S_Init_Cvars)
* identisch
sv_main:
* keine 膎derung
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?