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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? world.cpp

?? 射擊游戲?qū)嵗E缮鲇螒蛩枰糜螒驅(qū)嶓w
?? CPP
字號:
#include "world.h"

CWorld::CWorld()
{
	terrain = new CTerrain(32, 0.5);
}

CWorld::~CWorld()
{
	audioSystem->Shutdown();

	delete gui;
	delete terrain;
	delete audioSystem;
	delete worldSound;

	gui = NULL;
	terrain = NULL;
	audioSystem = NULL;
	worldSound = NULL;
}

CWorld::CWorld(CCamera *c)
{
	camera = c;
	terrain = new CTerrain(32, 1.0f);
	player = new CPlayer;
	audioSystem = new CAudioSystem;
	gui = new CGUI;

	gameDone = false;		// 游戲開始

	audioSystem->InitDirectXAudio(NULL);

	player->AttachTo(terrain);
	player->SetCamera(camera);
	player->SetTerrain(terrain);

	worldSound = audioSystem->Create("ambient.wav", false);
	audioSystem->Play(worldSound, DMUS_SEG_REPEAT_INFINITE);

	player->SetAudioSystem(audioSystem);

	LoadWorld();
	timeStart = 300.0;		
	timeElapsed = 0.0;
	gui->SetCurrentTime(timeStart);
	gui->SetEnemiesLeft(numOgros + numSods);
}

void CWorld::Animate(float deltaTime)
{
	// 根據(jù)地形設(shè)置攝像機的高度位置
	camera->position.y = terrain->GetHeight(camera->position.x, camera->position.z) + player->size;

	if (camera->position.x <= terrain->GetScanDepth())
		camera->position.x = terrain->GetScanDepth();
	if (camera->position.x >= terrain->GetWidth()*terrain->GetMul() - terrain->GetScanDepth())
		camera->position.x = terrain->GetWidth()*terrain->GetMul() - terrain->GetScanDepth();
	if (camera->position.z <= terrain->GetScanDepth())
		camera->position.z = terrain->GetScanDepth();
	if (camera->position.z >= terrain->GetWidth()*terrain->GetMul() - terrain->GetScanDepth())
		camera->position.z = terrain->GetWidth()*terrain->GetMul() - terrain->GetScanDepth();

	terrain->Animate(deltaTime);                 // 動畫地形

	const type_info &ogro = typeid(COgroEnemy);  // 獲取ogro類型id
	const type_info &sod = typeid(CSodEnemy);    // 獲取sod類型id

	numOgros = CountObjectTypes(ogro);           // ogro計數(shù)
	numSods = CountObjectTypes(sod);             // sod計數(shù)

	gui->SetEnemiesLeft(numOgros + numSods);
	gui->SetCurrentTime(timeStart - timeElapsed);

	if (!gameDone)
		timeElapsed += deltaTime;
	else
		timeElapsed = timeStart;
}

void CWorld::FadeScreen()
{
	glPushMatrix();
	glLoadIdentity();
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glDisable(GL_TEXTURE_2D);
	glColor4f(0.0, 0.0, 0.0, 0.7);
	glBegin(GL_QUADS);
	glVertex3f(-5, -5, -3.0);
	glVertex3f(5, -5, -3.0);
	glVertex3f(5, 5, -3.0);
	glVertex3f(-5, 5, -3.0);
	glEnd();
	glColor4f(1.0, 1.0, 1.0, 1.0);
	glEnable(GL_TEXTURE_2D);
	glDisable(GL_BLEND);
	glPopMatrix();
}

void CWorld::SetScreen(int width, int height)
{
	screenWidth = width;
	screenHeight = height;
}

void CWorld::Draw(CCamera *camera)
{
	terrain->Draw(camera);
	gui->Draw();

	if (gameDone)
	{
		FadeScreen();
		if (numOgros + numSods <=0)
			gui->DrawWinner();
		else
			gui->DrawLoser();
	}
}

void CWorld::OnPrepare()
{
	glClearColor(terrain->fogColor[0], terrain->fogColor[1], terrain->fogColor[2], terrain->fogColor[3]);
	terrain->Prepare();

	if ((numOgros + numSods <= 0) || (timeElapsed >= timeStart))
		gameDone = true;
}

