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

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

?? p_setup.c

?? 游戲類程序源代碼---WinDoom 3D源程序.zip
?? C
?? 第 1 頁 / 共 2 頁
字號:
void P_LoadLineDefs (int lump)
{
    byte*		data;
    int			i;
    maplinedef_t*	mld;
    line_t*		ld;
    vertex_t*		v1;
    vertex_t*		v2;
	
    numlines = W_LumpLength (lump) / sizeof(maplinedef_t);
    lines = Z_Malloc (numlines*sizeof(line_t),PU_LEVEL,0);	
    memset (lines, 0, numlines*sizeof(line_t));
    data = W_CacheLumpNum (lump,PU_STATIC);
	
    mld = (maplinedef_t *)data;
    ld = lines;
    for (i=0 ; i<numlines ; i++, mld++, ld++)
    {
	ld->flags = SHORT(mld->flags);
	ld->special = SHORT(mld->special);
	ld->tag = SHORT(mld->tag);
	v1 = ld->v1 = &vertexes[SHORT(mld->v1)];
	v2 = ld->v2 = &vertexes[SHORT(mld->v2)];
	ld->dx = v2->x - v1->x;
	ld->dy = v2->y - v1->y;
	
	if (!ld->dx)
	    ld->slopetype = ST_VERTICAL;
	else if (!ld->dy)
	    ld->slopetype = ST_HORIZONTAL;
	else
	{
	    if (FixedDiv (ld->dy , ld->dx) > 0)
		ld->slopetype = ST_POSITIVE;
	    else
		ld->slopetype = ST_NEGATIVE;
	}
		
	if (v1->x < v2->x)
	{
	    ld->bbox[BOXLEFT] = v1->x;
	    ld->bbox[BOXRIGHT] = v2->x;
	}
	else
	{
	    ld->bbox[BOXLEFT] = v2->x;
	    ld->bbox[BOXRIGHT] = v1->x;
	}

	if (v1->y < v2->y)
	{
	    ld->bbox[BOXBOTTOM] = v1->y;
	    ld->bbox[BOXTOP] = v2->y;
	}
	else
	{
	    ld->bbox[BOXBOTTOM] = v2->y;
	    ld->bbox[BOXTOP] = v1->y;
	}

	ld->sidenum[0] = SHORT(mld->sidenum[0]);
	ld->sidenum[1] = SHORT(mld->sidenum[1]);

	if (ld->sidenum[0] != -1)
	    ld->frontsector = sides[ld->sidenum[0]].sector;
	else
	    ld->frontsector = 0;

	if (ld->sidenum[1] != -1)
	    ld->backsector = sides[ld->sidenum[1]].sector;
	else
	    ld->backsector = 0;
    }
	
    Z_Free (data);
}

//
// P_LoadSideDefs
//
void P_LoadSideDefs (int lump)
{
    byte*		data;
    int			i;
    mapsidedef_t*	msd;
    side_t*		sd;
	
    numsides = W_LumpLength (lump) / sizeof(mapsidedef_t);
    sides = Z_Malloc (numsides*sizeof(side_t),PU_LEVEL,0);	
    memset (sides, 0, numsides*sizeof(side_t));
    data = W_CacheLumpNum (lump,PU_STATIC);
	
    msd = (mapsidedef_t *)data;
    sd = sides;
    for (i=0 ; i<numsides ; i++, msd++, sd++)
    {
	sd->textureoffset = SHORT(msd->textureoffset)<<FRACBITS;
	sd->rowoffset = SHORT(msd->rowoffset)<<FRACBITS;
	sd->toptexture = R_TextureNumForName(msd->toptexture);
	sd->bottomtexture = R_TextureNumForName(msd->bottomtexture);
	sd->midtexture = R_TextureNumForName(msd->midtexture);
	sd->sector = &sectors[SHORT(msd->sector)];
    }

    Z_Free (data);
}


//
// P_LoadBlockMap
//
void P_LoadBlockMap (int lump)
{
    int		i;
    int		count;
	
    blockmaplump = W_CacheLumpNum (lump,PU_LEVEL);
    blockmap = blockmaplump+4;
    count = W_LumpLength (lump)/2;

    for (i=0 ; i<count ; i++)
       blockmaplump[i] = SHORT(blockmaplump[i]);

    bmaporgx = blockmaplump[0]<<FRACBITS;
    bmaporgy = blockmaplump[1]<<FRACBITS;
    bmapwidth = blockmaplump[2];
    bmapheight = blockmaplump[3];
	
    // clear out mobj chains
    count = sizeof(*blocklinks)* bmapwidth*bmapheight;
    blocklinks = Z_Malloc (count,PU_LEVEL, 0);
    memset (blocklinks, 0, count);
}



