亚洲欧美第一页_禁久久精品乱码_粉嫩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蝌蚪porny九色| 91美女福利视频| 色综合久久久网| 一本高清dvd不卡在线观看 | 激情五月婷婷综合| 蜜臀国产一区二区三区在线播放| 日韩影院精彩在线| 精品综合免费视频观看| 久久99国产精品成人| 国产在线精品免费| 成人黄色777网| 色综合中文综合网| 色婷婷av一区二区三区软件| 99久久久无码国产精品| 在线日韩av片| 日韩欧美一级片| 久久老女人爱爱| 亚洲精品伦理在线| 日一区二区三区| 国产一区视频在线看| 91一区在线观看| 日韩一区二区三区免费看| 亚洲精品在线三区| 亚洲日本一区二区| 免费看日韩精品| 国产成人高清视频| 欧美视频一二三区| 国产亚洲一区字幕| 亚洲午夜精品17c| 国产一区在线看| 欧美午夜宅男影院| 国产精品丝袜91| 水蜜桃久久夜色精品一区的特点| 国内精品久久久久影院薰衣草| 暴力调教一区二区三区| 91精品在线观看入口| 中文字幕 久热精品 视频在线| 亚洲综合免费观看高清在线观看| 国内久久精品视频| 在线精品观看国产| 国产日产欧美一区二区三区| 亚洲国产精品人人做人人爽| 国产成人免费网站| 欧美一区二区视频在线观看2022| 亚洲欧美视频一区| 激情综合色综合久久综合| 欧美日韩国产高清一区二区三区 | 777a∨成人精品桃花网| 国产精品你懂的在线| 麻豆精品在线视频| 欧美综合一区二区| 国产精品国产三级国产有无不卡| 蜜桃久久久久久| 欧美性受xxxx黑人xyx性爽| 国产欧美日韩不卡免费| 裸体一区二区三区| 欧美日韩免费高清一区色橹橹| 亚洲视频在线一区观看| 粉嫩绯色av一区二区在线观看| 精品久久久久av影院| 日韩va欧美va亚洲va久久| 欧美三级韩国三级日本一级| 亚洲在线视频免费观看| 色哟哟一区二区在线观看| 亚洲天天做日日做天天谢日日欢 | 亚洲天堂成人网| 成人综合婷婷国产精品久久| 国产亚洲自拍一区| 国产99精品视频| 国产午夜久久久久| 国产69精品久久777的优势| 久久久久亚洲综合| 国产一区不卡在线| 欧美国产精品劲爆| 不卡视频在线看| 国产精品久久久久精k8| 91天堂素人约啪| 亚洲精品写真福利| 欧美日韩一区三区| 青青草原综合久久大伊人精品 | 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 久久精品国产亚洲高清剧情介绍 | 韩国成人精品a∨在线观看| 日韩亚洲国产中文字幕欧美| 美女视频网站久久| 久久久久久久久久久99999| 豆国产96在线|亚洲| 国产精品嫩草影院av蜜臀| 在线免费一区三区| 日本不卡的三区四区五区| 久久综合色之久久综合| 国产99久久久国产精品| 亚洲主播在线播放| 欧美白人最猛性xxxxx69交| 国产二区国产一区在线观看| 亚洲美女区一区| 欧美一级一级性生活免费录像| 国产一区二区三区免费| 日韩理论在线观看| 91精品国产综合久久精品图片| 国产尤物一区二区| 亚洲在线中文字幕| 久久综合九色欧美综合狠狠| 91论坛在线播放| 国内外成人在线视频| 夜夜嗨av一区二区三区网页| 欧美变态tickling挠脚心| 99re这里只有精品首页| 蜜臀a∨国产成人精品| 国产精品国产三级国产普通话蜜臀 | 91超碰这里只有精品国产| 国产精品亚洲专一区二区三区| 一区二区三区在线播放| 久久蜜桃av一区精品变态类天堂| 色婷婷国产精品| 国产成人在线色| 日韩激情av在线| 国产精品九色蝌蚪自拍| 日韩女优毛片在线| 在线观看日韩毛片| k8久久久一区二区三区| 裸体歌舞表演一区二区| 亚洲国产精品久久一线不卡| 中文字幕一区二区5566日韩| 26uuu成人网一区二区三区| 欧美色图片你懂的| 9i在线看片成人免费| 国精产品一区一区三区mba视频| 亚洲午夜精品17c| 亚洲人成在线观看一区二区| 国产欧美一区视频| 精品99999| 欧美成人video| 777亚洲妇女| 精品视频在线视频| 色哟哟国产精品| 色悠悠亚洲一区二区| 99久久国产综合色|国产精品| 国产999精品久久久久久| 国产一区在线观看视频| 精品一二三四区| 伦理电影国产精品| 久久国产精品免费| 麻豆视频观看网址久久| 免费观看91视频大全| 日韩av网站免费在线| 五月天欧美精品| 性做久久久久久| 天天影视涩香欲综合网| 奇米四色…亚洲| 免费成人av在线播放| 久久精品国产**网站演员| 麻豆高清免费国产一区| 另类成人小视频在线| 激情综合网天天干| 国产精品一线二线三线精华| 成人午夜免费av| a4yy欧美一区二区三区| 欧美三级中文字幕在线观看| 欧美日韩一卡二卡三卡 | 日韩一级视频免费观看在线| 91精品国产一区二区人妖| 日韩欧美在线网站| 久久免费的精品国产v∧| 国产精品成人在线观看| 一区二区三区日韩在线观看| 五月激情综合色| 国产一区二区三区蝌蚪| 波多野结衣中文一区| 在线观看av不卡| 日韩一区二区麻豆国产| 久久久精品日韩欧美| 一区二区三区四区亚洲| 美国十次综合导航| 成人免费视频一区| 91福利精品视频| 日韩一区二区三区四区五区六区| 日本一区二区免费在线观看视频| 日韩美女视频一区| 婷婷六月综合网| 国产91综合一区在线观看| 色狠狠色狠狠综合| 精品久久免费看| 一区二区三区在线免费观看| 韩国精品免费视频| 在线精品视频免费观看| 久久精品欧美日韩精品| 亚洲一卡二卡三卡四卡五卡| 九九视频精品免费| 欧美自拍偷拍午夜视频| 久久理论电影网| 日韩av电影免费观看高清完整版在线观看| 国产酒店精品激情| 91精品国产综合久久久久久漫画 | 亚洲国产日韩a在线播放性色| 紧缚奴在线一区二区三区|