// 初始化場景
void CWorld::LoadWorld()
{
	int enemyIdx = 0;
	int rndInt = 0;

	numOgros = 0;
	numSods = 0;

	srand((unsigned int)time(NULL));
	
	rndInt = (rand() % (MAX_ENEMIES-4)) + 4;
	numOgros = numSods = rndInt;
	// 生成ogros敵人
	for (enemyIdx = 0; enemyIdx < numOgros; enemyIdx++)
	{
		ogroEnemy = new COgroEnemy;
		ogroEnemy->AttachTo(terrain);
		ogroEnemy->SetPlayer(player);
		ogroEnemy->SetAudioSystem(audioSystem);
		ogroEnemy->position.x = (float)(rand() % (int)(terrain->GetWidth() * terrain->GetMul()));
		ogroEnemy->position.y = 0.0f;
		ogroEnemy->position.z = (float)(rand() % (int)(terrain->GetWidth() * terrain->GetMul()));
	}
	// 生成sods敵人
	for (enemyIdx = 0; enemyIdx < numSods; enemyIdx++)
	{
		sodEnemy = new CSodEnemy;
		sodEnemy->AttachTo(terrain);
		sodEnemy->SetPlayer(player);
		sodEnemy->SetAudioSystem(audioSystem);
		sodEnemy->position.x = (float)(rand() % (int)(terrain->GetWidth() * terrain->GetMul()));
		sodEnemy->position.y = 0.0f;
		sodEnemy->position.z = (float)(rand() % (int)(terrain->GetWidth() * terrain->GetMul()));
	}
}