//
// P_GroupLines
// Builds sector line lists and subsector sector numbers.
// Finds block bounding boxes for sectors.
//
void P_GroupLines (void)
{
    line_t**		linebuffer;
    int			i;
    int			j;
    int			total;
    line_t*		li;
    sector_t*		sector;
    subsector_t*	ss;
    seg_t*		seg;
    fixed_t		bbox[4];
    int			block;
	
    // look up sector number for each subsector
    ss = subsectors;
    for (i=0 ; i<numsubsectors ; i++, ss++)
    {
	seg = &segs[ss->firstline];
	ss->sector = seg->sidedef->sector;
    }

    // count number of lines in each sector
    li = lines;
    total = 0;
    for (i=0 ; i<numlines ; i++, li++)
    {
	total++;
	li->frontsector->linecount++;

	if (li->backsector && li->backsector != li->frontsector)
	{
	    li->backsector->linecount++;
	    total++;
	}
    }
	
    // build line tables for each sector	
    linebuffer = Z_Malloc (total*4, PU_LEVEL, 0);
    sector = sectors;
    for (i=0 ; i<numsectors ; i++, sector++)
    {
	M_ClearBox (bbox);
	sector->lines = linebuffer;
	li = lines;
	for (j=0 ; j<numlines ; j++, li++)
	{
	    if (li->frontsector == sector || li->backsector == sector)
	    {
		*linebuffer++ = li;
		M_AddToBox (bbox, li->v1->x, li->v1->y);
		M_AddToBox (bbox, li->v2->x, li->v2->y);
	    }
	}
	if (linebuffer - sector->lines != sector->linecount)
	    I_Error ("P_GroupLines: miscounted");
			
	// set the degenmobj_t to the middle of the bounding box
	sector->soundorg.x = (bbox[BOXRIGHT]+bbox[BOXLEFT])/2;
	sector->soundorg.y = (bbox[BOXTOP]+bbox[BOXBOTTOM])/2;
		
	// adjust bounding box to map blocks
	block = (bbox[BOXTOP]-bmaporgy+MAXRADIUS)>>MAPBLOCKSHIFT;
	block = block >= bmapheight ? bmapheight-1 : block;
	sector->blockbox[BOXTOP]=block;

	block = (bbox[BOXBOTTOM]-bmaporgy-MAXRADIUS)>>MAPBLOCKSHIFT;
	block = block < 0 ? 0 : block;
	sector->blockbox[BOXBOTTOM]=block;

	block = (bbox[BOXRIGHT]-bmaporgx+MAXRADIUS)>>MAPBLOCKSHIFT;
	block = block >= bmapwidth ? bmapwidth-1 : block;
	sector->blockbox[BOXRIGHT]=block;

	block = (bbox[BOXLEFT]-bmaporgx-MAXRADIUS)>>MAPBLOCKSHIFT;
	block = block < 0 ? 0 : block;
	sector->blockbox[BOXLEFT]=block;
    }
	
}

void WriteDebug(char *);

