⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scriptvariable.h

📁 this keik game source
💻 H
字号:
//-----------------------------------------------------------------------------
//
//  $Logfile:: /Quake 2 Engine/Sin/code/game/scriptvariable.h                 $
// $Revision:: 26                                                             $
//   $Author:: Jimdose                                                        $
//     $Date:: 11/08/98 10:54p                                                $
//
// Copyright (C) 1997 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source is may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
// $Log:: /Quake 2 Engine/Sin/code/game/scriptvariable.h                      $
// 
// 26    11/08/98 10:54p Jimdose
// vec wasn't being archived
// 
// 25    10/25/98 11:53p Jimdose
// added EXPORT_TEMPLATE
// 
// 24    10/08/98 12:01a Jimdose
// defined ScriptVariablePtr
// 
// 23    9/21/98 10:15p Markd
// Putting archiving and unarchiving functions in
// 
// 22    9/21/98 4:21p Markd
// Put in archive functions and rewrote all archive routines
// 
// 21    8/20/98 6:09p Markd
// Added ToForward, ToRight, To Up for angle vectors
// 
// 20    8/20/98 5:35p Markd
// Added cross product, dot product and length
// 
// 19    8/20/98 4:31p Markd
// Added vector support
// 
// 18    8/07/98 5:43p Jimdose
// Added isVariableCommand
// 
// 17    7/26/98 5:32a Markd
// put in archive functions
// 
// 16    7/24/98 4:52p Jimdose
// Added getcvar command to script
// 
// 15    7/02/98 4:39p Jimdose
// Changed the name of str to string so that it didn't conflict with the class
// name str
// 
// 14    6/30/98 6:07p Jimdose
// Added versions of CreateVariable that accept Entity *'s and Vectors
// Added SetVariable with variations
// 
// 13    5/24/98 4:48p Jimdose
// Made char *'s const
// 
// 12    4/30/98 9:24p Jimdose
// Changed use of string to str class
// 
// 11    4/18/98 6:13p Aldie
// Added randomfloat, randomint, div, and mod
// 
// 10    3/27/98 6:26p Aldie
// Added coninput.
// 
// 9     3/24/98 8:54p Jimdose
// Added thread management script commands
// 
// 8     3/23/98 1:33p Jimdose
// Revamped event and command system
// 
// 7     3/02/98 8:49p Jimdose
// Changed CLASS_PROTOTYPE to only take the classname
// 
// 6     3/02/98 5:39p Jimdose
// Changed Container to template
// 
// 5     2/17/98 7:03p Jimdose
// Added ClearList
// 
// 4     2/03/98 10:47a Jimdose
// Updated to work with Quake 2 engine
// 
// 2     11/07/97 6:35p Jimdose
// Created file
//
// DESCRIPTION:
// Dynamic variable list for scripts.
// 

#ifndef __SCRIPTVARIABLE_H__
#define __SCRIPTVARIABLE_H__

#include "g_local.h"
#include "container.h"
#include "listener.h"

extern Event EV_Var_Append;
extern Event EV_Var_AppendInt;
extern Event EV_Var_AppendFloat;
extern Event EV_Var_String;
extern Event EV_Var_Equals;
extern Event EV_Var_PlusEquals;
extern Event EV_Var_MinusEquals;
extern Event EV_Var_TimesEquals;
extern Event EV_Var_DivideEquals;
extern Event EV_Var_IfEqual;
extern Event EV_Var_IfNotEqual;
extern Event EV_Var_IfGreater;
extern Event EV_Var_IfGreaterEqual;
extern Event EV_Var_IfLess;
extern Event EV_Var_IfLessEqual;
extern Event EV_Var_IfStrEqual;
extern Event EV_Var_IfStrNotEqual;
extern Event EV_Var_IfThreadActive;
extern Event EV_Var_IfThreadNotActive;
extern Event EV_Var_GetCvar;
extern Event EV_Var_Vector;
extern Event EV_Var_VectorIfEqual;
extern Event EV_Var_VectorIfNotEqual;
extern Event EV_Var_VectorAdd;
extern Event EV_Var_VectorSubtract;
extern Event EV_Var_VectorScale;
extern Event EV_Var_VectorNormalize;
extern Event EV_Var_VectorGetX;
extern Event EV_Var_VectorGetY;
extern Event EV_Var_VectorGetZ;
extern Event EV_Var_VectorSetX;
extern Event EV_Var_VectorSetY;
extern Event EV_Var_VectorSetZ;
extern Event EV_Var_VectorDotProduct;
extern Event EV_Var_VectorCrossProduct;
extern Event EV_Var_VectorLength;
extern Event EV_Var_AnglesToForward;
extern Event EV_Var_AnglesToRight;
extern Event EV_Var_AnglesToUp;