int CWorld::CountObjectTypes(const type_info &classID)
{
	int count = 0;
	CObject *c1;
	CObject *c2;

	c1 = (CObject*)terrain->childNode;

	while (c1 != NULL)
	{
		c2 = c1;
		do
		{
			if (typeid(*c2) == classID)
				count++;
			c2 = (CObject*)c2->nextNode;
		} while (!c2->IsFirstChild());

		count--;

		c1 = (CObject*)c1->childNode;
	}

	return count;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品理论电影在线观看| 欧美综合亚洲图片综合区| 久久伊99综合婷婷久久伊| 久久爱www久久做| 精品久久久久久久一区二区蜜臀| 久久er精品视频| 欧美激情一区在线| 92国产精品观看| 亚洲免费av高清| 91麻豆精品国产91久久久使用方法| 蜜桃一区二区三区在线| 久久久影视传媒| 91免费国产在线观看| 婷婷久久综合九色国产成人| 精品国产伦一区二区三区免费| 风间由美一区二区av101| 亚洲自拍偷拍图区| 日韩精品最新网址| 成人在线综合网| 亚洲一二三专区| 久久久天堂av| 欧洲国产伦久久久久久久| 久久99精品久久久久久动态图| 国产精品久久久久婷婷二区次| 色天使色偷偷av一区二区| 美女视频黄频大全不卡视频在线播放 | 久久久久久影视| 95精品视频在线| 激情综合网激情| 亚洲夂夂婷婷色拍ww47| 精品剧情在线观看| 欧美体内she精高潮| 国产成人综合视频| 亚洲成人黄色小说| 中文一区一区三区高中清不卡| 欧美日韩电影一区| zzijzzij亚洲日本少妇熟睡| 日本vs亚洲vs韩国一区三区二区 | 97精品久久久午夜一区二区三区 | 亚洲一区二区三区在线看| 精品国产电影一区二区 | 337p亚洲精品色噜噜噜| 不卡区在线中文字幕| 婷婷亚洲久悠悠色悠在线播放| 欧美国产丝袜视频| 欧美大片在线观看一区二区| 色88888久久久久久影院野外| 精品亚洲aⅴ乱码一区二区三区| 一区二区三区在线视频观看| 久久精品一区二区三区av| 欧美特级限制片免费在线观看| 成人av综合一区| 国产麻豆视频一区| 久久精品国产99国产精品| 洋洋成人永久网站入口| 国产精品青草久久| 久久综合狠狠综合久久激情 | 国产露脸91国语对白| 五月激情综合色| 亚洲精品一二三| 亚洲欧洲99久久| 中文在线一区二区| 久久久久国色av免费看影院| 欧美一区二区三区视频免费 | 久久成人免费网站| 日韩1区2区日韩1区2区| 亚洲高清一区二区三区| 亚洲一区二区三区中文字幕| 亚洲柠檬福利资源导航| 《视频一区视频二区| 国产精品美女久久久久aⅴ国产馆| 日韩欧美国产系列| 欧美精品久久一区二区三区| 欧美色电影在线| 在线精品视频一区二区三四| 一本到一区二区三区| 99久久久无码国产精品| jizzjizzjizz欧美| 91小视频免费观看| 91久久精品一区二区三| 欧美中文一区二区三区| 一本久久精品一区二区| 在线看国产一区二区| 欧美日本在线一区| 欧美精品乱码久久久久久按摩| 在线观看91精品国产麻豆| 91精品国产高清一区二区三区| 9191成人精品久久| 91精品国产综合久久精品app | 欧美性高清videossexo| 欧美日韩一区二区不卡| 7777精品久久久大香线蕉| 欧美成人性福生活免费看| 久久综合久久综合久久| 欧美激情综合网| 亚洲男人电影天堂| 图片区小说区区亚洲影院| 免费观看在线综合色| 久久精品国产77777蜜臀| 国产一区中文字幕| proumb性欧美在线观看| 在线观看免费亚洲| 欧美一级理论片| 久久久av毛片精品| 亚洲欧美视频在线观看视频| 偷拍日韩校园综合在线| 九九精品视频在线看| 国产91在线观看丝袜| 欧美影片第一页| 日韩免费观看高清完整版在线观看| 久久众筹精品私拍模特| 成人欧美一区二区三区| 亚洲成人www| 国产成人一级电影| 欧美最猛黑人xxxxx猛交| 久久尤物电影视频在线观看| 亚洲天堂福利av| 日产精品久久久久久久性色| 播五月开心婷婷综合| 91精品国产综合久久蜜臀| 国产日韩精品一区二区三区| 亚洲国产乱码最新视频| 国产成人在线视频网站| 欧美日韩国产影片| 国产女主播在线一区二区| 亚洲电影在线免费观看| 国产成人日日夜夜| 欧美精品少妇一区二区三区| 国产精品乱码一区二区三区软件| 亚洲成人在线网站| av成人动漫在线观看| 日韩欧美资源站| 亚洲精品亚洲人成人网在线播放| 久久99久久久久| 欧美精品久久久久久久多人混战 | 国产精品亲子伦对白| 日日摸夜夜添夜夜添精品视频 | 国产午夜精品一区二区三区视频 | av电影一区二区| 亚洲精品在线网站| 日韩精品电影在线| 91视频在线看| 中文字幕精品一区二区精品绿巨人| 亚洲成人午夜电影| 91一区二区三区在线播放| 久久久久久9999| 久久疯狂做爰流白浆xx| 欧美精品高清视频| 亚洲免费av高清| 91色婷婷久久久久合中文| 国产午夜亚洲精品理论片色戒| 久久国产成人午夜av影院| 91精品在线麻豆| 亚洲成人黄色小说| 欧美日韩一区二区在线观看| 国产精品第13页| 成人教育av在线| 亚洲欧洲精品天堂一级| 国产成人免费在线视频| 国产三级精品三级| 国产在线播放一区| 久久久精品综合| 丰满少妇在线播放bd日韩电影| 欧美一级二级在线观看| 青青草97国产精品免费观看 | 国产精品一二三四| 日韩一区二区三区电影在线观看| 亚洲成国产人片在线观看| 在线观看日韩精品| 视频在线在亚洲| 日韩一区二区在线看| 久久精品免费看| 2023国产精华国产精品| 国产成人h网站| 国产精品成人一区二区艾草 | 无码av中文一区二区三区桃花岛| 88在线观看91蜜桃国自产| 日韩国产欧美在线播放| 欧美一区二区三区在线观看| 蜜桃视频免费观看一区| 欧美精品一区二区在线观看| 国产一区二区在线电影| 国产日韩三级在线| 成人综合婷婷国产精品久久 | 日本一区二区三区免费乱视频| 成人永久aaa| 亚洲人成网站精品片在线观看| 一本一本大道香蕉久在线精品 | 精品一区二区三区欧美| 久久久久9999亚洲精品| 99vv1com这只有精品| 五月天网站亚洲| 久久久久久综合| 91传媒视频在线播放| 蜜臀精品久久久久久蜜臀| 中文一区二区完整视频在线观看 | 成人不卡免费av| 亚洲va在线va天堂| 久久综合色8888| 欧美视频中文一区二区三区在线观看|