//
// P_SetupLevel
//
void
P_SetupLevel
( int		episode,
  int		map,
  int		playermask,
  skill_t	skill)
{
    int		i;
    char	lumpname[9];
    int		lumpnum;
	
    totalkills = totalitems = totalsecret = wminfo.maxfrags = 0;
    wminfo.partime = 180;
    for (i=0 ; i<MAXPLAYERS ; i++)
    {
	players[i].killcount = players[i].secretcount 
	    = players[i].itemcount = 0;
    }

    // Initial height of PointOfView
    // will be set by player think.
    players[consoleplayer].viewz = 1; 

    // Make sure all sounds are stopped before Z_FreeTags.
    S_Start ();			

    
#if 0 // UNUSED
    if (debugfile)
    {
	Z_FreeTags (PU_LEVEL, MAXINT);
	Z_FileDumpHeap (debugfile);
    }
    else
#endif
       {
	Z_FreeTags (PU_LEVEL, PU_PURGELEVEL-1);
       }


    // UNUSED W_Profile ();
    P_InitThinkers ();

    // if working with a devlopment map, reload it
    W_Reload ();			
	   
    // find map name
    if ( gamemode == commercial)
    {
	if (map<10)
	    sprintf (lumpname,"map0%i", map);
	else
	    sprintf (lumpname,"map%i", map);
    }
    else
    {
	lumpname[0] = 'E';
	lumpname[1] = '0' + episode;
	lumpname[2] = 'M';
	lumpname[3] = '0' + map;
	lumpname[4] = 0;
    }

    lumpnum = W_GetNumForName (lumpname);
	
    leveltime = 0;
	
    // note: most of this ordering is important	
    P_LoadBlockMap (lumpnum+ML_BLOCKMAP);
    P_LoadVertexes (lumpnum+ML_VERTEXES);
    P_LoadSectors (lumpnum+ML_SECTORS);
    P_LoadSideDefs (lumpnum+ML_SIDEDEFS);

    P_LoadLineDefs (lumpnum+ML_LINEDEFS);
    P_LoadSubsectors (lumpnum+ML_SSECTORS);
    P_LoadNodes (lumpnum+ML_NODES);
    P_LoadSegs (lumpnum+ML_SEGS);
	
    rejectmatrix = W_CacheLumpNum (lumpnum+ML_REJECT,PU_LEVEL);
    P_GroupLines ();

    bodyqueslot = 0;
    deathmatch_p = deathmatchstarts;
    P_LoadThings (lumpnum+ML_THINGS);
    
    // if deathmatch, randomly spawn the active players
    if (deathmatch)
    {
	for (i=0 ; i<MAXPLAYERS ; i++)
	    if (playeringame[i])
	    {
		players[i].mo = NULL;
		G_DeathMatchSpawnPlayer (i);
	    }
			
    }

    // clear special respawning que
    iquehead = iquetail = 0;		
	
    // set up world state
    P_SpawnSpecials ();
	
    // build subsector connect matrix
    //	UNUSED P_ConnectSubsectors ();

    // preload graphics
    if (precache)
       {
	R_PrecacheLevel ();
       }

    //printf ("free memory: 0x%x\n", Z_FreeMemory());

}



