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

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

?? cbctrls.cpp

?? 赤壁之戰的游戲源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
					if( nEndZ == 0 && codeG == MAP_DATA_NONE )
					{
						Assert(0);
						break;
					}
					nEndZ--;
				}
			}
			int	MARCH_Status;
			Assert( nEndZ>=0&&nEndZ<3 );

			MARCH_Status=March_Interface( pUnit->Draw.nX, pUnit->Draw.nY,pUnit->Draw.nLayer, nEndx, nEndy, nEndZ );

			if( bShouldDuSe == TRUE&& MARCH_Status==MARCH_ERROR_MARCH_TRACK )
			{
				if(MARCH_TrackForward[0]==255)
				{	// 應該堵塞,而且沒找到路,則馬上堵塞
					OutputDebugString( "CTRL_TASK : Find no way there!\n" );
					pUnit->Status.nTaskID = DUSE;	// 直接堵塞
					return;
				}
				else
				{	// 應該堵塞,而且路不完整,則預設堵塞
					OutputDebugString( "not reached!\n" );	
					pUnit->Status.nParam4 = DUSE;	// 預設堵塞
				}
			}
			else if( bShouldDuSe == TRUE )
			{
				if(MARCH_TrackForward[128]!=255)
				{	// 路線超界了,預設堵塞
					OutputDebugString( "not reached!\n" );	
					pUnit->Status.nParam4 = DUSE;	// 預設堵塞
				}
			}
			else if( bShouldDuSe == FALSE && MARCH_TrackForward[0]==255 )
			{	// 不應該堵塞,但是沒找到路,則馬上堵塞
				OutputDebugString( "CTRL_TASK : Find no way there!\n" );
				pUnit->Status.nTaskID = DUSE;	// 直接堵塞
				return;
			}
			memcpy( &pUnit->MarchTrack, &MARCH_TrackForward, sizeof(pUnit->MarchTrack) );
			pUnit->StepNum=0;
		}
	}


	// 狀態結束,Status的nTaskID為QUXIAO,bDone為TRUE
	// 自動設置下一狀態
	if( pUnit->Status.nTaskID != QUXIAO && pUnit->Status.bDone )
	{
		Assert( pUnit->Draw.ptOff.x == 0 || pUnit->Draw.ptOff.y == 0 );

#ifdef	_DEBUG_OFFSET_
		if( pUnit->Draw.ptOff.x != 0 || pUnit->Draw.ptOff.y != 0 )
		{
//			WriteLogFile( "off.log", "change\n" );
		}
#endif //_DEBUGS_OFFSET_

		// 注意:接受不到堵塞狀態
		// 設置動畫幀狀態
		if( EYE_IfUnitIsWorker( pUnit ) 
			&& pUnit->Soldier.nResource != 0 )
		{
			if( pUnit->Soldier.nResType == SHULIN )	// 樹林
			{
				pUnit->Draw.nState = pUnit->Draw.nDir+
					MAP_Lib.AniSeq[pUnit->Draw.nFile].nEventBegin[3];
			}
			else if( pUnit->Soldier.nResType == MAITIAN		// 麥田
				|| pUnit->Soldier.nResType == LIANGCANG )	// 糧倉
			{
				pUnit->Draw.nState = pUnit->Draw.nDir+
					MAP_Lib.AniSeq[pUnit->Draw.nFile].nEventBegin[5];
			}
			else if( pUnit->Soldier.nResType == TIEKUANG )	// 鐵礦
			{
				pUnit->Draw.nState = pUnit->Draw.nDir+
					MAP_Lib.AniSeq[pUnit->Draw.nFile].nEventBegin[4];
			}
			else	// 一般狀態
			{
				pUnit->Draw.nState = pUnit->Draw.nDir;	
			}
		}
		else	pUnit->Draw.nState = pUnit->Draw.nDir;
		if( !EYE_IfUnitIsBuild( pUnit ) )
		{
			pUnit->Draw.nFrame = 1;
			pUnit->Draw.nCol = MAP_Lib.AniSeq[pUnit->Draw.nFile].nAniSeq[pUnit->Draw.nState][pUnit->Draw.nFrame]+
				MAP_Lib.AniSeq[pUnit->Draw.nFile].nOffset;
			pUnit->Draw.nRow = 0;
		}

		if( pUnit->Status.nTaskID == pUnit->Task.nTaskID )
		{	// 對于單狀態任務的狀態或多狀態的任務的第二個狀態,
			// 結束后設置任務結束
			Assert( pUnit->nHasShadow == 1 );
			pUnit->Status.nTaskID = QUXIAO;
			pUnit->Task.nTaskID = QUXIAO;
			pUnit->Task.bDone = FALSE;
			pUnit->Task.bIRQ = FALSE;
			pUnit->nCounter = 0;

/*
			pUnit->Draw.nState = pUnit->Draw.nDir+MAP_Lib.AniSeq[pUnit->Draw.nFile].nEventBegin[0];
			pUnit->Draw.nCol = MAP_Lib.AniSeq[pUnit->Draw.nFile].nAniSeq[pUnit->Draw.nState][pUnit->Draw.nFrame]+
				MAP_Lib.AniSeq[pUnit->Draw.nFile].nOffset;
			pUnit->Draw.nRow = 0;
*/
//			OutputDebugString( "CTRL_TASK : Done!\n" );
		}
		else
		{	// 對于多狀態任務的第一個狀態,結束后設置下一個狀態
			CTRL_TASK_Copy( &pUnit->Status, &pUnit->Task );
			pUnit->Status.bDone = FALSE;
			pUnit->nCounter = 0;
		}
	}
}
//////////////////////

