/* load_egg_cmd:
 *  Reads a list of commands.
 */
static EGG_COMMAND *load_egg_cmd(EGG *egg, int root, char *error)
{
   EGG_COMMAND *cmd = NULL;
   EGG_COMMAND *tail = NULL;
   EGG_TYPE *type;
   char buf[1024];
   char buf2[256];


   /* helper macro for inserting new commands into the list */
   #define ADD_COMMAND(_type_)                                 \
   {                                                           \
      if (tail) {                                              \
	 tail->next = malloc(sizeof(EGG_COMMAND));             \
	 tail = tail->next;                                    \
      }                                                        \
      else                                                     \
	 tail = cmd = malloc(sizeof(EGG_COMMAND));             \
							       \
      tail->type = _type_;                                     \
      tail->line = egg_line;                                   \
      tail->var = NULL;                                        \
      tail->exp = NULL;                                        \
      tail->cmd = NULL;                                        \
      tail->cmd2 = NULL;                                       \
      tail->next = NULL;                                       \
   }


   while ((!egg_eof()) && (!error[0])) {
      get_word(buf);

      if (strcmp(buf, "}") == 0) {
	 /* block end marker */
	 if (root)
	    egg_error(error, "Unexpected '}'");
	 else
	    return cmd;
      }
      else if (strcmp(buf, "if") == 0) {
	 /* parse an if statement */
	 get_word(buf);

	 if (strcmp(buf, "(") != 0) {
	    egg_error(error, "Missing '('");
	 }
	 else {
	    get_formula(buf, ')', error);

	    if (!error[0]) {
	       get_brace(error);

	       if (!error[0]) {
		  ADD_COMMAND(EGG_COMMAND_IF);

		  tail->exp = malloc(strlen(buf)+1);
		  strcpy(tail->exp, buf);

		  tail->cmd = load_egg_cmd(egg, FALSE, error);
	       }
	    }
	 }
      }
      else if (strcmp(buf, "else") == 0) {
	 /* parse an else statement */
	 if ((!tail) || (tail->type != EGG_COMMAND_IF) || (tail->cmd2)) {
	    egg_error(error, "Invalid context for 'else'");
	 }
	 else {
	    get_brace(error);

	    if (!error[0])
	       tail->cmd2 = load_egg_cmd(egg, FALSE, error);
	 }
      }
      else if (strcmp(buf, "lay") == 0) {
	 /* parse a lay statement */
	 ADD_COMMAND(EGG_COMMAND_LAY);

	 get_word(buf);

	 if (strcmp(buf, "(") == 0) {
	    get_formula(buf, ')', error);

	    if (!error[0]) {
	       tail->exp = malloc(strlen(buf)+1);
	       strcpy(tail->exp, buf);

	       get_word(buf);
	    }
	 }

	 if (!error[0]) {
	    check_ascii_word(buf, error);

	    if (!error[0]) {
	       tail->var = malloc(strlen(buf)+1);
	       strcpy(tail->var, buf);

	       get_word(buf);

	       if (strcmp(buf, "{") == 0)
		  tail->cmd = load_egg_cmd(egg, FALSE, error);
	       else if (strcmp(buf, ";") != 0)
		  egg_error(error, "Expecting '{' or ';'");
	    }
	 }
      }
      else if (strcmp(buf, "die") == 0) {
	 /* parse a die statement */
	 ADD_COMMAND(EGG_COMMAND_DIE);

	 get_word(buf);

	 if (strcmp(buf, ";") != 0)
	    egg_error(error, "Missing ';'");
      }
      else if (strcmp(buf, "type") == 0) {
	 /* parse a type definition */
	 if (!root) {
	    egg_error(error, "Nested type definition");
	 }
	 else {
	    get_ascii_word(buf, error);

	    if (!error[0]) {
	       type = malloc(sizeof(EGG_TYPE));

	       type->name = malloc(strlen(buf)+1);
	       strcpy(type->name, buf);

	       type->cmd = NULL;
	       type->next = NULL;

	       get_brace(error);

	       if (error[0]) {
		  free(type->name);
		  free(type);
	       }
	       else {
		  type->cmd = load_egg_cmd(egg, FALSE, error);

		  if (error[0]) {
		     free(type->name);
		     free(type);
		  }
		  else {
		     type->next = egg->type;
		     egg->type = type;
		  }
	       }
	    }
	 }
      }
      else if (buf[0]) {
	 /* this must be a variable assignment */
	 check_ascii_word(buf, error);

	 if (!error[0]) {
	    get_word(buf2);

	    if (strcmp(buf2, "=") == 0) {
	       ADD_COMMAND(EGG_COMMAND_SET);
	    }
	    else if (strcmp(buf2, ":") == 0) {
	       get_word(buf2);

	       if (strcmp(buf2, "=") != 0) {
		  egg_error(error, "Missing '='");
	       }
	       else {
		  ADD_COMMAND(EGG_COMMAND_INIT);
	       }
	    }
	    else {
	       egg_error(error, "F****d up syntax ");
	    }

	    if (!error[0]) {
	       tail->var = malloc(strlen(buf)+1);
	       strcpy(tail->var, buf);

	       get_formula(buf, ';', error);

	       if (!error[0]) {
		  tail->exp = malloc(strlen(buf)+1);
		  strcpy(tail->exp, buf);
	       }
	    }
	 }
      }
   }

   if ((!error[0]) && (egg_eof()) && (!root))
      egg_error(error, "Unexpected EOF");

   if (error[0]) {
      destroy_egg_cmd(cmd);
      return NULL;
   }

   return cmd;
}
示例#2
0
文件: r_view.cpp 项目: mittorn/XashXT
//==========================
// V_Init
//==========================
void V_Init( void )
{
	v_centermove	= CVAR_REGISTER( "v_centermove", "0.15", 0 );
	v_centerspeed	= CVAR_REGISTER( "v_centerspeed","500", 0 );

	cl_bobcycle	= CVAR_REGISTER( "cl_bobcycle","0.8", 0 );
	cl_bob		= CVAR_REGISTER( "cl_bob","0.01", 0 );
	cl_bobup		= CVAR_REGISTER( "cl_bobup","0.5", 0 );
	cl_waterdist	= CVAR_REGISTER( "cl_waterdist","4", 0 );
	cl_chasedist	= CVAR_REGISTER( "cl_chasedist","112", 0 );

    #if XT_FEATURES //non-canon :)
    cl_weaponlag	= CVAR_REGISTER( "cl_weaponlag", "0.3", FCVAR_ARCHIVE );
    #else
    cl_weaponlag	= CVAR_REGISTER( "cl_weaponlag", "0", FCVAR_ARCHIVE );
    #endif

	// setup some engine cvars for custom rendering
	mod_allow_materials = CVAR_GET_POINTER( "host_allow_materials" );
	r_overview	= CVAR_GET_POINTER( "dev_overview" );
	r_finish		= CVAR_GET_POINTER( "gl_finish" );
	r_fastsky		= CVAR_GET_POINTER( "r_fastsky" );
	r_speeds		= CVAR_GET_POINTER( "r_speeds" );
	r_stencilbits	= CVAR_GET_POINTER( "gl_stencilbits" );
	r_width		= CVAR_GET_POINTER( "width" );
	r_height		= CVAR_GET_POINTER( "height" );
	r_test		= CVAR_GET_POINTER( "gl_test" );
	cl_viewsize	= CVAR_GET_POINTER( "viewsize" );

	r_novis		= CVAR_GET_POINTER( "r_novis" );
	r_nocull		= CVAR_GET_POINTER( "r_nocull" );
	r_lockpvs		= CVAR_GET_POINTER( "r_lockpvs" );
	r_dynamic		= CVAR_GET_POINTER( "r_dynamic" );
	r_lightmap	= CVAR_GET_POINTER( "r_lightmap" );
	r_wireframe	= CVAR_GET_POINTER( "gl_wireframe" );
	r_draw_beams	= CVAR_GET_POINTER( "cl_draw_beams" );
	r_adjust_fov	= CVAR_GET_POINTER( "r_adjust_fov" );

	r_fullbright	= CVAR_GET_POINTER( "r_fullbright" );
	r_drawentities	= CVAR_GET_POINTER( "r_drawentities" );
	r_allow_static	= CVAR_GET_POINTER( "gl_allow_static" );
	r_allow_mirrors	= CVAR_GET_POINTER( "gl_allow_mirrors" );
	r_detailtextures	= CVAR_GET_POINTER( "r_detailtextures" );
	r_faceplanecull	= CVAR_GET_POINTER( "r_faceplanecull" );
	r_lighting_ambient	= CVAR_GET_POINTER( "r_lighting_ambient" );
	r_lighting_modulate	= CVAR_GET_POINTER( "r_lighting_modulate" );
	r_lightstyle_lerping= CVAR_GET_POINTER( "cl_lightstyle_lerping" );
	r_lighting_extended	= CVAR_GET_POINTER( "r_lighting_extended" );

	cl_vsmoothing	= CVAR_REGISTER( "cl_vsmoothing", "0.05", FCVAR_ARCHIVE );
	r_allow_portals	= CVAR_REGISTER( "gl_allow_portals", "1", FCVAR_ARCHIVE|FCVAR_CLIENTDLL );
	r_allow_screens	= CVAR_REGISTER( "gl_allow_screens", "1", FCVAR_ARCHIVE|FCVAR_CLIENTDLL );
	gl_renderer	= CVAR_REGISTER( "gl_renderer", "1", FCVAR_CLIENTDLL|FCVAR_ARCHIVE ); 
	r_shadows		= CVAR_REGISTER( "r_shadows", "2", FCVAR_CLIENTDLL|FCVAR_ARCHIVE ); 

	r_bloom		= CVAR_REGISTER( "r_bloom", "0", FCVAR_ARCHIVE );
	r_bloom_alpha	= CVAR_REGISTER( "r_bloom_alpha", "0.1", FCVAR_ARCHIVE );
	r_bloom_diamond_size = CVAR_REGISTER( "r_bloom_diamond_size", "8", FCVAR_ARCHIVE );
	r_bloom_intensity	= CVAR_REGISTER( "r_bloom_intensity", "1", FCVAR_ARCHIVE );
	r_bloom_darken	= CVAR_REGISTER( "r_bloom_darken", "4", FCVAR_ARCHIVE );
	r_bloom_sample_size = CVAR_REGISTER( "r_bloom_sample_size", "320", FCVAR_ARCHIVE );
	r_bloom_fast_sample = CVAR_REGISTER( "r_bloom_fast_sample", "0", FCVAR_ARCHIVE );

	r_grass = CVAR_REGISTER( "r_grass", "1", FCVAR_ARCHIVE );
	r_grass_alpha = CVAR_REGISTER( "r_grass_alpha", "0.5", FCVAR_ARCHIVE );
	r_grass_lighting = CVAR_REGISTER( "r_grass_lighting", "1", FCVAR_ARCHIVE );
	r_grass_shadows = CVAR_REGISTER( "r_grass_shadows", "1", FCVAR_ARCHIVE );
	r_grass_fade_start = CVAR_REGISTER( "r_grass_fade_start", "1280", FCVAR_ARCHIVE );
	r_grass_fade_dist = CVAR_REGISTER( "r_grass_fade_dist", "512", FCVAR_ARCHIVE );

	r_overbright = CVAR_REGISTER( "r_overbright", "0", FCVAR_ARCHIVE );

	r_skyfog = CVAR_REGISTER( "r_skyfog", "0", FCVAR_ARCHIVE );

	ADD_COMMAND( "thirdperson", V_ThirdPerson );
	ADD_COMMAND( "firstperson", V_FirstPerson );
	ADD_COMMAND( "centerview", V_StartPitchDrift );
}
示例#3
0
#ifdef CONFIG_USBDEV_JTAG
DECLARE_COMMAND(jtag)
#endif
#ifdef CONFIG_USBDEV_AVRISP
DECLARE_COMMAND(avrisp)
#endif
#ifdef COMMAND_PIN
DECLARE_COMMAND(pinmode)
#endif

