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

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

?? p_spec.h

?? 游戲類程序源代碼---WinDoom 3D源程序.zip
?? H
字號:
// Emacs style mode select   -*- C++ -*- 
//-----------------------------------------------------------------------------
//
// $Id:$
//
// Copyright (C) 1993-1996 by id Software, Inc.
//
// This source is available for distribution and/or modification
// only under the terms of the DOOM Source Code License as
// published by id Software. All rights reserved.
//
// The source is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
// for more details.
//
// DESCRIPTION:  none
//	Implements special effects:
//	Texture animation, height or lighting changes
//	 according to adjacent sectors, respective
//	 utility functions, etc.
//
//-----------------------------------------------------------------------------


#ifndef __P_SPEC__
#define __P_SPEC__


//
// End-level timer (-TIMER option)
//
extern	boolean levelTimer;
extern	int	levelTimeCount;


//      Define values for map objects
#define MO_TELEPORTMAN          14


// at game start
void    P_InitPicAnims (void);

// at map load
void    P_SpawnSpecials (void);

// every tic
void    P_UpdateSpecials (void);

// when needed
boolean
P_UseSpecialLine
( mobj_t*	thing,
  line_t*	line,
  int		side );

void
P_ShootSpecialLine
( mobj_t*	thing,
  line_t*	line );

void
P_CrossSpecialLine
( int		linenum,
  int		side,
  mobj_t*	thing );

void    P_PlayerInSpecialSector (player_t* player);

int
twoSided
( int		sector,
  int		line );

sector_t*
getSector
( int		currentSector,
  int		line,
  int		side );

side_t*
getSide
( int		currentSector,
  int		line,
  int		side );

fixed_t P_FindLowestFloorSurrounding(sector_t* sec);
fixed_t P_FindHighestFloorSurrounding(sector_t* sec);

fixed_t
P_FindNextHighestFloor
( sector_t*	sec,
  int		currentheight );

fixed_t P_FindLowestCeilingSurrounding(sector_t* sec);
fixed_t P_FindHighestCeilingSurrounding(sector_t* sec);

int
P_FindSectorFromLineTag
( line_t*	line,
  int		start );

int
P_FindMinSurroundingLight
( sector_t*	sector,
  int		max );

sector_t*
getNextSector
( line_t*	line,
  sector_t*	sec );


//
// SPECIAL
//
int EV_DoDonut(line_t* line);



//
// P_LIGHTS
//
typedef struct
{
    thinker_t	thinker;
    sector_t*	sector;
    int		count;
    int		maxlight;
    int		minlight;
    
} fireflicker_t;



typedef struct
{
    thinker_t	thinker;
    sector_t*	sector;
    int		count;
    int		maxlight;
    int		minlight;
    int		maxtime;
    int		mintime;
    
} lightflash_t;



typedef struct
{
    thinker_t	thinker;
    sector_t*	sector;
    int		count;
    int		minlight;
    int		maxlight;
    int		darktime;
    int		brighttime;
    
} strobe_t;




typedef struct
{
    thinker_t	thinker;
    sector_t*	sector;
    int		minlight;
    int		maxlight;
    int		direction;

} glow_t;


#define GLOWSPEED			8
#define STROBEBRIGHT		5
#define FASTDARK			15
#define SLOWDARK			35

void    P_SpawnFireFlicker (sector_t* sector);
void    T_LightFlash (lightflash_t* flash);
void    P_SpawnLightFlash (sector_t* sector);
void    T_StrobeFlash (strobe_t* flash);

void
P_SpawnStrobeFlash
( sector_t*	sector,
  int		fastOrSlow,
  int		inSync );

void    EV_StartLightStrobing(line_t* line);
void    EV_TurnTagLightsOff(line_t* line);

void
EV_LightTurnOn
( line_t*	line,
  int		bright );

void    T_Glow(glow_t* g);
void    P_SpawnGlowingLight(sector_t* sector);




//
// P_SWITCH
//
typedef struct
{
    char	name1[9];
    char	name2[9];
    short	episode;
    
} switchlist_t;


typedef enum
{
    top,
    middle,
    bottom

} bwhere_e;


typedef struct
{
    line_t*	line;
    bwhere_e	where;
    int		btexture;
    int		btimer;
    mobj_t*	soundorg;

} button_t;




 // max # of wall switches in a level
#define MAXSWITCHES		50

 // 4 players, 4 buttons each at once, max.
#define MAXBUTTONS		16

 // 1 second, in ticks. 
#define BUTTONTIME      35             

