亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gamescript.h

?? this keik game source
?? H
字號:
//-----------------------------------------------------------------------------
//
//  $Logfile:: /Quake 2 Engine/Sin/code/game/gamescript.h                     $
// $Revision:: 11                                                             $
//   $Author:: Jimdose                                                        $
//     $Date:: 10/25/98 11:53p                                                $
//
// 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/gamescript.h                          $
// 
// 11    10/25/98 11:53p Jimdose
// added EXPORT_TEMPLATE
// 
// 10    10/20/98 10:30p Jimdose
// added crc checking to unarchive
// 
// 9     10/07/98 11:50p Jimdose
// Rewrote archiving functions for savegames
// got rid of type
// 
// 8     9/22/98 1:49a Jimdose
// removed freelabels
// 
// 7     9/21/98 10:15p Markd
// Putting archiving and unarchiving functions in
// 
// 6     7/13/98 5:57p Markd
// Added Setgamescript and Getgamescript methods
// 
// 5     7/11/98 8:43p Markd
// Added SetDialogScript
// 
// 4     7/07/98 11:36p Jimdose
// Added GameScriptMarker
// 
// 3     6/09/98 4:24p Jimdose
// finished implimentation
// 
// 2     6/05/98 2:37p Jimdose
// Created file
// 
// DESCRIPTION:
// Subclass of script that preprocesses labels
//

#ifndef __GAMESCRIPT_H__
#define __GAMESCRIPT_H__

#include "class.h"
#include "script.h"

typedef struct
	{
	scriptmarker_t pos;
	str labelname;
	} script_label_t;

class GameScript;

class EXPORT_FROM_DLL GameScriptMarker : public Class
	{
	public:
		CLASS_PROTOTYPE( GameScriptMarker );

      str               filename;
		scriptmarker_t		scriptmarker;
      virtual void      Archive( Archiver &arc );
      virtual void      Unarchive( Archiver &arc );
	};

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

   {
   // Game scripts are unique in that we don't call our superclass to archive it's data.
   // Instead, we only read enough info to then initialize the script ourselves.
   arc.WriteString( filename );
   arc.WriteBoolean( scriptmarker.tokenready );
   arc.WriteInteger( scriptmarker.offset );
   arc.WriteInteger( scriptmarker.line );
   arc.WriteRaw( scriptmarker.token, sizeof( scriptmarker.token ) );
   }

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

   {
   // Game scripts are unique in that we don't call our superclass to archive it's data.
   // Instead, we only read enough info to then initialize the script ourselves.
   arc.ReadString( &filename );
   arc.ReadBoolean( &scriptmarker.tokenready );
   arc.ReadInteger( &scriptmarker.offset );
   arc.ReadInteger( &scriptmarker.line );
   arc.ReadRaw( scriptmarker.token, sizeof( scriptmarker.token ) );
   }

#ifdef EXPORT_TEMPLATE
template class EXPORT_FROM_DLL Container<script_label_t *>;
#endif

class EXPORT_FROM_DLL GameScript : public Script
	{
	protected:
		Container<script_label_t *>	*labelList;
		GameScript							*sourcescript;
      unsigned                      crc;

	public:
      CLASS_PROTOTYPE( GameScript );

								GameScript();
								GameScript( GameScript *scr );
								~GameScript();
		void					Close( void );
		void					SetSourceScript( GameScript *scr );
		void					LoadFile( const char *filename );

		void					Mark( GameScriptMarker *mark );
		void					Restore( GameScriptMarker *mark );

		void					FreeLabels( void );
		void					FindLabels( void );
		qboolean				labelExists( const char *name );
		qboolean				Goto( const char *name );
      virtual void      Archive( Archiver &arc );
      virtual void      Unarchive( Archiver &arc );
	};

#ifdef EXPORT_TEMPLATE
template class EXPORT_FROM_DLL Container<GameScript *>;
#endif

class EXPORT_FROM_DLL ScriptLibrarian : public Class
	{
	protected:
		Container<GameScript *>	scripts;
      str                     dialog_script;
      str                     game_script;

	public:
      CLASS_PROTOTYPE( ScriptLibrarian );

		~ScriptLibrarian();

		void			CloseScripts( void );
		void			SetDialogScript( str scriptname );
		void			SetGameScript( str scriptname );
		const char  *GetGameScript( void );
      GameScript  *FindScript( const char *name );
		GameScript	*GetScript( const char *name );
		qboolean		Goto( GameScript *scr, const char *name );
		qboolean		labelExists( GameScript *scr, const char *name );
      virtual void Archive( Archiver &arc );
      virtual void Unarchive( Archiver &arc );
	};