//////////////////////
// basic functions
// 基本函數

// 產生單元,對陰影有特殊處理
// 產生單元時,調用SHADOW_Draw()同時產生陰影.
// codeU		:	unit code to identifies the type of the unit
// nZ, nX, nY	:	position to locate,產生的位置
// return		:	unit ID extended code if successful,
//					MAP_DATA_NONE if failed
WORD CTRL_UNIT_Create( int nZ, int nX, int nY, DWORD codeU, BOOL bFind/*=TRUE*/ )
{
	// 尋找附近一個合適的地方放置單元
	if( bFind )
	{
		POINT pt;
		pt = MAP_FindRegion( nZ, nX, nY, codeU );
		if( pt.x == -1 )
		{
			OutputDebugString( "CTRL_UNIT_Create Error(0): Cannot find a place to set general!\n" );
			return MAP_DATA_NONE;
		}
		nX = pt.x, nY = pt.y;
	}

	// 創建單元
	WORD codeUEx = MAP_SetUnitData( nZ, nX, nY, codeU );
	if( codeUEx == MAP_DATA_NONE )
	{
		OutputDebugString( "CTRL_UNIT_Create Error(1): Cannot create unit!\n" );
		//	戰場上的物體過多,不能增加了
		FACE_ShowPromptInfor( 18 );
		return codeUEx;
	}

	// 設置單元其它信息
	struct UNIT_STRUCT *pUnit = MAP_GetUnit( codeUEx );
	Assert( pUnit->nType != MAP_UNIT_TYPE_NONE );
	Assert( nX == pUnit->Draw.nX && nY == pUnit->Draw.nY );

	// 生命值
	pUnit->nLife = EYE_GetFullLife( pUnit->Draw.nPlayer, pUnit->Draw.nFile );

	pUnit->nIDAttackMe = MAP_DATA_NONE;

	if( !EYE_IfUnitIsBuild( pUnit ) )
	{
		pUnit->Draw.nFrame = 1;
#ifdef	_MAP_COMPRESS_
		pUnit->Draw.nCol = MAP_Lib.AniSeq[pUnit->Draw.nFile].nAniSeq[pUnit->Draw.nState][pUnit->Draw.nFrame]+MAP_Lib.AniSeq[pUnit->Draw.nFile].nOffset;
		pUnit->Draw.nRow = 0;
#else
		pUnit->Draw.nRow = stct.nRow;
		pUnit->Draw.nCol = stct.nCol;
#endif
	}


	// 是主帥帳或糧倉,增加本君主的FoodStore數量
	if( pUnit->Draw.nFile == 0
		|| pUnit->Draw.nFile == 1
		|| pUnit->Draw.nFile == 10
		|| pUnit->Draw.nFile == 11 )
	{
		GAME.Players[pUnit->Draw.nPlayer].nFoodStore++;
	}

	if( EYE_IfUnitIsSoldier( pUnit ) )
	{
		pUnit->Soldier.nGenID = MAP_DATA_NONE;
		pUnit->Soldier.nResType = QXZIYUAN;	// 初始化工人的資源類型為空
	}
	else if( EYE_IfUnitIsGen( pUnit ) )
	{
		// 清空將領手下的士兵數組
		memset( pUnit->Gen.wTroop, MAP_DATA_NONE, sizeof(WORD)*GENERAL_TROOP_MAX );
	}

// draw shadow
	// 只有我方才有陰影改變的問題
	if( GAME.nMe == pUnit->Draw.nPlayer )
	{
		// 視野
		int nVRange = EYE_GetViewRange( &pUnit->Draw );
		SHADOW_Draw0( pUnit->Draw.nX, pUnit->Draw.nY, 
			pUnit->Draw.nXLast, pUnit->Draw.nYLast, nVRange );// Draw solid shadow

		//lwc
		//存在
		Assert( pUnit->nHasShadow == 0 );
        SHADOW_existent(pUnit->Draw.nX,pUnit->Draw.nY,nVRange);
		//lwc
	}
	pUnit->nHasShadow++;
	// draw to minimap
	MINI_SetUnitData( pUnit->Draw.nX, pUnit->Draw.nY, pUnit->Draw.nPlayer, pUnit->Draw.nLocationSize );	// for minimap

	return codeUEx;
}