extern button_t	buttonlist[MAXBUTTONS]; 

void
P_ChangeSwitchTexture
( line_t*	line,
  int		useAgain );

void P_InitSwitchList(void);


//
// P_PLATS
//
typedef enum
{
    up,
    down,
    waiting,
    in_stasis

} plat_e;



typedef enum
{
    perpetualRaise,
    downWaitUpStay,
    raiseAndChange,
    raiseToNearestAndChange,
    blazeDWUS

} plattype_e;



typedef struct
{
    thinker_t	thinker;
    sector_t*	sector;
    fixed_t	speed;
    fixed_t	low;
    fixed_t	high;
    int		wait;
    int		count;
    plat_e	status;
    plat_e	oldstatus;
    boolean	crush;
    int		tag;
    plattype_e	type;
    
} plat_t;



#define PLATWAIT		3
#define PLATSPEED		FRACUNIT
#define MAXPLATS		30


extern plat_t*	activeplats[MAXPLATS];

void    T_PlatRaise(plat_t*	plat);

int
EV_DoPlat
( line_t*	line,
  plattype_e	type,
  int		amount );

void    P_AddActivePlat(plat_t* plat);
void    P_RemoveActivePlat(plat_t* plat);
void    EV_StopPlat(line_t* line);
void    P_ActivateInStasis(int tag);


//
// P_DOORS
//
typedef enum
{
    normal,
    close30ThenOpen,
    close,
    open,
    raiseIn5Mins,
    blazeRaise,
    blazeOpen,
    blazeClose

} vldoor_e;



typedef struct
{
    thinker_t	thinker;
    vldoor_e	type;
    sector_t*	sector;
    fixed_t	topheight;
    fixed_t	speed;

    // 1 = up, 0 = waiting at top, -1 = down
    int             direction;
    
    // tics to wait at the top
    int             topwait;
    // (keep in case a door going down is reset)
    // when it reaches 0, start going down
    int             topcountdown;
    
} vldoor_t;



#define VDOORSPEED		FRACUNIT*2
#define VDOORWAIT		150

void
EV_VerticalDoor
( line_t*	line,
  mobj_t*	thing );

int
EV_DoDoor
( line_t*	line,
  vldoor_e	type );

int
EV_DoLockedDoor
( line_t*	line,
  vldoor_e	type,
  mobj_t*	thing );

void    T_VerticalDoor (vldoor_t* door);
void    P_SpawnDoorCloseIn30 (sector_t* sec);

void
P_SpawnDoorRaiseIn5Mins
( sector_t*	sec,
  int		secnum );



#if 0 // UNUSED
//
//      Sliding doors...
//
typedef enum
{
    sd_opening,
    sd_waiting,
    sd_closing

} sd_e;



typedef enum
{
    sdt_openOnly,
    sdt_closeOnly,
    sdt_openAndClose

} sdt_e;




typedef struct
{
    thinker_t	thinker;
    sdt_e	type;
    line_t*	line;
    int		frame;
    int		whichDoorIndex;
    int		timer;
    sector_t*	frontsector;
    sector_t*	backsector;
    sd_e	 status;

} slidedoor_t;



typedef struct
{
    char	frontFrame1[9];
    char	frontFrame2[9];
    char	frontFrame3[9];
    char	frontFrame4[9];
    char	backFrame1[9];
    char	backFrame2[9];
    char	backFrame3[9];
    char	backFrame4[9];
    
} slidename_t;



typedef struct
{
    int             frontFrames[4];
    int             backFrames[4];

} slideframe_t;



// how many frames of animation
#define SNUMFRAMES		4

#define SDOORWAIT		35*3
#define SWAITTICS		4

// how many diff. types of anims
#define MAXSLIDEDOORS	5                            

void P_InitSlidingDoorFrames(void);

void
EV_SlidingDoor
( line_t*	line,
  mobj_t*	thing );
#endif



//
// P_CEILNG
//
typedef enum
{
    lowerToFloor,
    raiseToHighest,
    lowerAndCrush,
    crushAndRaise,
    fastCrushAndRaise,
    silentCrushAndRaise

} ceiling_e;



typedef struct
{
    thinker_t	thinker;
    ceiling_e	type;
    sector_t*	sector;
    fixed_t	bottomheight;
    fixed_t	topheight;
    fixed_t	speed;
    boolean	crush;

    // 1 = up, 0 = waiting, -1 = down
    int		direction;

    // ID
    int		tag;                   
    int		olddirection;
    
} ceiling_t;