//
// P_Init
//
void P_Init (void)
{
    P_InitSwitchList ();
    P_InitPicAnims ();
    R_InitSprites (sprnames);
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区在线看| 无吗不卡中文字幕| 成人免费福利片| 国产亚洲精品福利| 国产伦精品一区二区三区视频青涩| 精品少妇一区二区三区在线播放| 美女国产一区二区| 久久毛片高清国产| 91在线国产福利| 亚洲国产一区二区视频| 日韩一级片网址| 国产精华液一区二区三区| 最新日韩av在线| 欧美色区777第一页| 欧美96一区二区免费视频| 久久免费美女视频| 色天天综合久久久久综合片| 图片区日韩欧美亚洲| 日韩精品一区二区三区在线 | 亚洲一区在线看| 欧美一区二区在线免费播放| 久久精品国产色蜜蜜麻豆| 欧美激情中文不卡| 欧美日韩精品一区二区天天拍小说| 免费成人在线视频观看| 欧美高清在线精品一区| 欧美人成免费网站| 成人精品视频网站| 午夜av一区二区三区| 欧美韩国日本一区| 在线不卡欧美精品一区二区三区| 国产麻豆欧美日韩一区| 艳妇臀荡乳欲伦亚洲一区| 精品国产91乱码一区二区三区 | 国产精品国产馆在线真实露脸| 欧美唯美清纯偷拍| 成人午夜av电影| 亚洲成人tv网| 综合久久久久久| 久久综合色婷婷| 欧美精品精品一区| 99re这里只有精品6| 国产精品综合一区二区三区| 亚洲成人av电影| 亚洲人妖av一区二区| 2020国产成人综合网| 欧美人体做爰大胆视频| 91社区在线播放| 国产在线视频一区二区| 天堂久久久久va久久久久| 亚洲日本护士毛茸茸| 久久天堂av综合合色蜜桃网| 7777精品久久久大香线蕉| 97精品电影院| 91小视频免费观看| 国产**成人网毛片九色| 在线观看视频一区二区欧美日韩| 青青草一区二区三区| 亚洲一二三四在线| 亚洲男人电影天堂| ...xxx性欧美| 中文字幕在线一区免费| 日本一区二区三区免费乱视频| 日韩三级高清在线| 欧美一区二区在线播放| 欧美女孩性生活视频| 欧美午夜免费电影| 日本精品一区二区三区四区的功能| 丁香婷婷综合五月| 成人在线视频首页| 成人综合激情网| 成人黄动漫网站免费app| 国产乱码精品一区二区三区五月婷| 久久se精品一区精品二区| 免费高清成人在线| 久久99精品久久久久| 国产在线一区观看| 国产精品1区二区.| 福利一区二区在线| jvid福利写真一区二区三区| 国产91精品精华液一区二区三区 | 国产夜色精品一区二区av| 精品久久久久一区二区国产| 日韩限制级电影在线观看| 日韩精品一区二区三区中文不卡| 日韩精品中文字幕在线一区| 欧美精品一区二区三| 亚洲国产成人私人影院tom| 国产精品妹子av| 亚洲丝袜精品丝袜在线| 国产精品电影院| 亚洲免费伊人电影| 五月激情丁香一区二区三区| 美腿丝袜亚洲一区| 国产成人免费网站| 色香蕉久久蜜桃| 欧美一级黄色片| 日本一区二区成人| 亚洲国产精品麻豆| 精品写真视频在线观看| 成人小视频在线观看| 91国产免费看| 精品国产凹凸成av人网站| 国产精品久久久久天堂| 亚洲国产精品视频| 国产精品乡下勾搭老头1| 色综合久久六月婷婷中文字幕| 91麻豆精品国产91久久久使用方法 | 波多野结衣视频一区| 欧美中文字幕亚洲一区二区va在线| 在线播放亚洲一区| 欧美国产禁国产网站cc| 亚洲成av人影院| 国产成人综合网| 欧美色精品在线视频| 久久伊人中文字幕| 亚洲一区二区欧美| 国产成人精品一区二区三区四区 | 美女视频黄 久久| av毛片久久久久**hd| 这里只有精品电影| 国产精品久久久久久久久免费樱桃 | 国产精品1024久久| 欧美三级午夜理伦三级中视频| 精品美女被调教视频大全网站| 中文字幕在线一区免费| 久88久久88久久久| 欧洲国产伦久久久久久久| 久久久久9999亚洲精品| 亚洲一区二区三区四区的| 国产suv精品一区二区883| 8x8x8国产精品| 一区二区三区精品| 国产激情视频一区二区三区欧美| 欧美日韩不卡在线| 综合欧美亚洲日本| 国产成人免费视频一区| 日韩视频免费直播| 亚洲成人av免费| 色综合天天综合狠狠| 久久精品日产第一区二区三区高清版 | 韩国女主播成人在线| 欧美亚洲日本一区| 国产精品免费视频观看| 国内成人自拍视频| 91精品啪在线观看国产60岁| 悠悠色在线精品| 丁香六月久久综合狠狠色| 日韩欧美国产午夜精品| 五月综合激情日本mⅴ| 日本精品一级二级| 中文字幕亚洲电影| 成人毛片老司机大片| 中文字幕免费观看一区| 国产福利不卡视频| 久久精品在这里| 久久99久久久欧美国产| 日韩丝袜情趣美女图片| 日韩有码一区二区三区| 欧美系列日韩一区| 亚洲国产aⅴ成人精品无吗| 在线观看精品一区| 一区二区久久久| 欧美在线不卡视频| 一区二区欧美国产| 欧美日韩一区久久| 丝瓜av网站精品一区二区| 91精品黄色片免费大全| 首页亚洲欧美制服丝腿| 91精品国产高清一区二区三区| 六月丁香婷婷色狠狠久久| 欧美电视剧在线观看完整版| 久久精品理论片| 国产亚洲人成网站| 成人av高清在线| 亚洲欧美一区二区久久| 色天使色偷偷av一区二区| 一级中文字幕一区二区| 3atv在线一区二区三区| 麻豆视频观看网址久久| 国产性做久久久久久| 成人性色生活片免费看爆迷你毛片| 中文字幕一区二| 欧美三级电影在线观看| 日韩精品视频网站| 久久久久久9999| 99re8在线精品视频免费播放| 亚洲色欲色欲www| 欧美人狂配大交3d怪物一区| 久久精品国产在热久久| 国产精品久久久一本精品| 欧美日韩视频第一区| 韩国精品主播一区二区在线观看| 中文字幕+乱码+中文字幕一区| 色视频欧美一区二区三区| 日日夜夜精品视频免费| 国产女同性恋一区二区| 欧美三级视频在线| 国产精品系列在线观看| 亚洲福利国产精品|