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

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

?? p_setup.c

?? 游戲類程序源代碼---WinDoom 3D源程序.zip
?? C
?? 第 1 頁 / 共 2 頁
字號:
// 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.
//
// $Log:$
//
// DESCRIPTION:
//	Do all the WAD I/O, get map description,
//	set up initial state and misc. LUTs.
//
//-----------------------------------------------------------------------------

static const char
rcsid[] = "$Id: p_setup.c,v 1.5 1997/02/03 22:45:12 b1 Exp $";


#include <math.h>

#include "z_zone.h"

#include "m_swap.h"
#include "m_bbox.h"

#include "g_game.h"

#include "i_system.h"
#include "w_wad.h"

#include "doomdef.h"
#include "p_local.h"

#include "s_sound.h"

#include "doomstat.h"

char MsgText[256];
void WriteDebug(char *);

void	P_SpawnMapThing (mapthing_t*	mthing);

//
// MAP related Lookup tables.
// Store VERTEXES, LINEDEFS, SIDEDEFS, etc.
//
int		numvertexes;
vertex_t*	vertexes;

int		numsegs;
seg_t*		segs;

int		numsectors;
sector_t*	sectors;

int		numsubsectors;
subsector_t*	subsectors;

int		numnodes;
node_t*		nodes;

int		numlines;
line_t*		lines;

int		numsides;
side_t*		sides;


// BLOCKMAP
// Created from axis aligned bounding box
// of the map, a rectangular array of
// blocks of size ...
// Used to speed up collision detection
// by spatial subdivision in 2D.
//
// Blockmap size.
int		bmapwidth;
int		bmapheight;	// size in mapblocks
short*		blockmap;	// int for larger maps
// offsets in blockmap are from here
short*		blockmaplump;		
// origin of block map
fixed_t		bmaporgx;
fixed_t		bmaporgy;
// for thing chains
mobj_t**	blocklinks;		


// REJECT
// For fast sight rejection.
// Speeds up enemy AI by skipping detailed
//  LineOf Sight calculation.
// Without special effect, this could be
//  used as a PVS lookup as well.
//
byte*		rejectmatrix;


// Maintain single and multi player starting spots.
#define MAX_DEATHMATCH_STARTS	10

mapthing_t	deathmatchstarts[MAX_DEATHMATCH_STARTS];
mapthing_t*	deathmatch_p;
mapthing_t	playerstarts[MAXPLAYERS];





//
// P_LoadVertexes
//
void P_LoadVertexes (int lump)
{
    byte*		data;
    int			i;
    mapvertex_t*	ml;
    vertex_t*		li;

    // Determine number of lumps:
    //  total lump length / vertex record length.
    numvertexes = W_LumpLength (lump) / sizeof(mapvertex_t);

    // Allocate zone memory for buffer.
    vertexes = Z_Malloc (numvertexes*sizeof(vertex_t),PU_LEVEL,0);	

    // Load data into cache.
    data = W_CacheLumpNum (lump,PU_STATIC);
	
    ml = (mapvertex_t *)data;
    li = vertexes;

    // Copy and convert vertex coordinates,
    // internal representation as fixed.
    for (i=0 ; i<numvertexes ; i++, li++, ml++)
    {
	li->x = SHORT(ml->x)<<FRACBITS;
	li->y = SHORT(ml->y)<<FRACBITS;
    }

    // Free buffer memory.
    Z_Free (data);
}