#define CEILSPEED		FRACUNIT
#define CEILWAIT		150
#define MAXCEILINGS		30

extern ceiling_t*	activeceilings[MAXCEILINGS];

int
EV_DoCeiling
( line_t*	line,
  ceiling_e	type );

void    T_MoveCeiling (ceiling_t* ceiling);
void    P_AddActiveCeiling(ceiling_t* c);
void    P_RemoveActiveCeiling(ceiling_t* c);
int	EV_CeilingCrushStop(line_t* line);
void    P_ActivateInStasisCeiling(line_t* line);


//
// P_FLOOR
//
typedef enum
{
    // lower floor to highest surrounding floor
    lowerFloor,
    
    // lower floor to lowest surrounding floor
    lowerFloorToLowest,
    
    // lower floor to highest surrounding floor VERY FAST
    turboLower,
    
    // raise floor to lowest surrounding CEILING
    raiseFloor,
    
    // raise floor to next highest surrounding floor
    raiseFloorToNearest,

    // raise floor to shortest height texture around it
    raiseToTexture,
    
    // lower floor to lowest surrounding floor
    //  and change floorpic
    lowerAndChange,
  
    raiseFloor24,
    raiseFloor24AndChange,
    raiseFloorCrush,

     // raise to next highest floor, turbo-speed
    raiseFloorTurbo,       
    donutRaise,
    raiseFloor512
    
} floor_e;




typedef enum
{
    build8,	// slowly build by 8
    turbo16	// quickly build by 16
    
} stair_e;



typedef struct
{
    thinker_t	thinker;
    floor_e	type;
    boolean	crush;
    sector_t*	sector;
    int		direction;
    int		newspecial;
    short	texture;
    fixed_t	floordestheight;
    fixed_t	speed;

} floormove_t;



#define FLOORSPEED		FRACUNIT

typedef enum
{
    ok,
    crushed,
    pastdest
    
} result_e;

result_e
T_MovePlane
( sector_t*	sector,
  fixed_t	speed,
  fixed_t	dest,
  boolean	crush,
  int		floorOrCeiling,
  int		direction );

int
EV_BuildStairs
( line_t*	line,
  stair_e	type );

int
EV_DoFloor
( line_t*	line,
  floor_e	floortype );

void T_MoveFloor( floormove_t* floor);

//
// P_TELEPT
//
int
EV_Teleport
( line_t*	line,
  int		side,
  mobj_t*	thing );