// 刪除單元,對陰影有特殊處理
// pUnit	:	unit pointer to be destroyed
// return	:	TRUE if successful
BOOL CTRL_UNIT_Destroy( struct UNIT_STRUCT *pUnit )
{
	WORD codeUEx;

	// draw shadow
#ifdef	_DEBUG
	if( !pUnit )	
	{
		OutputDebugString( "CTRL_UNIT_Create Error(2): Cannot find unit!\n" );
		return FALSE;
	}
#endif

	// 是主帥帳或糧倉,減少本君主的FoodStore數量
	if( pUnit->Draw.nFile == 0
		|| pUnit->Draw.nFile == 1
		|| pUnit->Draw.nFile == 10
		|| pUnit->Draw.nFile == 11 )
	{
		GAME.Players[pUnit->Draw.nPlayer].nFoodStore--;
	}

	if( pUnit->nHasShadow > 0 )
	{	// 如果不在建筑中,要刪除陰影
		// erase from minimap
		MINI_SetGroundData( pUnit->Draw.nXLast, pUnit->Draw.nYLast, pUnit->Draw.nLocationSize );	// for minimap

		// 只有我方才有陰影改變的問題
		if( GAME.nMe == pUnit->Draw.nPlayer )
		{
			//lwc
			// 消失
			int nVRange = EYE_GetViewRange( &pUnit->Draw );
			Assert( pUnit->nHasShadow == 1 );
			SHADOW_death (pUnit->Draw.nX,pUnit->Draw.nY,nVRange);
			//lwc
		}
		pUnit->nHasShadow--;
		codeUEx = MAP_SetUnitData( pUnit->Draw.nLayer, pUnit->Draw.nX, pUnit->Draw.nY, MAP_DATA_NONE );
	}
	else
	{
		GAME.Players[pUnit->Draw.nPlayer].wUnitCounter--;
		pUnit->nType = MAP_UNIT_TYPE_NONE;
	}

	// 在沒找到錯誤之前,用來修正錯誤
	Assert( pUnit->nType == MAP_UNIT_TYPE_NONE );
#ifndef	_DEBUG
	pUnit->nType = 0;
#endif

	if( codeUEx != MAP_DATA_NONE )
	{
		OutputDebugString( "CTRL_UNIT_Destroy Error(1): Error when destroying unit!\n" );
		return FALSE;
	}
	return TRUE;
}
///////////////////

//////////////////
// only used by CTRL_UNIT_Move()
void CTRL_UNIT_MoveShadow( struct CTRL_FRAME_STRUCT *pDraw );

// 移動單元,每當移動一個格子后,修改陰影數組的內容
// pDraw	:	unit to be moved
// nType	:	type of unit
// 返回	0,被堵住;1,可以走;2,沼澤;>2,遇到城門,返回城門的ID
int CTRL_UNIT_Move( struct CTRL_FRAME_STRUCT *pDraw, int nType )
{
	BOOL ret;
	
	ret = MAP_MoveUnit( pDraw, nType );
	if( ret == FALSE )	
	{
		int nNum = MAP_nLocationNum[pDraw->nLocationSize];
		int nX[16], nY[16];
		BOOL bOdd = pDraw->nY&1;
		for( int i=0; i<nNum; i++ )
		{
			nX[i] = pDraw->nX+MAP_ptLocation[bOdd][i].x;
			nY[i] = pDraw->nY+MAP_ptLocation[bOdd][i].y;
			Assert( !EYE_IfOutOfRange( nX[i], nY[i] ) );
			struct UNIT_STRUCT *pU = MAP_GetUnit( nX[i], nY[i] );
			if( pU != NULL )
			{
				if( EYE_IfUnitIsDoor( pU )
					&& pU->Draw.nPlayer == pDraw->nPlayer )	// 是自己的城門
				{
					return pU->nID;
				}
			}
		}
		return 0;
	}

	// 移動陰影
	CTRL_UNIT_MoveShadow( pDraw );

	// 檢測是否該地形是沼澤
	WORD codeG = MAP_GetGroundData( pDraw->nLayer, pDraw->nX, pDraw->nY );
	Assert( codeG != MAP_DATA_NONE );
	struct MAP_GROUND_CODE_STRUCT stctG;
	MAP_GroundDeCode( codeG, &stctG );
	if( stctG.nFile == 4 )	// 沼澤
		return 2;
	return 1;
}