/****************************************************************************************/
// Create table of names and function pointers

const global_command_t global_command_table[] PROGMEM =
{
    ADD_COMMAND(version)
#ifdef CONFIG_COMMAND_MENUTEST
    ADD_COMMAND(menutest)
#endif
#ifdef CONFIG_COMMAND_DUMPKEYS
    ADD_COMMAND(dumpkeys)
#endif
#ifdef CONFIG_COMMAND_BITBANG
    ADD_COMMAND(bitbang)
#endif
#ifdef CONFIG_COMMAND_TEST
    ADD_COMMAND(test)
#endif
    ADD_COMMAND(help)
#ifdef COMMAND_LOG
    ADD_COMMAND(log)
示例#4
0
文件: input.cpp 项目: FWGS/XashXT
/*
============
InitInput
============
*/
void InitInput( void )
{
	ADD_COMMAND ("+moveup", IN_UpDown);
	ADD_COMMAND ("-moveup", IN_UpUp);
	ADD_COMMAND ("+movedown", IN_DownDown);
	ADD_COMMAND ("-movedown", IN_DownUp);
	ADD_COMMAND ("+left", IN_LeftDown);
	ADD_COMMAND ("-left", IN_LeftUp);
	ADD_COMMAND ("+right", IN_RightDown);
	ADD_COMMAND ("-right", IN_RightUp);
	ADD_COMMAND ("+forward", IN_ForwardDown);
	ADD_COMMAND ("-forward", IN_ForwardUp);
	ADD_COMMAND ("+back", IN_BackDown);
	ADD_COMMAND ("-back", IN_BackUp);
	ADD_COMMAND ("+lookup", IN_LookupDown);
	ADD_COMMAND ("-lookup", IN_LookupUp);
	ADD_COMMAND ("+lookdown", IN_LookdownDown);
	ADD_COMMAND ("-lookdown", IN_LookdownUp);
	ADD_COMMAND ("+strafe", IN_StrafeDown);
	ADD_COMMAND ("-strafe", IN_StrafeUp);
	ADD_COMMAND ("+moveleft", IN_MoveleftDown);
	ADD_COMMAND ("-moveleft", IN_MoveleftUp);
	ADD_COMMAND ("+moveright", IN_MoverightDown);
	ADD_COMMAND ("-moveright", IN_MoverightUp);
	ADD_COMMAND ("+speed", IN_SpeedDown);
	ADD_COMMAND ("-speed", IN_SpeedUp);
	ADD_COMMAND ("+attack", IN_AttackDown);
	ADD_COMMAND ("-attack", IN_AttackUp);
	ADD_COMMAND ("+attack2", IN_Attack2Down);
	ADD_COMMAND ("-attack2", IN_Attack2Up);
	ADD_COMMAND ("+use", IN_UseDown);
	ADD_COMMAND ("-use", IN_UseUp);
	ADD_COMMAND ("+jump", IN_JumpDown);
	ADD_COMMAND ("-jump", IN_JumpUp);
	ADD_COMMAND ("impulse", IN_Impulse);
	ADD_COMMAND ("+klook", IN_KLookDown);
	ADD_COMMAND ("-klook", IN_KLookUp);
	ADD_COMMAND ("+mlook", IN_MLookDown);
	ADD_COMMAND ("-mlook", IN_MLookUp);
	ADD_COMMAND ("+jlook", IN_JLookDown);
	ADD_COMMAND ("-jlook", IN_JLookUp);
	ADD_COMMAND ("+duck", IN_DuckDown);
	ADD_COMMAND ("-duck", IN_DuckUp);
	ADD_COMMAND ("+reload", IN_ReloadDown);
	ADD_COMMAND ("-reload", IN_ReloadUp);
	ADD_COMMAND ("+alt1", IN_Alt1Down);
	ADD_COMMAND ("-alt1", IN_Alt1Up);
	ADD_COMMAND ("+graph", IN_GraphDown);
	ADD_COMMAND ("-graph", IN_GraphUp);
	ADD_COMMAND ("+score", IN_ScoreDown);
	ADD_COMMAND ("-score", IN_ScoreUp);
	ADD_COMMAND ("+break", IN_BreakDown);
	ADD_COMMAND ("-break", IN_BreakUp);

	lookstrafe	= CVAR_REGISTER ( "lookstrafe", "0", FCVAR_ARCHIVE );
	lookspring	= CVAR_REGISTER ( "lookspring", "0", FCVAR_ARCHIVE );
	cl_anglespeedkey	= CVAR_REGISTER ( "cl_anglespeedkey", "0.67", 0 );
	cl_yawspeed	= CVAR_REGISTER ( "cl_yawspeed", "210", 0 );
	cl_pitchspeed	= CVAR_REGISTER ( "cl_pitchspeed", "225", 0 );
	cl_upspeed	= CVAR_REGISTER ( "cl_upspeed", "320", 0 );
	cl_forwardspeed	= CVAR_REGISTER ( "cl_forwardspeed", "400", FCVAR_ARCHIVE );
	cl_backspeed	= CVAR_REGISTER ( "cl_backspeed", "400", FCVAR_ARCHIVE );
	cl_sidespeed	= CVAR_REGISTER ( "cl_sidespeed", "400", 0 );
	cl_movespeedkey	= CVAR_REGISTER ( "cl_movespeedkey", "0.3", 0 );
	cl_pitchup	= CVAR_REGISTER ( "cl_pitchup", "89", 0 );
	cl_pitchdown	= CVAR_REGISTER ( "cl_pitchdown", "89", 0 );

	m_pitch		= CVAR_REGISTER ( "m_pitch","0.022", FCVAR_ARCHIVE );
	m_yaw		= CVAR_REGISTER ( "m_yaw","0.022", FCVAR_ARCHIVE );
	m_forward		= CVAR_REGISTER ( "m_forward","1", FCVAR_ARCHIVE );
	m_side		= CVAR_REGISTER ( "m_side","0.8", FCVAR_ARCHIVE );

	// initialize inputs
	IN_Init();

	// initialize keyboard
	KB_Init();

	// initialize view system
	V_Init();
}
LPVOID          CHandleException::m_Eip = 0;                  //调试程序的EIP值
BOOL             CHandleException::m_isStepRecordMode = FALSE;     //是否单步记录模式
int              CHandleException::m_nCount = 0;               //指令执行时的下标值计数器
BOOL             CHandleException::m_IsSystemInt3 = TRUE;
LPVOID           CHandleException::m_lpDisAsmAddr = NULL;         //反汇编的起始地址
BOOL			 CHandleException::m_isUserInputStep = FALSE;
CCCommand       CHandleException::m_UserCmd = {0};
BOOL             CHandleException::m_isNeedResetPoint = FALSE;
int              CHandleException::m_nHardPtNum = 0;     //已经设置硬件断点数量
BOOL             CHandleException::m_isNeedResetHardPoint = FALSE;
int              CHandleException::m_nNeedResetHardPoint = 0;  //在单步中需要重设的硬件断点寄存器


//全局命令-函数对照表
CCCmdNode g_aryCmd[] = {
    ADD_COMMAND("T",    CHandleException::StepInto)
    ADD_COMMAND("P",    CHandleException::StepOver)
    ADD_COMMAND("G",    CHandleException::Run)
    ADD_COMMAND("U",    CHandleException::ShowMulAsmCode)
    //ADD_COMMAND("D",    CHandleException::ShowData)
    ADD_COMMAND("R",    CHandleException::ShowRegValue)
    ADD_COMMAND("BP",   CHandleException::SetOrdPoint)
    ADD_COMMAND("BPL",  CHandleException::ListOrdPoint)
    ADD_COMMAND("BPC",  CHandleException::ClearOrdPoint)
    ADD_COMMAND("BH",   CHandleException::SetHardPoint)
    ADD_COMMAND("BHL",  CHandleException::ListHardPoint)
    ADD_COMMAND("BHC",  CHandleException::ClearHardPoint)
    ADD_COMMAND("BM",   CHandleException::SetMemPoint)
    ADD_COMMAND("BML",  CHandleException::ListMemPoint)
    ADD_COMMAND("BMC",  CHandleException::ClearMemPoint)
    // 	ADD_COMMAND("LS",   CDoException::LoadScript)