#endif
//-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美不卡一区二区三区| 亚洲第一在线综合网站| 亚洲一区二区三区三| 在线观看成人小视频| 久久久国产综合精品女国产盗摄| 一区二区三区视频在线看| 国产酒店精品激情| 69堂精品视频| 亚洲电影在线免费观看| 99久久99精品久久久久久| 久久伊人蜜桃av一区二区| 天堂一区二区在线| 欧美性xxxxxxxx| 亚洲免费观看高清在线观看| 风间由美中文字幕在线看视频国产欧美 | 亚洲精品免费播放| 国产传媒日韩欧美成人| 久久亚洲免费视频| 久久国产精品色婷婷| 欧美美女bb生活片| 夜色激情一区二区| 欧洲精品一区二区| 亚洲国产日产av| 欧美日韩国产a| 亚洲成av人片在线| 欧美一区日韩一区| 免费一级片91| 日韩久久久久久| 精品影视av免费| 久久天堂av综合合色蜜桃网| 精品综合免费视频观看| 久久亚洲精品国产精品紫薇| 国内精品第一页| 国产亚洲短视频| 成人免费高清在线| 亚洲欧洲国产专区| 91成人国产精品| 亚洲成精国产精品女| 欧美一级爆毛片| 国产精品一区专区| 中文字幕中文字幕一区二区| 色综合天天综合网天天看片| 亚洲自拍偷拍九九九| 91女人视频在线观看| 亚洲免费观看高清在线观看| 色吧成人激情小说| 亚洲va在线va天堂| 日韩午夜电影av| 国产麻豆日韩欧美久久| 中文字幕在线观看不卡| 色又黄又爽网站www久久| 亚洲第一主播视频| 久久伊人中文字幕| 一本大道av伊人久久综合| 污片在线观看一区二区| 2023国产精品自拍| 99re这里只有精品视频首页| 午夜天堂影视香蕉久久| 精品久久久影院| 色婷婷亚洲精品| 久久www免费人成看片高清| 中文成人综合网| 欧美午夜宅男影院| 国产精品亚洲а∨天堂免在线| 国产麻豆精品视频| 亚洲摸摸操操av| 91麻豆精品国产综合久久久久久| 国产在线视频一区二区三区| 亚洲另类色综合网站| 欧美精品一区二区不卡| 99精品1区2区| 精品亚洲欧美一区| 亚洲精品久久7777| 久久久久久久久久久久久女国产乱 | 国产精品久久久久久妇女6080| 日本精品一级二级| 激情五月激情综合网| 亚洲精品视频免费看| 久久久久久久久久久黄色| 欧美日韩高清一区二区| av激情综合网| 免费成人你懂的| 亚洲国产毛片aaaaa无费看| 欧美韩国日本一区| 日韩欧美在线不卡| 欧美视频一区二区在线观看| 丰满白嫩尤物一区二区| 人人爽香蕉精品| 亚洲午夜一区二区三区| 国产精品日日摸夜夜摸av| 欧美zozozo| 欧美老肥妇做.爰bbww| 色综合咪咪久久| 豆国产96在线|亚洲| 经典三级视频一区| 免费观看久久久4p| 日韩电影一二三区| 亚洲成人资源网| 亚洲国产欧美在线| 一级女性全黄久久生活片免费| 国产日本欧洲亚洲| 久久免费的精品国产v∧| 日韩精品一区在线观看| 欧美疯狂做受xxxx富婆| 欧美色综合网站| 欧美亚洲国产一卡| 色8久久精品久久久久久蜜| 波多野结衣中文一区| 粉嫩av一区二区三区粉嫩| 国产精品资源在线| 国产成人av电影在线| 国产成人av影院| 国产电影精品久久禁18| 成人一区二区视频| jlzzjlzz亚洲日本少妇| 99久久99久久久精品齐齐| 色一情一乱一乱一91av| 在线观看国产91| 欧美日本一区二区在线观看| 欧美蜜桃一区二区三区| 欧美一区二区精品在线| 欧美精品一区二区久久久| 国产色产综合产在线视频| 国产日韩欧美不卡在线| 中文字幕永久在线不卡| 亚洲视频免费在线| 亚洲综合视频网| 日韩精品一二区| 国内外成人在线视频| 国产福利91精品一区| 91丨porny丨蝌蚪视频| 欧美在线一区二区三区| 日韩欧美一级二级三级久久久| 精品成人一区二区| 国产精品第一页第二页第三页| 亚洲美女偷拍久久| 日日欢夜夜爽一区| 国产美女久久久久| 波多野结衣的一区二区三区| 欧美三级乱人伦电影| 337p日本欧洲亚洲大胆精品 | 欧美成人a∨高清免费观看| 久久久国产一区二区三区四区小说| 中文字幕一区二区三区在线播放| 亚洲国产综合人成综合网站| 美女一区二区三区| av在线不卡电影| 4438x亚洲最大成人网| 久久精品一二三| 亚洲午夜在线电影| 国产v综合v亚洲欧| 欧美日韩一区二区在线视频| 久久久久九九视频| 亚洲gay无套男同| 国产xxx精品视频大全| 欧美日韩精品欧美日韩精品一| 精品人伦一区二区色婷婷| 亚洲日本在线视频观看| 久久99精品一区二区三区三区| 91在线你懂得| 久久精品一二三| 日韩激情在线观看| 91在线播放网址| xfplay精品久久| 午夜激情久久久| 成人黄页在线观看| 日韩欧美国产小视频| 亚洲一区二区五区| fc2成人免费人成在线观看播放| 日韩一区二区三免费高清| 亚洲欧美欧美一区二区三区| 黄色精品一二区| 日韩一区二区在线看片| 一区二区三区鲁丝不卡| 99久久国产综合精品色伊| 26uuu久久综合| 蜜臀a∨国产成人精品| 欧美影院一区二区三区| 国产精品成人免费在线| 国产99精品国产| 26uuu另类欧美亚洲曰本| 另类小说一区二区三区| 欧美日韩dvd在线观看| 亚洲狠狠丁香婷婷综合久久久| 国产91精品一区二区麻豆亚洲| 精品国产凹凸成av人网站| 日韩av一区二区在线影视| 精品视频资源站| 一个色综合网站| 91成人免费在线| 亚洲综合男人的天堂| 在线观看av不卡| 亚洲黄一区二区三区| 在线免费观看日韩欧美| 一区二区三区精品| 色综合久久久网| 亚洲成a人在线观看| 欧美日韩成人综合在线一区二区| 亚洲永久精品大片| 欧美日韩免费观看一区三区|