class EXPORT_FROM_DLL ScriptVariable : public Listener
	{
	private:
		str						name;
		float						value;
		str						string;
		Vector					vec;

		void						setString( const char *newvalue );

	public:
      CLASS_PROTOTYPE( ScriptVariable );

									ScriptVariable();

		qboolean					isVariableCommand( const char *name );

		void						setName( const char *newname );
		const char				*getName( void );

		const char				*stringValue( void );
		void						setStringValue( const char *newvalue );

		int						intValue( void );
		void						setIntValue( int newvalue );

		float						floatValue( void );
		void						setFloatValue( float newvalue );

      void                 setVectorValue( Vector newvector );
		Vector               vectorValue( void );

		void 						Var_Append( Event *ev );
		void 						Var_AppendInt( Event *ev );
		void 						Var_AppendFloat( Event *ev );
		void 						Var_String( Event *ev );
      void                 Var_ConInput(Event *ev );
      void                 Var_RandomFloat(Event *ev );
      void                 Var_RandomInteger(Event *ev );
		void 						Var_Equals( Event *ev );
		void 						Var_PlusEquals( Event *ev );
		void 						Var_MinusEquals( Event *ev );
		void 						Var_TimesEquals( Event *ev );
		void 						Var_DivideEquals( Event *ev );
      void 						Var_Div( Event *ev );
      void 						Var_Mod( Event *ev );
		void 						Var_IfEqual( Event *ev );
		void 						Var_IfNotEqual( Event *ev );
		void 						Var_IfGreater( Event *ev );
		void 						Var_IfGreaterEqual( Event *ev );
		void 						Var_IfLess( Event *ev );
		void 						Var_IfLessEqual( Event *ev );
		void 						Var_IfStrEqual( Event *ev );
		void 						Var_IfStrNotEqual( Event *ev );
		void						Var_IfThreadActive( Event *ev );
		void						Var_IfThreadNotActive( Event *ev );
		void						Var_GetCvar( Event *ev );
      void                 Var_Vector( Event *ev );
      void                 Var_Vector_Add( Event *ev );
      void                 Var_Vector_Subtract( Event *ev );
      void                 Var_Vector_Scale( Event *ev );
      void                 Var_Vector_Normalize( Event *ev );
      void                 Var_Vector_GetX( Event *ev );
      void                 Var_Vector_GetY( Event *ev );
      void                 Var_Vector_GetZ( Event *ev );
      void                 Var_Vector_SetX( Event *ev );
      void                 Var_Vector_SetY( Event *ev );
      void                 Var_Vector_SetZ( Event *ev );
      void                 Var_Vector_IfEqual( Event *ev );
      void                 Var_Vector_IfNotEqual( Event *ev );
      void                 Var_Vector_DotProduct( Event *ev );
      void                 Var_Vector_CrossProduct( Event *ev );
      void                 Var_Vector_Length( Event *ev );
      void                 Var_Angles_ToForward( Event *ev );
      void                 Var_Angles_ToRight( Event *ev );
      void                 Var_Angles_ToUp( Event *ev );

      virtual void         Archive(	Archiver &arc );
      virtual void         Unarchive( Archiver &arc );
	};

inline EXPORT_FROM_DLL void ScriptVariable::Archive
	(
	Archiver &arc
	)

	{
	arc.WriteString( name );
	arc.WriteFloat( value  );
	arc.WriteString( string );
	arc.WriteVector( vec );
	}

inline EXPORT_FROM_DLL void ScriptVariable::Unarchive
	(
	Archiver &arc
	)

	{
   name = arc.ReadString();
   value = arc.ReadFloat();
   string = arc.ReadString();
   vec = arc.ReadVector();
   }

//
// Exported templated classes must be explicitly instantiated
//
#ifdef EXPORT_TEMPLATE
template class EXPORT_FROM_DLL Container<ScriptVariable *>;
#endif

class EXPORT_FROM_DLL ScriptVariableList : public Class
	{
	private:
		Container<ScriptVariable *> list;

	public:
      CLASS_PROTOTYPE( ScriptVariableList );

							ScriptVariableList();
							~ScriptVariableList();

		void				ClearList( void );
		void				AddVariable( ScriptVariable *var );
		ScriptVariable *CreateVariable( const char *name, float value );
		ScriptVariable *CreateVariable( const char *name, int value	);
		ScriptVariable *CreateVariable( const char *name, const char *text );
		ScriptVariable *CreateVariable( const char *name, Entity *ent );
		ScriptVariable *CreateVariable( const char *name, Vector &vec );
		void				RemoveVariable( ScriptVariable *var );
		void				RemoveVariable( const char *name );
		qboolean			VariableExists( const char *name );
		ScriptVariable *GetVariable( const char *name );
		int				NumVariables( void );
		ScriptVariable *GetVariable( int num );
		ScriptVariable *SetVariable( const char *name, float value );
		ScriptVariable *SetVariable( const char *name, int value	);
		ScriptVariable *SetVariable( const char *name, const char *text );
		ScriptVariable *SetVariable( const char *name, Entity *ent );
		ScriptVariable *SetVariable( const char *name, Vector &vec );
      virtual void   Archive(	Archiver &arc );
      virtual void   Unarchive( Archiver &arc );
	};

inline EXPORT_FROM_DLL void ScriptVariableList::Archive
	(
	Archiver &arc
	)

	{
   int i;
	int num;
	ScriptVariable *var;

	num = NumVariables();
	arc.WriteInteger( num );
	for( i = 1; i <= num; i++ )
		{
		var = GetVariable( i );
      arc.WriteObject( var );
		}
	}

inline EXPORT_FROM_DLL void ScriptVariableList::Unarchive
	(
	Archiver &arc
	)

	{
   int i;
	int num;
	ScriptVariable *var;

   ClearList();
	num = arc.ReadInteger();
	for( i = 1; i <= num; i++ )
		{
		var = new ScriptVariable;
      arc.ReadObject( var );
      AddVariable( var );
		}
	}

#ifdef EXPORT_TEMPLATE
template class EXPORT_FROM_DLL SafePtr<ScriptVariable>;
#endif
typedef SafePtr<ScriptVariable> ScriptVariablePtr;

#endif /* scriptvariable.h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -