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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? surface.cpp

?? this keik game source
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//-----------------------------------------------------------------------------
//
//  $Logfile:: /Quake 2 Engine/Sin/code/game/surface.cpp                      $
// $Revision:: 27                                                             $
//   $Author:: Jimdose                                                        $
//     $Date:: 12/18/98 11:02p                                                $
//
// Copyright (C) 1998 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/surface.cpp                           $
// 
// 27    12/18/98 11:02p Jimdose
// removed include of qcommon.h
// 
// 26    10/20/98 8:26p Markd
// Added Attacker to DamageSurface stuff
// 
// 25    10/15/98 7:33p Markd
// bullet proofed surface not found stuff
// 
// 24    10/15/98 4:37p Markd
// fixed damaged surface stuff
// 
// 23    10/13/98 9:01p Markd
// Fixed bug in TransOn TransOff
// 
// 22    10/09/98 4:54p Markd
// Added threading abilities from surfaces
// 
// 21    10/06/98 9:17p Aldie
// Removed SURF_STRONG
// 
// 20    10/05/98 11:29p Markd
// Put in MadeBreakingSound
// 
// 19    10/05/98 11:01p Jimdose
// Added destructor
// Made Reset free up all surfaces
// 
// 18    9/21/98 4:21p Markd
// Put in archive functions and rewrote all archive routines
// 
// 17    9/19/98 1:56p Markd
// made hard errors event errors or warnings
// 
// 16    9/18/98 8:14p Markd
// rewrote surface system so that surfaces are now damaged by surface name
// instead of by surfinfo
// 
// 15    8/31/98 7:45p Aldie
// Updated surface data structure and removed surfinfo field
// 
// 14    8/24/98 12:45p Markd
// Renamed damage_frame to frame
// 
// 13    8/22/98 12:06a Aldie
// New surface manager implemented
// 
// 12    6/08/98 7:22p Aldie
// Put damage command back in
// 
// 11    5/25/98 2:28p Aldie
// Fixed issues with not loading game dll
// 
// 10    5/24/98 9:00p Jimdose
// made CreateSurface us G_CopyString to allocate a string
// 
// 9     5/24/98 4:48p Jimdose
// Made char *'s const
// 
// 8     5/23/98 12:53p Aldie
// Updated surfaces networking.
// 
// 7     5/13/98 4:47p Aldie
// Update damage surfaces
// 
// 6     5/05/98 5:35p Aldie
// Updated damage surfaces
// 
// 5     5/05/98 3:49p Aldie
// Fixed some prints.
// 
// 4     5/05/98 2:43p Aldie
// Added server side surface states
// 
// 3     3/24/98 4:56p Jimdose
// Fixed bug where surface commands were sent with the wrong syntax
// 
// 2     3/23/98 1:31p Jimdose
// Revamped event and command system
//
// DESCRIPTION:
// Controls surfaces
// 

#include "g_local.h"
#include "listener.h"
#include "surface.h"
#include "misc.h"
#include "specialfx.h"
#include <ctype.h>

CLASS_DECLARATION( Class, Surface, NULL );
ResponseDef Surface::Responses[] =
	{
		{ NULL, NULL }
	};


CLASS_DECLARATION( Listener, SurfaceModifier, NULL );

Event EV_Surface_TransOn( "transOn" );
Event EV_Surface_TransOff( "transOff" );
Event EV_Surface_TransToggle( "transToggle" );
Event EV_Surface_TransMag( "trans_mag" );
Event EV_Surface_Translucence( "translucence" );
Event EV_Surface_Magnitude( "magnitude" );
Event EV_Surface_Frequency( "frequency" );
Event EV_Surface_TransAngle( "trans_angle" );
Event EV_Surface_DamageFrame( "frame" );
Event EV_Surface_Damage( "damage" );

ResponseDef SurfaceModifier::Responses[] =
	{
	   { &EV_Surface_TransOn,					( Response )SurfaceModifier::TranslationOn },
	   { &EV_Surface_TransOff,					( Response )SurfaceModifier::TranslationOff },
	   { &EV_Surface_TransToggle,				( Response )SurfaceModifier::TranslationToggle },
	   { &EV_Surface_TransMag,					( Response )SurfaceModifier::SetTranslationMagnitude },
	   { &EV_Surface_TransAngle,				( Response )SurfaceModifier::SetTranslationAngle },
      { &EV_Surface_Translucence,			( Response )SurfaceModifier::SetTranslucence },
	   { &EV_Surface_Magnitude,				( Response )SurfaceModifier::SetMagnitude },
	   { &EV_Surface_Frequency,				( Response )SurfaceModifier::SetFrequency },
	   { &EV_Surface_DamageFrame,  			( Response )SurfaceModifier::SetDamageFrame },
      { &EV_Surface_Damage,        			( Response )SurfaceModifier::SetDamage },
      { NULL, NULL }
	};

SurfaceModifier surfaceManager;

SurfaceModifier::~SurfaceModifier()
   {
   Reset();
   }

//==========
//AddSurface - to the surfaceManager
//==========
int SurfaceModifier::AddSurface
	(
	Surface *surf
	)
	{
   int num;

	num = surfaceList.AddObject( surf );
   return num;
	}


//=============
//SurfaceExists - returns the number of the surface, 0 if not found.
//=============
int SurfaceModifier::SurfaceExists(const char *surf_name)
   {
   int num,i;
   Surface *p;

	num = surfaceList.NumObjects();
	for( i = 1; i <= num; i++ )
		{
		p = ( Surface * )surfaceList.ObjectAt( i );
      if (!strcmp(p->SurfaceName(),surf_name)) 
         return p->SurfaceNumber();
		}
   return 0;
   }

//=============
//GetSurface - returns the surface, NULL if not found.
//=============
Surface * SurfaceModifier::GetSurface(const char *surf_name)
   {
   int num,i;
   Surface *p;

	num = surfaceList.NumObjects();
	for( i = 1; i <= num; i++ )
		{
		p = ( Surface * )surfaceList.ObjectAt( i );
      if (!strcmp(p->SurfaceName(),surf_name)) 
         return p;
		}
   return NULL;
   }

//=====
//Reset
//=====
void SurfaceModifier::Reset()
   {
   int i;
   int num;

   num = surfaceList.NumObjects();
   for( i = num; i > 0; i-- )
      {
      delete surfaceList.ObjectAt( i );
      }

   surfaceList.FreeObjectList();
   }

//=============
//CreateSurface - Creates a server game surface that can be modified through scripts and events
//=============
void SurfaceModifier::CreateSurface (const char *surf_name, csurface_t *surfinfo)
   {
   csurface_t     *surfptr;
   netsurface_t   *netsurf;
   Surface        *surf;
   int            numframes;

   globals.num_surfaces++;
   surf = new Surface;
   surf->SetDamage( 0 );
   surf->SetState( 0 );
   surf->SetNumber(globals.num_surfaces);
   surf->SetName(surf_name);

   if ( ( surfinfo->flags & SURF_WEAK ) && ( surfinfo->flags & SURF_NORMAL ) )
      surf->SetThreshold( STRONG_DAMAGE_VALUE );
   else if ( surfinfo->flags & SURF_WEAK )
      surf->SetThreshold( WEAK_DAMAGE_VALUE );
   else if ( surfinfo->flags & SURF_NORMAL )
      surf->SetThreshold( NORMAL_DAMAGE_VALUE );

   surfptr = surfinfo;
   numframes = 0;
   while ( surfptr->next )
      {
      numframes++;
      surfptr = surfptr->next;
      if ( numframes > 128 || surfptr == surfinfo )
         {
         gi.dprintf("CreateSurface: Possible infinite animation/damage loop for %s.\n", surf_name );
         break;
         }
      }
   surf->SetNumFrames( numframes );
   surf->SetLightStyle( surfinfo->style );

   AddSurface(surf);
   netsurf = &g_surfaces[globals.num_surfaces];
  
   netsurf->s.name         = G_CopyString( surf_name );
   netsurf->inuse          = true;
   netsurf->s.number       = globals.num_surfaces;
   netsurf->s.groupnumber  = surfinfo->groupnumber;
   netsurf->s.trans_mag    = surfinfo->trans_mag;
   netsurf->s.trans_angle  = surfinfo->trans_angle;
   netsurf->s.translucence = surfinfo->translucence;
   netsurf->s.magnitude    = surfinfo->magnitude;
   netsurf->s.frequency    = surfinfo->frequency;
   netsurf->s.damage_frame = 0;
   if ( surfinfo->flags & SURF_TRANSLATE )
      netsurf->s.trans_state = true;
   else
      netsurf->s.trans_state = false;
   netsurf->s.changed      = true;
   }

//==============
//SetDamageFrame
//==============
void SurfaceModifier::SetDamageFrame (Event *ev)
   {
   const char		*surf_name;
   netsurface_t   *svsurf;
   int            num;
   int            frame;

   surf_name = ev->GetString(1);
   if (!(num = SurfaceExists(surf_name)))
      {
      ev->Error("SurfaceModifier::SetDamage", "surface name %s is not found\n", surf_name);
      }
   
   svsurf=&g_surfaces[num];
   frame = ev->GetInteger(2);
   if (svsurf->s.damage_frame != frame)
      {
      svsurf->s.changed = true;
      }
   svsurf->s.damage_frame = frame;
   }

//============
//SetFrequency
//============
void SurfaceModifier::SetFrequency (Event *ev)
   {
   const char		*surf_name;
   netsurface_t   *svsurf;
   int            num;

   surf_name = ev->GetString(1);
   if (!(num = SurfaceExists(surf_name)))
      {
      ev->Error("SurfaceModifier::SetFrequency", "surface name %s is not found\n", surf_name);
      }

   svsurf=&g_surfaces[num];
   svsurf->s.frequency = ev->GetFloat(2);
   svsurf->s.changed = true;
   }

//============
//SetMagnitude
//============
void SurfaceModifier::SetMagnitude (Event *ev)
   {
   const char		*surf_name;
   netsurface_t   *svsurf;
   int            num;

   surf_name = ev->GetString(1);
   if (!(num = SurfaceExists(surf_name)))
      {
      ev->Error("SurfaceModifier::SetMagnitude", "surface name %s is not found\n", surf_name);
      }

   svsurf=&g_surfaces[num];
   svsurf->s.magnitude = ev->GetFloat(2);
   svsurf->s.changed = true;
   }

//===============
//SetTranslucence
//===============
void SurfaceModifier::SetTranslucence (Event *ev)
   {
   const char		*surf_name;
   netsurface_t   *svsurf;
   int            num;

   surf_name = ev->GetString(1);
   if (!(num = SurfaceExists(surf_name)))
      {
      ev->Error("SurfaceModifier::SetTranslucence", "surface name %s is not found\n", surf_name);
      }

   svsurf=&g_surfaces[num];
   svsurf->s.translucence = ev->GetFloat(2);
   svsurf->s.changed = true;
   }

//===================
//SetTranslationAngle
//===================
void SurfaceModifier::SetTranslationAngle (Event *ev)
   {
   const char		*surf_name;
   netsurface_t   *svsurf;
   int            num;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩久久一区二区| 亚洲mv大片欧洲mv大片精品| 欧美视频你懂的| 国产一区二区在线观看视频| 亚洲国产精品久久人人爱| 中文在线一区二区| 日韩欧美另类在线| 欧美视频三区在线播放| 不卡高清视频专区| 国产丶欧美丶日本不卡视频| 青青草国产成人av片免费 | 国产精品每日更新| 日韩一级免费一区| 精品视频色一区| 日本丶国产丶欧美色综合| 国产大陆a不卡| 国产在线不卡一卡二卡三卡四卡| 亚洲成人自拍一区| 亚洲国产一区在线观看| 一区二区在线观看视频在线观看| 国产精品婷婷午夜在线观看| 久久久亚洲精品石原莉奈| 日韩精品一区二区三区四区视频| 欧美日韩午夜精品| 欧美三级韩国三级日本一级| 欧洲视频一区二区| 色香色香欲天天天影视综合网| 成人h动漫精品| 成人国产在线观看| www.久久久久久久久| 成人黄页在线观看| 国产91丝袜在线18| 国产91在线|亚洲| 国产成人aaaa| 成人福利视频在线看| 国产成人免费视频一区| 国产精品99久久久久久宅男| 高清日韩电视剧大全免费| 成人免费毛片嘿嘿连载视频| 成人午夜视频在线| 波多野结衣欧美| 91日韩在线专区| 欧美视频自拍偷拍| 91精品在线一区二区| 日韩一级片在线观看| 欧美xxxx在线观看| 国产亚洲成aⅴ人片在线观看| 日本一区二区三区dvd视频在线| 中文在线资源观看网站视频免费不卡 | 5月丁香婷婷综合| 欧美一区二区女人| 久久青草欧美一区二区三区| 欧美激情中文字幕一区二区| 亚洲天堂精品在线观看| 亚洲精品久久久蜜桃| 亚洲18色成人| 九九国产精品视频| 成人黄色a**站在线观看| 91久久一区二区| 日韩欧美一区电影| 久久午夜电影网| 中文字幕亚洲视频| 偷窥少妇高潮呻吟av久久免费| 免费成人美女在线观看| 国产白丝网站精品污在线入口| 99riav一区二区三区| 欧美精品久久一区二区三区| 精品久久久久久久久久久久久久久 | 国产精品国产馆在线真实露脸| 亚洲激情五月婷婷| 蜜桃精品视频在线| 成人精品在线视频观看| 欧美日韩在线一区二区| 日韩欧美国产高清| 亚洲欧洲日本在线| 免费看欧美女人艹b| 高清不卡在线观看| 欧美日韩精品欧美日韩精品一综合| 欧美v国产在线一区二区三区| 中文字幕一区二区不卡 | 91碰在线视频| 91精品国产一区二区三区| 中文字幕欧美日本乱码一线二线| 一区二区三区四区五区视频在线观看 | 欧美日韩国产综合久久| 欧美激情一区二区三区蜜桃视频| 亚洲精品成人a在线观看| 久久99国产精品麻豆| 在线看日本不卡| 国产欧美视频一区二区三区| 亚洲成a人v欧美综合天堂| 粉嫩aⅴ一区二区三区四区五区| 欧美日韩国产高清一区二区| 国产精品久久久久天堂| 久久99精品久久久久久国产越南 | 洋洋av久久久久久久一区| 国模冰冰炮一区二区| 欧美色精品在线视频| 欧美国产日韩亚洲一区| 蜜桃视频在线观看一区| 色婷婷av久久久久久久| 欧美国产一区视频在线观看| 蜜桃视频在线一区| 欧美中文字幕一区| 欧美激情一区二区三区全黄| 久久精工是国产品牌吗| 在线影院国内精品| 国产精品丝袜在线| 国产精品一区二区三区99| 欧美一区二区三区免费在线看| 中文字幕一区在线观看| 国产成人av电影在线播放| 欧美成人福利视频| 日韩不卡一二三区| 欧美吞精做爰啪啪高潮| 一色屋精品亚洲香蕉网站| 国产成人精品免费在线| 久久综合九色欧美综合狠狠 | 亚洲午夜视频在线观看| 91麻豆国产自产在线观看| 中文字幕一区在线观看视频| 国产91精品久久久久久久网曝门| 久久久亚洲精品石原莉奈| 狠狠色2019综合网| 精品国产免费人成在线观看| 免费在线观看成人| 日韩一区二区免费高清| 日本伊人色综合网| 91精品国产综合久久蜜臀| 日韩专区一卡二卡| 日韩一区二区三| 另类的小说在线视频另类成人小视频在线 | 丝瓜av网站精品一区二区 | 欧美手机在线视频| 亚洲午夜电影在线观看| 欧美三级在线视频| 日本午夜一区二区| 日韩视频国产视频| 国内成人免费视频| 国产欧美日韩另类一区| av亚洲精华国产精华精华| 亚洲欧美欧美一区二区三区| 日本韩国欧美在线| 婷婷一区二区三区| 精品乱人伦小说| 国产成人精品免费一区二区| 综合久久综合久久| 精品污污网站免费看| 美女视频黄久久| 国产色产综合色产在线视频| 99精品黄色片免费大全| 亚洲一区影音先锋| 日韩色视频在线观看| 国产1区2区3区精品美女| 亚洲欧美中日韩| 欧美日本免费一区二区三区| 久久精品99国产国产精| 中文在线一区二区| 欧美三级在线播放| 精品一区二区三区免费| 国产精品久久久久久久第一福利| 在线这里只有精品| 久久99精品国产麻豆婷婷| 国产片一区二区三区| 91福利精品第一导航| 美腿丝袜亚洲三区| 一区精品在线播放| 5566中文字幕一区二区电影 | 欧美老人xxxx18| 精品一二三四区| 亚洲精选视频在线| 精品乱人伦小说| 一本色道久久综合亚洲91| 蜜桃视频在线观看一区二区| 国产精品视频你懂的| 欧美高清dvd| av成人动漫在线观看| 秋霞电影一区二区| 国产精品成人在线观看| 欧美一卡二卡三卡四卡| 99久久er热在这里只有精品15| 免费亚洲电影在线| 亚洲欧美日韩中文播放| 精品福利一二区| 欧美午夜精品久久久| 国产精品一区一区三区| 亚洲不卡av一区二区三区| 欧美国产日韩亚洲一区| 欧美二区在线观看| 91丨九色丨蝌蚪富婆spa| 国内不卡的二区三区中文字幕| 亚洲永久免费av| 国产精品欧美久久久久一区二区| 日韩欧美视频一区| 欧美中文字幕亚洲一区二区va在线 | 黑人巨大精品欧美黑白配亚洲| 亚洲综合激情另类小说区| 国产片一区二区| 日韩欧美国产系列| 欧美三级视频在线观看|