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

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

?? camera.cc

?? 國外一套很好的游戲代碼,款經典的小游戲 希望大家提出寶貴意見 讓我們一起進步
?? CC
字號:
/*	camera.cc		(c) Richard Thrippleton	Licensing terms are in the 'LICENSE' file	If that file is not included with this source then permission is not given to use this source in any way whatsoever.*/#include <stdio.h>#include <string.h>#include "calc.h"#include "graphic.h"#include "interface.h"#include "protocol.h"#include "presence.h"#include "constants.h"#include "sound.h"#include "error.h"#include "camera.h"#define x2screen(rx) (long)cx+(rx-pov.x)/vzm#define y2screen(ry) (long)cy+(ry-pov.y)/vzmvoid camera::init(){	src=NULL;	on=false;	for(int i=0;i<64;i++)	{		strs[i].loc.x=-1;		strs[i].loc.y=-1;		strs[i].dep=1;	}	vzm=1;}void camera::turnon(){	on=true;}void camera::turnoff(){	on=false;}void camera::bind(presence* src){	if(camera::src!=src)	{		camera::src=src;		rzm=presence::srng;		vzm=1;		update();	}}void camera::unbind(){	src=NULL;}void camera::render(){	if(!on)		return;	graphic::clip(&interface::viewb);	renderstars();	rendermainview();	if(src)	{		graphic::clip(&interface::radarb);		renderradar();	}}void camera::update(){	if(src)		pov=src->loc;	//Handle camera shaking	if(shak)	{		shak--;		pov.x+=calc::rnd(shak*2)-shak;		pov.y+=calc::rnd(shak*2)-shak;	}	//Update covered universe area	cov.x1=pov.x-rzm;	cov.x2=pov.x+rzm;	cov.y1=pov.y-rzm;	cov.y2=pov.y+rzm;}void camera::noise(sound* snd,presence* src){	vect ssrc; //Sound source vector	double dis; //Rough distance from PoV	ssrc.xx=src->loc.x-pov.x;	ssrc.yy=src->loc.y-pov.y;	if(ssrc.xx<0)		ssrc.xx=-ssrc.xx;	if(ssrc.yy<0)		ssrc.yy=-ssrc.yy;	dis=ssrc.xx+ssrc.yy;	if(dis<600)	{		snd->play(1);		return;	}	if(dis<6400)	{		snd->play(3);		return;	}	if(dis<12800)	{		snd->play(6);		return;	}	}void camera::shake(int mag){	if(mag>20)		mag=20;	shak=mag;}void camera::radarzoom(int dir){	if(dir==+1)		if(rzm>0)			rzm=(rzm*2)/3;	if(dir==-1)		if(rzm>0)			rzm=(rzm*3)/2;	if(rzm>presence::lrng)		rzm=presence::lrng;	if(rzm<200)		rzm=200;}void camera::viewzoom(){	vzm++;	if(vzm>3)		vzm=1;	for(int i=0;i<64;i++)	{		strs[i].loc.x=-1;		strs[i].loc.y=-1;		strs[i].dep=1;	}}box camera::cov;void camera::rendermainview(){	char txt[33]; //For rendering distance on the pointer	presence* tprs; //Pointer to objects to draw	int cx,cy; //Centering screen position	long sx,sy; //Screen co-ordinates	pol pptr;	vect vptr; //Pointer to target	graphic* ptr; //Pointer graphic		cx=interface::viewb.x+(interface::viewb.w/2);	cy=interface::viewb.y+(interface::viewb.h/2);	for(int i=PT_PLANET;i<=PT_FRAG;i++)	{		for(int j=0;j<presence::ISIZE;j++)		{			tprs=presence::get(j);			if(tprs && tprs->typ==i)			{				sx=(long)x2screen(tprs->loc.x);				sy=(long)y2screen(tprs->loc.y);				if(sx>interface::viewb.x-100 && sx<interface::viewb.x+interface::viewb.w+100 && sy>interface::viewb.y-100 && sy<interface::viewb.y+interface::viewb.h+100)					tprs->drawat(sx,sy,vzm);									}		}	}	if(presence::trg)	{		vptr.xx=presence::trg->loc.x-pov.x;		vptr.yy=presence::trg->loc.y-pov.y;		pptr=vptr.topol();		if(pptr.rad>(interface::viewb.w/5)*vzm)		{			sprintf(txt,"%ld",(long)pptr.rad/100);			pptr.rad=interface::viewb.w/2-50;			vptr=pptr.tovect();			vptr.xx+=interface::viewb.x+interface::viewb.w/2;			vptr.yy+=interface::viewb.y+interface::viewb.h/2;			ptr=graphic::get(graphic::NAV);			if(ptr)				ptr->draw(vptr.xx,vptr.yy,(((int)pptr.ang+5)/10)%36,1,0,false);			graphic::string(txt,vptr.xx,vptr.yy+4,false);		}	}}void camera::renderstars(){	int cx,cy; //Centering screen position	int astx,asty; //For holding star position on screen	graphic* warp; //Warp star sprite		warp=NULL;	cx=interface::viewb.x+(interface::viewb.w/2);	cy=interface::viewb.y+(interface::viewb.h/2);	//If we appear to be travelling at warp speed, get the appropriate graphic	if(presence::vel.rad>99)		warp=graphic::get(graphic::WARP);	//Iterate through the background stars	for(int i=0;i<64;i++)	{		//At impulse, some stars will be too 'deep' from warp speed and shouldn't be		if(!warp && strs[i].dep>10)			strs[i].dep=1;		//Calculate the actual screen position		astx=(short)(strs[i].loc.x+(cx-pov.x)/(vzm*strs[i].dep));		asty=(short)(strs[i].loc.y+(cy-pov.y)/(vzm*strs[i].dep));		//If a star is outside of view, make another		if(astx<interface::viewb.x || astx>interface::viewb.x+interface::viewb.w || asty<interface::viewb.y || asty>interface::viewb.y+interface::viewb.h)		{			astx=interface::viewb.x+calc::rnd(interface::viewb.w);			asty=interface::viewb.y+calc::rnd(interface::viewb.h);			if(warp)				strs[i].dep=calc::rnd(140)+60;			else				strs[i].dep=calc::rnd(10)+1;			//Calculate the 'real' location from generated screen position			strs[i].loc.x=astx-(interface::viewb.x+interface::viewb.w/2-pov.x)/(vzm*strs[i].dep);			strs[i].loc.y=asty-(interface::viewb.y+interface::viewb.h/2-pov.y)/(vzm*strs[i].dep);		}		//Draw the star		if(warp)		{			warp->draw(astx,asty,((presence::vel.ang+5)/10)%36,1,0,false);		}		else		{			if(strs[i].dep>5)				graphic::pix(astx,asty,graphic::GREY);			else				graphic::pix(astx,asty,graphic::WHITE);		}	}}void camera::renderradar(){	long sx,sy; //Screen co-ordinates	presence* tprs; //Pointer to objects to draw	char txt[33]; //For rendering co-ordinates on radar	int col; //Color to use on radar	sbox tbox; //Target drawing box	ipol pdir;	ivect vdir; //Direction of travel	flck=!flck;	if((cov.x2-cov.x1)<(presence::srng*4))	{		for(long x=(long)cov.x1/2000,l=(long)cov.x2/2000;x<=l;x++)		{			tbox.x=(int)((((x*2000)-pov.x)*(interface::radarb.w/2))/(cov.x2-pov.x)+interface::radarb.x+interface::radarb.w/2);			tbox.y=interface::radarb.y+interface::radarb.h-2;			tbox.w=1;			tbox.h=3;			graphic::box(&tbox,graphic::GREY);		}		for(long y=(long)cov.y1/2000,l=(long)cov.y2/2000;y<=l;y++)		{			tbox.y=(int)((((y*2000)-pov.y)*(interface::radarb.h/2))/(cov.y2-pov.y)+interface::radarb.y+interface::radarb.h/2);			tbox.x=interface::radarb.x+interface::radarb.w-2;			tbox.w=3;			tbox.h=1;			graphic::box(&tbox,graphic::GREY);		}	}	if(cov.x2-pov.x>presence::srng)	{		tbox.x=(-presence::srng)/((cov.x2-cov.x1)/(long)interface::radarb.w)+interface::radarb.x+interface::radarb.w/2;		tbox.y=(-presence::srng)/((cov.y2-cov.y1)/(long)interface::radarb.h)+interface::radarb.y+interface::radarb.h/2;		tbox.w=(presence::srng)/((cov.x2-cov.x1)/(long)interface::radarb.w)+interface::radarb.x+interface::radarb.w/2;		tbox.h=(presence::srng)/((cov.y2-cov.y1)/(long)interface::radarb.h)+interface::radarb.y+interface::radarb.h/2;		graphic::line(tbox.x,tbox.y,tbox.w,tbox.y,graphic::LIGHTBLUE);		graphic::line(tbox.w,tbox.h,tbox.w,tbox.y,graphic::LIGHTBLUE);		graphic::line(tbox.w,tbox.h,tbox.x,tbox.h,graphic::LIGHTBLUE);		graphic::line(tbox.x,tbox.h,tbox.x,tbox.y,graphic::LIGHTBLUE);	}	for(int i=0;i<presence::ISIZE;i++)	{		tprs=presence::get(i);		if(tprs)		{			sx=(tprs->loc.x-pov.x)/((cov.x2-cov.x1)/(long)interface::radarb.w)+interface::radarb.x+interface::radarb.w/2;			sy=(tprs->loc.y-pov.y)/((cov.y2-cov.y1)/(long)interface::radarb.h)+interface::radarb.y+interface::radarb.h/2;			if(tprs->loc.x>cov.x1 && tprs->loc.x<cov.x2 && tprs->loc.y>cov.y1 && tprs->loc.y<cov.y2)			{				if(tprs==presence::me)				{					if(flck)						col=graphic::RED;					else						col=graphic::BLUE;				}				else				{					switch(tprs->typ)					{						case PT_SHIP:						if(tprs->enem)							col=graphic::RED;						else							col=graphic::WHITE;						break;						case PT_PLANET:						col=graphic::GREEN;						break;						case PT_FRAG:						col=graphic::BLUE;						break;					}				}				if(tprs->typ==PT_SHIP)				{					pdir=tprs->mov.topol();					if(pdir.rad!=0)					{						vdir.xx=(tprs->mov.xx*7)/pdir.rad;						vdir.yy=(tprs->mov.yy*7)/pdir.rad;						graphic::line(sx,sy,sx+vdir.xx,sy+vdir.yy,graphic::BLUE);					}				}				if(tprs==presence::trg || tprs==presence::hl)				{					tbox.x=(int)sx-1;					tbox.y=(int)sy-1;					tbox.w=3;					tbox.h=3;					if(tprs==presence::hl)					{						if(flck)							graphic::box(&tbox,col);					}					else						graphic::box(&tbox,col);				}				else					graphic::pix(sx,sy,col);			}		}	}	if(presence::trg)	{		graphic::string(presence::trg->nam,interface::radarb.x+1,interface::radarb.y+interface::radarb.h-13,false);		graphic::string(presence::trg->anno,interface::radarb.x+1,interface::radarb.y+interface::radarb.h-6,false);	}	sprintf(txt,"%ld , %ld",(long)pov.x/100,(long)pov.y/100);	graphic::string(txt,interface::radarb.x,interface::radarb.y,false);	calc::getspeed(presence::vel.rad,txt);	graphic::string(txt,interface::radarb.x+interface::radarb.w-6*strlen(txt)-2,interface::radarb.y,false);}bool camera::on;presence* camera::src;icord camera::pov;int camera::vzm;long camera::rzm;star camera::strs[64];int camera::shak;bool camera::flck;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产另类精品专区| 91免费小视频| 中文字幕一区二区三区色视频| 成人97人人超碰人人99| 亚洲精品久久7777| 日韩欧美激情四射| 国产一区二区三区高清播放| 欧美在线一区二区| 国产精品美女视频| 97se亚洲国产综合自在线不卡| 久久久久88色偷偷免费| 一区二区三区四区国产精品| 久久国产成人午夜av影院| 欧美调教femdomvk| 日韩成人伦理电影在线观看| 欧美久久久久久久久| 激情亚洲综合在线| 亚洲国产精品一区二区www| 亚洲免费av在线| 91色综合久久久久婷婷| 久久婷婷色综合| 欧美精品乱人伦久久久久久| 色综合久久中文字幕| 成人看片黄a免费看在线| 国产一二精品视频| 日本网站在线观看一区二区三区| 一区二区三区四区国产精品| 国产精品第四页| 国产女主播视频一区二区| 欧美大白屁股肥臀xxxxxx| 亚洲国产精品久久一线不卡| a在线播放不卡| 国产在线播放一区| 日本午夜一区二区| 午夜在线成人av| 亚洲综合在线电影| 亚洲激情校园春色| 玉足女爽爽91| 一区二区欧美精品| 一区二区三区在线播放| 一级日本不卡的影视| 亚洲精品国产第一综合99久久| 99精品久久99久久久久| 国产成人小视频| 狠狠狠色丁香婷婷综合激情| 免费视频一区二区| 久久精品72免费观看| 精品中文字幕一区二区小辣椒| 久久99最新地址| 久久国产精品露脸对白| 国产麻豆成人精品| 粉嫩在线一区二区三区视频| 成人黄色av电影| 91免费观看国产| 欧美伊人久久大香线蕉综合69| 欧美日韩小视频| 91精品国产高清一区二区三区 | 亚洲国产高清在线观看视频| 国产丝袜美腿一区二区三区| 中文字幕一区二区三区四区| 亚洲激情欧美激情| 蜜臀a∨国产成人精品| 国产在线国偷精品免费看| 国产福利视频一区二区三区| 99久久精品国产麻豆演员表| 在线免费精品视频| 日韩一区二区精品| 中文字幕精品在线不卡| 一区二区视频免费在线观看| 日韩电影在线免费看| 久草在线在线精品观看| 成人黄色av网站在线| 欧美在线不卡视频| 欧美电影免费观看高清完整版在 | www.欧美日韩国产在线| 欧美日韩亚洲另类| 精品国产一区二区三区久久影院 | 麻豆91在线看| 成人av在线一区二区三区| 欧美天天综合网| 久久综合国产精品| 亚洲欧美一区二区三区极速播放 | 日韩三区在线观看| 国产精品免费人成网站| 午夜精品一区二区三区电影天堂 | 亚洲婷婷综合久久一本伊一区| 亚洲大片免费看| 国产成都精品91一区二区三| 欧美色精品在线视频| 久久免费看少妇高潮| 亚洲最大成人网4388xx| 国产乱国产乱300精品| 欧美色网一区二区| 中文字幕欧美三区| 久久国产精品72免费观看| av中文字幕亚洲| 91 com成人网| 亚洲激情中文1区| 丁香婷婷深情五月亚洲| 欧美日韩成人综合天天影院| 国产精品乱码一区二三区小蝌蚪| 日本中文字幕一区| 91久久精品网| 国产精品麻豆欧美日韩ww| 久久精品国产秦先生| 欧美久久高跟鞋激| 亚洲精品免费在线播放| 国产成人免费在线视频| 日韩视频免费直播| 亚洲高清视频中文字幕| 99久久婷婷国产| 欧美高清在线视频| 狠狠网亚洲精品| 欧美一区二区三区四区在线观看 | 中文天堂在线一区| 国产麻豆成人传媒免费观看| 日韩一区二区三区四区| 亚洲国产精品久久一线不卡| 91精彩视频在线| 国产精品久久久久久福利一牛影视 | 日韩精品一级中文字幕精品视频免费观看 | 国产欧美精品一区aⅴ影院| 美女一区二区三区在线观看| 欧美日韩高清一区二区不卡| 国产福利电影一区二区三区| av资源站一区| 国产精品视频麻豆| 成人妖精视频yjsp地址| 亚洲国产精品t66y| 国产91色综合久久免费分享| 久久综合一区二区| 国产一区二区在线观看视频| 日韩精品一区二区在线观看| 精品一区二区在线看| 欧美一级在线视频| 蜜桃一区二区三区在线观看| 日韩三级高清在线| 极品少妇xxxx精品少妇| 91精品欧美久久久久久动漫| 毛片av一区二区| 精品99一区二区| 国产91精品入口| 国产精品久久久久久久蜜臀| www.日韩在线| 一区二区三区在线视频播放| 在线观看av一区二区| 丝袜美腿亚洲综合| 日韩精品一区二区三区视频播放 | 95精品视频在线| 亚洲天天做日日做天天谢日日欢| 99精品一区二区| 亚洲一区二区四区蜜桃| 在线电影一区二区三区| 日本亚洲视频在线| 26uuu色噜噜精品一区| 成人18精品视频| 成人听书哪个软件好| 国产精品私人影院| 一本久久精品一区二区| 亚洲123区在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 成人动漫一区二区三区| 亚洲欧美另类久久久精品2019| 欧美日本免费一区二区三区| 久久se精品一区二区| 国产精品二区一区二区aⅴ污介绍| 91亚洲永久精品| 日一区二区三区| 国产亚洲女人久久久久毛片| 91丨porny丨最新| 美日韩一区二区三区| 国产精品网站导航| 欧美伦理电影网| 国产福利精品一区| 亚洲一卡二卡三卡四卡| 欧美mv和日韩mv国产网站| 老司机午夜精品| 亚洲乱码国产乱码精品精小说| 91精品在线观看入口| 成人性生交大片免费看中文网站| 中文一区二区在线观看| 亚洲777理论| 97精品久久久午夜一区二区三区| 欧美在线制服丝袜| 亚洲一区二区五区| 欧美一a一片一级一片| 国产精品麻豆视频| 国产乱人伦偷精品视频不卡| 91精品免费在线| 欧美一a一片一级一片| 麻豆成人免费电影| 亚洲欧美国产毛片在线| 精品福利在线导航| 91在线视频观看| 国产一区在线观看视频| 香蕉成人伊视频在线观看| 国产精品九色蝌蚪自拍| 欧美成人video| 欧美久久久久久久久中文字幕| 播五月开心婷婷综合|