void CTRL_UNIT_MoveShadow( struct CTRL_FRAME_STRUCT *pDraw )
{
	// 只有我方才有陰影改變的問題
	if( GAME.nMe == pDraw->nPlayer )
	{
		// 視野
		int nVRange = EYE_GetViewRange( pDraw );
		SHADOW_Draw( pDraw->nX, pDraw->nY, 
			pDraw->nXLast, pDraw->nYLast,
			nVRange );	// Draw solid shadow
	}

	// 敵人也畫
	// erase from minimap
	MINI_SetGroundData( pDraw->nXLast, pDraw->nYLast, pDraw->nLocationSize );	// for minimap
	// draw to minimap
	MINI_SetUnitData( pDraw->nX, pDraw->nY, pDraw->nPlayer, pDraw->nLocationSize );	// for minimap
}
///////////////////

///////////////////
/*
// 判斷是否該將領應該撤離戰場,在解散部隊后發生
BOOL CTRL_UNIT_ToDisapear( struct UNIT_STRUCT *pUnitG )
{
	int i;

	Assert( EYE_IfUnitIsGen( pUnitG ) );

	// 不能直接刪除,必須下達命令
	// 查看是否可以刪除將領(當將領所帶領的士兵為0時)
	int bYes = TRUE;
	for( i=0; i<GENERAL_TROOP_MAX; i++ )
	{
		if( pUnitG->Gen.wTroop[i] != MAP_DATA_NONE )
		{
			bYes = FALSE; break;
		}
	}

	if( bYes )
	{
		struct CTRL_TASK_STRUCT Task;
		CTRL_TASK_Clear( &Task );
		Task.nLevel = 0;		// 該命令的級別,0 is the highest, 5 is the lowest
		Task.nID = pUnitG->nID;
		Task.nTaskID = SHANCHU;	// 任務
		Task.nTaskIDEx = 1;		// 只是刪除部隊
		Task.bDone = TRUE;

		// 下達任務到隊列中
		CTRL_TASK_DeployByComputer( pUnitG->Draw.nPlayer, &Task );
		return TRUE;
	}
	return FALSE;
}
*/
//////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品啪在线观看国产60岁| 精品日韩欧美一区二区| 在线成人av网站| 久久久久久久久伊人| 亚洲午夜免费电影| av不卡免费电影| 欧美成人伊人久久综合网| 亚洲国产中文字幕| a4yy欧美一区二区三区| 欧美精品一区二区精品网| 亚洲一区在线视频| 成人性视频免费网站| 日韩免费电影一区| 午夜婷婷国产麻豆精品| 欧洲精品在线观看| 亚洲视频一二三| 成人精品一区二区三区中文字幕 | 亚洲精品老司机| 国产精品66部| 精品免费国产一区二区三区四区| 午夜天堂影视香蕉久久| 欧美综合色免费| 精品动漫一区二区三区在线观看| 日韩成人精品视频| 欧美裸体一区二区三区| 亚洲国产一二三| 欧美日韩国产小视频| 一区二区三区免费观看| 色成年激情久久综合| 欧美二区三区91| 亚洲综合精品自拍| 99在线精品观看| 国产日韩欧美不卡| 久久精品国产网站| 91精品国产91久久综合桃花| 亚洲综合免费观看高清在线观看| 成人97人人超碰人人99| 国产午夜精品一区二区三区嫩草 | 亚洲精品一区二区在线观看| 蜜臀久久久99精品久久久久久| 91精品综合久久久久久| 精品一区二区三区香蕉蜜桃 | 高清国产一区二区| 欧美激情一二三区| 色伊人久久综合中文字幕| 亚洲精品日韩专区silk| 欧美亚洲国产一卡| 热久久一区二区| 26uuu亚洲| 91亚洲午夜精品久久久久久| 亚洲一区二区三区精品在线| 91.com在线观看| 麻豆精品一区二区三区| 国产精品麻豆一区二区| 在线精品视频免费观看| 老司机午夜精品| 国产精品免费视频一区| 欧美在线观看视频在线| 日本午夜精品一区二区三区电影| 精品电影一区二区| 91麻豆精品秘密| 麻豆免费看一区二区三区| 中文字幕av一区二区三区| 在线观看免费视频综合| 久久精品噜噜噜成人av农村| 中文字幕中文乱码欧美一区二区| 欧美日韩一区视频| 国产一区二区三区四区五区美女| 亚洲欧美日韩国产手机在线| 欧美成人r级一区二区三区| 国产成人精品一区二区三区四区| 亚洲一区二区偷拍精品| 2020国产精品| 欧美视频一区二区在线观看| 国内精品伊人久久久久av影院| 成人免费在线视频| 精品日韩欧美在线| 欧美日韩视频不卡| 成人免费毛片片v| 蜜芽一区二区三区| 亚洲一线二线三线久久久| 久久综合色婷婷| 911国产精品| 色哟哟在线观看一区二区三区| 国产在线精品一区二区不卡了 | 亚洲免费资源在线播放| 精品免费视频.| 欧美视频三区在线播放| 成人免费视频一区二区| 久久激情五月婷婷| 天天色图综合网| 中文字幕在线不卡视频| 2019国产精品| 日韩精品中文字幕在线不卡尤物| 在线观看av一区二区| 成人av小说网| 国产麻豆精品95视频| 日本不卡视频在线| 视频一区二区中文字幕| 亚洲自拍偷拍欧美| 一区二区成人在线视频| 国产精品伦理在线| 国产欧美日产一区| 久久久久久麻豆| 久久蜜桃av一区精品变态类天堂 | 亚洲图片激情小说| 久久久国际精品| 欧美精品一区二区高清在线观看 | 日本一区二区三区在线不卡| 精品久久国产字幕高潮| 欧美tickling网站挠脚心| 日韩天堂在线观看| 欧美精品日韩综合在线| 在线电影欧美成精品| 欧美影视一区在线| 在线观看91精品国产入口| 日本乱人伦aⅴ精品| 在线免费不卡电影| 欧美自拍丝袜亚洲| 5566中文字幕一区二区电影| 欧美疯狂性受xxxxx喷水图片| 欧美日韩国产中文| 日韩一区二区视频| 欧美成人bangbros| 国产欧美精品一区| 中文字幕日韩精品一区| 亚洲天堂久久久久久久| 亚洲人精品一区| 亚洲国产精品精华液网站| 午夜av一区二区三区| 日韩电影在线观看电影| 免费成人av资源网| 国产91色综合久久免费分享| yourporn久久国产精品| 欧美视频在线不卡| 91精品综合久久久久久| 国产欧美久久久精品影院| 成人欧美一区二区三区在线播放| 亚洲高清视频中文字幕| 日本成人在线电影网| 国产成人激情av| 99久久精品一区| 欧美精品aⅴ在线视频| 欧美精品一区二区三区蜜臀| 中文字幕一区二区三| 午夜精品久久久久久久久久 | 91老师片黄在线观看| 欧美亚洲综合久久| 欧美日韩精品久久久| 日韩欧美国产一区二区三区 | 欧美在线你懂得| 欧美大片免费久久精品三p | 色一情一伦一子一伦一区| 在线不卡中文字幕| 国产精品美女久久久久aⅴ国产馆| 一区二区久久久久久| 久久99热99| 欧洲精品视频在线观看| 欧美精品一区二区三区很污很色的| 亚洲天天做日日做天天谢日日欢 | 亚洲柠檬福利资源导航| 日本在线观看不卡视频| 高潮精品一区videoshd| 欧美精品久久一区二区三区| 久久精品一二三| 日韩制服丝袜av| 91极品美女在线| 国产亚洲短视频| 亚洲h动漫在线| 91亚洲国产成人精品一区二区三 | 亚洲欧洲av色图| 久久aⅴ国产欧美74aaa| 欧美日韩亚洲不卡| 国产精品日韩精品欧美在线| 激情综合色播激情啊| 欧美挠脚心视频网站| 亚洲精品水蜜桃| 国产成+人+日韩+欧美+亚洲| 91麻豆精品国产综合久久久久久| 日韩一区在线看| 福利电影一区二区| 日韩三级视频中文字幕| 亚洲一区中文日韩| 色综合久久久久综合| 国产拍揄自揄精品视频麻豆| 久久爱www久久做| 欧美二区三区的天堂| 亚洲国产综合91精品麻豆| 99久久99久久精品国产片果冻| 久久美女高清视频| 久久国产精品一区二区| 在线成人av影院| 亚洲小说欧美激情另类| 欧美亚男人的天堂| 亚洲精品国产无天堂网2021| 一本一道久久a久久精品综合蜜臀| 国产精品沙发午睡系列990531| 国产精品自拍av| 中文字幕精品—区二区四季| 国产69精品一区二区亚洲孕妇|