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 + -
显示快捷键?