inline EXPORT_FROM_DLL void ScriptLibrarian::Archive
	(
	Archiver &arc
	)
   {
   GameScript * scr;
   int i, num;

   Class::Archive( arc );

   num = scripts.NumObjects();
   arc.WriteInteger( num );
   for ( i = 1; i <= num; i++ )
      {
      scr = scripts.ObjectAt( i );
      arc.WriteObject( scr );
      }
   arc.WriteString( dialog_script );
   arc.WriteString( game_script );
   }

inline EXPORT_FROM_DLL void ScriptLibrarian::Unarchive
	(
	Archiver &arc
	)
   {
   GameScript * scr;
   int i, num;

   Class::Unarchive( arc );

   scripts.FreeObjectList();

   arc.ReadInteger( &num );
   for ( i = 1; i <= num; i++ )
      {
      scr = new GameScript;
      arc.ReadObject( scr );
      scripts.AddObject( scr );
      }

   arc.ReadString( &dialog_script );
   arc.ReadString( &game_script );
   }

extern ScriptLibrarian ScriptLib;

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

   {
   // Game scripts are unique in that we don't call our superclass to archive it's data.
   // Instead, we only read enough info to then initialize the script ourselves.
   GameScriptMarker mark;

   arc.WriteUnsigned( crc );

   Mark( &mark );
   arc.WriteObject( &mark );
   }

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

   {
   // This function is based in part on Restore, so it changes, we must update this function as well.
   // Game scripts are unique in that we don't call our superclass to archive it's data.
   // Instead, we only read enough info to then initialize the script ourselves.
   GameScriptMarker mark;
   unsigned filecrc;
   GameScript *scr;

   arc.ReadUnsigned( &filecrc );
   arc.ReadObject( &mark );

   scr = ScriptLib.FindScript( mark.filename.c_str() );
   if ( scr )
      {
      SetSourceScript( scr );
      }
   else
      {
      LoadFile( mark.filename.c_str() );
      }

   // Error out if CRCs have changed
   if ( filecrc != crc )
      {
      gi.error( "File '%s' has changed from when this savegame was written.  Load cancelled.\n", filename.c_str() );
      }

	RestorePosition( &mark.scriptmarker );
   }

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美腿丝袜亚洲综合| 国产精品综合一区二区三区| 爽爽淫人综合网网站| 久久99精品国产| 91久久精品一区二区| 欧美一激情一区二区三区| 久久久久久久久久久久久女国产乱 | 青青草原综合久久大伊人精品优势 | 极品瑜伽女神91| 色诱视频网站一区| 6080亚洲精品一区二区| 久久久久久毛片| 日韩一区欧美一区| 另类专区欧美蜜桃臀第一页| 不卡av免费在线观看| 欧美剧在线免费观看网站| 1024精品合集| 国产一区二区三区免费观看| 欧美日韩一区三区| 亚洲精品老司机| 国产精品自拍三区| 欧美日韩五月天| 亚洲欧美国产三级| 国产成人精品影视| 日韩免费看网站| 日本亚洲三级在线| 91蜜桃视频在线| 久久精品一区二区三区不卡牛牛| 国产精品视频观看| 国产精品123| 日韩一区二区免费电影| 亚洲自拍偷拍图区| 91免费在线看| 国产精品乱人伦中文| 久草这里只有精品视频| 欧美成人一区二区三区| 婷婷综合另类小说色区| 91浏览器入口在线观看| 中文字幕色av一区二区三区| 国产精品亚洲第一| 日韩欧美一二区| 日本中文一区二区三区| 欧美系列亚洲系列| 亚洲视频一二三| 国产一区二区看久久| 久久久精品日韩欧美| 六月丁香婷婷色狠狠久久| 91网站在线播放| 亚洲另类中文字| 97se亚洲国产综合自在线| 精品久久免费看| 国产高清视频一区| 久久久精品人体av艺术| 免费成人美女在线观看.| 久久影院视频免费| 国产电影一区在线| 国产欧美日韩精品在线| 天堂va蜜桃一区二区三区漫画版| 欧美日韩成人激情| 婷婷中文字幕综合| 日韩精品一区二区三区swag| 麻豆精品一区二区综合av| 久久蜜桃av一区精品变态类天堂 | 91国偷自产一区二区三区成为亚洲经典| 国产精品丝袜在线| 91同城在线观看| 香蕉av福利精品导航| 欧美二区在线观看| 国产一区二区导航在线播放| 国产精品毛片大码女人| 色噜噜狠狠成人网p站| 亚洲日本丝袜连裤袜办公室| 精品视频在线免费观看| 首页国产丝袜综合| 精品国产乱码久久久久久图片| 成人丝袜高跟foot| 亚洲一区二区精品视频| 欧美大片日本大片免费观看| 成人av片在线观看| 亚洲国产精品一区二区www| 欧美一级二级在线观看| 国产凹凸在线观看一区二区| 国产精品国产三级国产aⅴ中文| 色综合天天综合网国产成人综合天| ...xxx性欧美| 久久影视一区二区| 91美女在线观看| 欧美bbbbb| 亚洲高清一区二区三区| 久久无码av三级| 99精品热视频| 国产精品99久久久久久久女警 | 亚洲最大成人网4388xx| 欧美日韩免费电影| av成人免费在线观看| 日本免费新一区视频| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲国产你懂的| 91精品国产一区二区| 国产成人精品亚洲日本在线桃色| 夜夜嗨av一区二区三区四季av | 亚洲国产日韩综合久久精品| 26uuu亚洲| 欧美性受极品xxxx喷水| 94-欧美-setu| 狠狠色综合日日| 亚洲一区二区三区爽爽爽爽爽 | 久久成人久久爱| 一区二区三区四区亚洲| 久久综合色一综合色88| 日韩亚洲欧美成人一区| 色婷婷香蕉在线一区二区| 国产黄色成人av| 韩国三级在线一区| 日产精品久久久久久久性色| 一区二区三区四区av| 亚洲欧洲综合另类在线 | 国产69精品一区二区亚洲孕妇| 六月丁香综合在线视频| 亚洲午夜精品网| 亚洲免费观看在线视频| 亚洲图片另类小说| 国产欧美日韩中文久久| 日韩免费看的电影| 精品国产一区二区三区忘忧草 | 亚洲不卡一区二区三区| 国产精品久久久久aaaa樱花| 日韩一区二区精品葵司在线| 欧美大白屁股肥臀xxxxxx| 欧美日韩高清影院| 91高清视频在线| 欧美精品久久一区二区三区| 欧洲一区二区av| 欧美中文字幕一区| 3atv一区二区三区| 欧美日本高清视频在线观看| 欧美在线一二三| 3d动漫精品啪啪一区二区竹菊| 欧美色老头old∨ideo| 在线观看国产日韩| 欧美顶级少妇做爰| 3d成人动漫网站| 日韩欧美久久久| 国产精品乱码妇女bbbb| 中文字幕一区av| 亚洲精品久久久蜜桃| 国产精品美女久久久久aⅴ| 中文字幕一区视频| 国产精品国产三级国产有无不卡 | 欧美挠脚心视频网站| 日本韩国精品在线| 色成年激情久久综合| 欧美一区二区在线视频| 久久亚洲春色中文字幕久久久| 精品91自产拍在线观看一区| 日韩欧美第一区| 国产精品欧美一区二区三区| 亚洲美女一区二区三区| 午夜精品久久久久久久| 狠狠色综合播放一区二区| 97se狠狠狠综合亚洲狠狠| 日韩欧美一区电影| 亚洲欧美视频在线观看| 久久99精品久久久久婷婷| 91网上在线视频| 久久伊人中文字幕| 五月天激情小说综合| 成人黄色电影在线| 日韩一区二区三区在线| 亚洲男人电影天堂| 国产呦精品一区二区三区网站| 在线观看日韩电影| 国产清纯在线一区二区www| 日韩av中文字幕一区二区| 91在线porny国产在线看| 久久影院午夜论| 男人的天堂亚洲一区| 欧美性极品少妇| 亚洲丝袜自拍清纯另类| 国产剧情一区二区| 884aa四虎影成人精品一区| 亚洲另类色综合网站| 国产一区二区h| 日韩一区二区三区四区五区六区| 亚洲午夜影视影院在线观看| www.日本不卡| 国产三级一区二区| 老司机午夜精品| 在线不卡免费av| 亚洲一区在线观看视频| 92国产精品观看| 国产精品毛片a∨一区二区三区| 国产乱人伦精品一区二区在线观看 | 秋霞av亚洲一区二区三| 欧美日韩久久久| 亚洲影院久久精品| 色94色欧美sute亚洲线路二| 一区精品在线播放| 成人高清免费观看| 国产精品久久久久久久久久久免费看|