//
// P_LoadSegs
//
void P_LoadSegs (int lump)
{
    byte*		data;
    int			i;
    mapseg_t*		ml;
    seg_t*		li;
    line_t*		ldef;
    int			linedef;
    int			side;
	
    numsegs = W_LumpLength (lump) / sizeof(mapseg_t);
    segs = Z_Malloc (numsegs*sizeof(seg_t),PU_LEVEL,0);	
    memset (segs, 0, numsegs*sizeof(seg_t));
    data = W_CacheLumpNum (lump,PU_STATIC);
	
    ml = (mapseg_t *)data;
    li = segs;
    for (i=0 ; i<numsegs ; i++, li++, ml++)
    {
	li->v1 = &vertexes[SHORT(ml->v1)];
	li->v2 = &vertexes[SHORT(ml->v2)];
					
	li->angle = (SHORT(ml->angle))<<16;
	li->offset = (SHORT(ml->offset))<<16;
	linedef = SHORT(ml->linedef);
	ldef = &lines[linedef];
	li->linedef = ldef;
	side = SHORT(ml->side);
	li->sidedef = &sides[ldef->sidenum[side]];
	li->frontsector = sides[ldef->sidenum[side]].sector;
	if (ldef-> flags & ML_TWOSIDED)
	    li->backsector = sides[ldef->sidenum[side^1]].sector;
	else
	    li->backsector = 0;
    }
	
    Z_Free (data);
}


//
// P_LoadSubsectors
//
void P_LoadSubsectors (int lump)
{
    byte*		data;
    int			i;
    mapsubsector_t*	ms;
    subsector_t*	ss;
	
    numsubsectors = W_LumpLength (lump) / sizeof(mapsubsector_t);
    subsectors = Z_Malloc (numsubsectors*sizeof(subsector_t),PU_LEVEL,0);	
    data = W_CacheLumpNum (lump,PU_STATIC);
	
    ms = (mapsubsector_t *)data;
    memset (subsectors,0, numsubsectors*sizeof(subsector_t));
    ss = subsectors;
    
    for (i=0 ; i<numsubsectors ; i++, ss++, ms++)
    {
	ss->numlines = SHORT(ms->numsegs);
	ss->firstline = SHORT(ms->firstseg);
    }
	
    Z_Free (data);
}



//
// P_LoadSectors
//
void P_LoadSectors (int lump)
{
    byte*		data;
    int			i;
    mapsector_t*	ms;
    sector_t*		ss;
	
    numsectors = W_LumpLength (lump) / sizeof(mapsector_t);
    sectors = Z_Malloc (numsectors*sizeof(sector_t),PU_LEVEL,0);	
    memset (sectors, 0, numsectors*sizeof(sector_t));
    data = W_CacheLumpNum (lump,PU_STATIC);
	
    ms = (mapsector_t *)data;
    ss = sectors;
    for (i=0 ; i<numsectors ; i++, ss++, ms++)
    {
	ss->floorheight = SHORT(ms->floorheight)<<FRACBITS;
	ss->ceilingheight = SHORT(ms->ceilingheight)<<FRACBITS;
	ss->floorpic = R_FlatNumForName(ms->floorpic);
	ss->ceilingpic = R_FlatNumForName(ms->ceilingpic);
	ss->lightlevel = SHORT(ms->lightlevel);
	ss->special = SHORT(ms->special);
	ss->tag = SHORT(ms->tag);
	ss->thinglist = NULL;
    }
	
    Z_Free (data);
}


//
// P_LoadNodes
//
void P_LoadNodes (int lump)
{
    byte*	data;
    int		i;
    int		j;
    int		k;
    mapnode_t*	mn;
    node_t*	no;
	
    numnodes = W_LumpLength (lump) / sizeof(mapnode_t);
    nodes = Z_Malloc (numnodes*sizeof(node_t),PU_LEVEL,0);	
    data = W_CacheLumpNum (lump,PU_STATIC);
	
    mn = (mapnode_t *)data;
    no = nodes;
    
    for (i=0 ; i<numnodes ; i++, no++, mn++)
    {
	no->x = SHORT(mn->x)<<FRACBITS;
	no->y = SHORT(mn->y)<<FRACBITS;
	no->dx = SHORT(mn->dx)<<FRACBITS;
	no->dy = SHORT(mn->dy)<<FRACBITS;
	for (j=0 ; j<2 ; j++)
	{
	    no->children[j] = SHORT(mn->children[j]);
	    for (k=0 ; k<4 ; k++)
		no->bbox[j][k] = SHORT(mn->bbox[j][k])<<FRACBITS;
	}
    }
	
    Z_Free (data);
}


//
// P_LoadThings
//
void P_LoadThings (int lump)
   {
    byte*		data;
    int			i;
    mapthing_t*		mt;
    int			numthings;
    boolean		spawn;

    data = W_CacheLumpNum (lump,PU_STATIC);
    numthings = W_LumpLength (lump) / sizeof(mapthing_t);
	
    mt = (mapthing_t *)data;
    for (i=0 ; i<numthings ; i++, mt++)
       {
        spawn = true;

        // Do not spawn cool, new monsters if !commercial
        if ( gamemode != commercial)
           {
            switch(mt->type)
               {
                case 68:	// Arachnotron
                case 64:	// Archvile
                case 88:	// Boss Brain
                case 89:	// Boss Shooter
                case 69:	// Hell Knight
                case 67:	// Mancubus
                case 71:	// Pain Elemental
                case 65:	// Former Human Commando
                case 66:	// Revenant
                case 84:	// Wolf SS
                     spawn = false;
                     break;
               }
           }
        if (spawn == false)
            break;

        // Do spawn all other stuff. 
        mt->x = SHORT(mt->x);
        mt->y = SHORT(mt->y);
        mt->angle = SHORT(mt->angle);
        mt->type = SHORT(mt->type);
        mt->options = SHORT(mt->options);
	
        P_SpawnMapThing (mt);
       }
	
    Z_Free (data);
   }


//
// P_LoadLineDefs
// Also counts secret lines for intermissions.
//

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品一品道一区| 久久精品免费在线观看| 91成人国产精品| 91精品福利视频| 91麻豆国产精品久久| 色综合久久中文综合久久97| 99久久99久久免费精品蜜臀| 91香蕉视频黄| 欧美三级日韩在线| 日韩一区二区精品| 日韩精品在线一区二区| 欧美v国产在线一区二区三区| 欧美成人午夜电影| 国产校园另类小说区| 国产精品国产精品国产专区不片| 18欧美乱大交hd1984| 亚洲在线视频免费观看| 蜜臀久久99精品久久久画质超高清 | 国产一区二区免费视频| 国产精品主播直播| 色久优优欧美色久优优| 欧美日韩综合不卡| 精品国产百合女同互慰| 国产精品国产三级国产有无不卡 | 亚洲欧美在线高清| 午夜视频一区二区| 国产成人精品影视| 色88888久久久久久影院野外| 欧美精品黑人性xxxx| 精品国精品国产尤物美女| 中文天堂在线一区| 丝袜国产日韩另类美女| 99热在这里有精品免费| 538prom精品视频线放| 国产精品久久久久9999吃药| 亚洲一二三区不卡| 国产精品1区二区.| 欧美日本一区二区在线观看| 国产网红主播福利一区二区| 亚洲成人久久影院| 粉嫩绯色av一区二区在线观看| 欧美图区在线视频| 国产精品三级在线观看| 免费观看在线色综合| 91麻豆高清视频| 精品欧美一区二区在线观看| 亚洲区小说区图片区qvod| 国产在线播放一区| 欧美人成免费网站| 亚洲欧美偷拍另类a∨色屁股| 精品中文字幕一区二区| 欧美亚洲自拍偷拍| 中文字幕一区二区三区视频| 韩国三级在线一区| 在线不卡一区二区| 一区二区三区欧美激情| 成人伦理片在线| www激情久久| 热久久国产精品| 欧美日韩免费电影| 亚洲色图制服丝袜| 岛国av在线一区| 国产午夜精品在线观看| 久久成人久久爱| 欧美一级国产精品| 日韩福利视频网| 欧美精品精品一区| 日本最新不卡在线| 欧美一级一级性生活免费录像| 一区二区日韩av| 在线观看91精品国产入口| 亚洲精品videosex极品| 在线观看欧美日本| 亚洲大型综合色站| 欧美日韩国产成人在线91| 香港成人在线视频| 在线播放中文一区| 蜜臀av一级做a爰片久久| 在线播放91灌醉迷j高跟美女| 午夜精品一区二区三区免费视频 | 国产精品视频免费| av一本久道久久综合久久鬼色| 中文字幕第一区| 99久久婷婷国产精品综合| 国产精品色哟哟网站| 91免费在线视频观看| 亚洲成精国产精品女| 欧美日韩电影一区| 国产综合成人久久大片91| 久久精品一区二区三区不卡| 国产福利视频一区二区三区| 亚洲国产激情av| 日本韩国一区二区三区| 午夜精品aaa| 久久亚洲精精品中文字幕早川悠里| 国产在线一区二区| 中文字幕日韩av资源站| 91福利视频久久久久| 亚洲成人免费av| 精品国产a毛片| 99在线精品免费| 午夜视频一区二区三区| 久久久影院官网| 在线观看国产精品网站| 久久er99热精品一区二区| 国产精品全国免费观看高清| 91黄色免费观看| 国产成人啪午夜精品网站男同| 亚洲蜜臀av乱码久久精品蜜桃| 欧美久久久久免费| 成人免费电影视频| 日韩电影在线一区二区| 日本一区二区高清| 日韩欧美国产小视频| 91在线观看成人| 尤物av一区二区| 国产精品乱码妇女bbbb| 91在线无精精品入口| 亚洲成人av免费| 国产精品国产三级国产aⅴ中文| 欧美日韩精品欧美日韩精品 | 亚洲男人天堂av网| 亚洲精品在线免费观看视频| 色偷偷成人一区二区三区91| 狠狠狠色丁香婷婷综合久久五月| 亚洲一区二区精品久久av| 欧美国产精品中文字幕| 欧美大片一区二区| 欧美在线免费观看亚洲| 国产精品1区2区| 免费看欧美女人艹b| 亚洲影视在线观看| 亚洲欧洲日韩女同| 国产欧美日本一区二区三区| 欧美日韩国产综合视频在线观看| 97se亚洲国产综合自在线观| 国产精品18久久久久久vr| 全部av―极品视觉盛宴亚洲| 亚洲制服欧美中文字幕中文字幕| 中文字幕一区二区日韩精品绯色| 久久综合久久鬼色| 欧美xxxxx牲另类人与| 欧美一区二区观看视频| 91精品在线一区二区| 欧美日韩不卡一区| 欧美喷潮久久久xxxxx| 在线亚洲高清视频| 色婷婷激情久久| 欧美怡红院视频| 欧美日韩精品一区二区三区蜜桃 | 国内精品伊人久久久久av一坑| 琪琪一区二区三区| 视频一区视频二区中文| 日日夜夜一区二区| 日本欧美久久久久免费播放网| 日本视频免费一区| 久久成人综合网| 国产真实精品久久二三区| 国产美女娇喘av呻吟久久 | 亚洲欧洲99久久| 亚洲精品视频在线看| 亚洲天堂免费看| 一区二区三区四区视频精品免费 | 国产欧美日韩三级| 国产精品视频免费看| 亚洲男同1069视频| 午夜在线成人av| 国产精品自拍av| 色婷婷综合久久| 777a∨成人精品桃花网| 欧美成人精品1314www| 国产欧美日韩精品一区| 一区二区三区资源| 日日噜噜夜夜狠狠视频欧美人| 久久精品国产一区二区三| 国产xxx精品视频大全| av一二三不卡影片| 69堂亚洲精品首页| 久久久精品国产免费观看同学| 中文字幕一区二区三| 丝袜诱惑亚洲看片| 高清国产一区二区三区| 在线观看一区不卡| 久久伊人中文字幕| 亚洲一区二区五区| 国产伦精品一区二区三区免费| 9久草视频在线视频精品| 欧美另类久久久品| 国产精品美女www爽爽爽| 亚洲高清不卡在线观看| 国产一区二区三区香蕉| 99麻豆久久久国产精品免费优播| 欧美性一级生活| 中文字幕成人网| 久久99精品国产91久久来源| 色综合中文综合网| 奇米四色…亚洲| 91麻豆蜜桃一区二区三区| 日韩欧美色综合| 亚洲一区二区三区自拍|