コード例 #1
0
ファイル: game.cpp プロジェクト: minamiliu/Time_To_Shoot
/*******************************************************************************
関数名:	void DrawGame(void)
引数:	なし
戻り値:	なし
説明:	ゲームの描画関数
*******************************************************************************/
void DrawGame(void)
{
	//カメラの設置
	SetCamera();

	//ステージの描画処理
	DrawStageManager();
	DrawMeshDome();
	
	//DrawModel();
	DrawParticle();
	DrawEnemy();
	DrawEnemyBullet();
	DrawItemBullet();

	if( IsDebugMode()) DrawPlayer();
	
	DrawPlayerBullet();
	DrawGun();
	DrawShadow();
	//DrawBillBoard();	

	DrawTime();
	DrawGunSight();
	DrawNumBullet();
	DrawNumLife();
	DrawClock();
	DrawEnemyNum();
}
コード例 #2
0
ファイル: log_io.cpp プロジェクト: rauls/iReporter
char *GetLogTypeName( long logType, char *txt )
{
	switch( logType&0xff )
	{
		case LOGFORMAT_COMMON:		mystrcpy( txt, "Common" ); break;
		case LOGFORMAT_NCSA:		mystrcpy( txt, "NCSA Extended" ); break;
		case LOGFORMAT_MACHTTP:		mystrcpy( txt, "Webstar" ); break;
		case LOGFORMAT_PURVEYER:	mystrcpy( txt, "Purveyer" ); break;
		case LOGFORMAT_NETSCAPE:	mystrcpy( txt, "Netscape" ); break;
		case LOGFORMAT_IIS:			mystrcpy( txt, "MS-IIS" ); break;
		case LOGFORMAT_NETCACHE:	mystrcpy( txt, "NetCache NetApp" ); break;
		case LOGFORMAT_WEBSITE:		mystrcpy( txt, "Website" ); break;
		case LOGFORMAT_FILEMAKER:	mystrcpy( txt, "Filemaker" ); break;
		case LOGFORMAT_FIRSTCLASS:	mystrcpy( txt, "FirstClass" ); break;
		case LOGFORMAT_IIS4:		mystrcpy( txt, "W3C" ); break;
		case LOGFORMAT_W3C:			mystrcpy( txt, "W3C" ); break;
		case LOGFORMAT_MSISA:		mystrcpy( txt, "MS-ISA" ); break;
		case LOGFORMAT_WELCOME:		mystrcpy( txt, "Welcome" ); break;
		case LOGFORMAT_HOTLINE:		mystrcpy( txt, "Hotline" ); break;
		case LOGFORMAT_OPENMARKET:	mystrcpy( txt, "OpenMarket" ); break;
		case LOGFORMAT_SENDMAIL:	mystrcpy( txt, "Sendmail" ); break;
		case LOGFORMAT_WUFTPD:		mystrcpy( txt, "Wu.FTPd Server" ); break;
		
		case LOGFORMAT_REALSERVER:  mystrcpy( txt, "RealServer" ); break;
		case LOGFORMAT_QTSS:		mystrcpy( txt, "QTSS" ); break;
		case LOGFORMAT_WINDOWSMEDIA:mystrcpy( txt, "WindowsMedia" ); break;

		case LOGFORMAT_UNIXFTPD:	mystrcpy( txt, "UnixFTP" ); break;
		case LOGFORMAT_HOMEDOOR:	mystrcpy( txt, "HomeDoor" ); break;
		case LOGFORMAT_ZEUS:		mystrcpy( txt, "Zeus" ); break;
		case LOGFORMAT_BOUNCE:		mystrcpy( txt, "Bounce" ); break;
		
		case LOGFORMAT_SQUID:		mystrcpy( txt, "Squid" ); break;
		case LOGFORMAT_IISPROXY:	mystrcpy( txt, "MSproxy" ); break;
		case LOGFORMAT_WSPROXY:		mystrcpy( txt, "WSproxy" ); break;
		case LOGFORMAT_RADIUS:		mystrcpy( txt, "Radius" ); break;
		case LOGFORMAT_CISCO:		mystrcpy( txt, "Cisco" ); break;
		case LOGFORMAT_FIREWALL1:	mystrcpy( txt, "FireWall-1" ); break;
		case LOGFORMAT_RAPTOR:		mystrcpy( txt, "Raptor Firewall" ); break;
		case LOGFORMAT_CUSTOM:		mystrcpy( txt, "Custom" ); break;
		case LOGFORMAT_V4DATABASE:	mystrcpy( txt, "FWA DB" ); break;
		case LOGFORMAT_V5DATABASE:	mystrcpy( txt, "FWA XDB" ); break;
		case LOGFORMAT_UNKNOWN:
		default:
			mystrcpy( txt, "[Unknown]" );
			return txt;
	}
	// Show Virtual Host status inthe log name too 
	if ( IsDebugMode() ){
		if ( logType & FWA_VHOST_LOG_MASK )		strcat( txt, " Vhost" );
	}
	return txt;
}
コード例 #3
0
ファイル: ProjectExportDialog.cpp プロジェクト: HaoDrang/GD
void ProjectExportDialog::OnExportBtClicked(wxCommandEvent& event)
{
    wxDir dir(GetExportDir());
    if (dir.IsOpened() && dir.HasFiles())
    {
        if (wxMessageBox(
            wxString::Format(wxString("The export folder (%s) is not empty: all files in this folder will be erased.\nAre you sure you want to continue?"),
            GetExportDir().c_str()),
            _("The export folder is not empty"), wxYES_NO | wxICON_WARNING) == wxNO)
            return;
    }

    project.SetLastCompilationDirectory(GetExportDir());
    wxConfigBase::Get()->Write("Export/JS platform/LatestExportType", exportChoice->GetSelection());
    wxConfigBase::Get()->Write("Export/JS platform/LatestDebugMode", IsDebugMode());
    EndModal(1);
}
コード例 #4
0
ファイル: enemy.cpp プロジェクト: minamiliu/Time_To_Shoot
//=============================================================================
// 更新処理
//=============================================================================
void UpdateEnemy(float fTimeSpeed)
{
	CAMERA *pCamera = GetCamera();
	PLAYER *pPlayer = GetPlayer();
	int nCountAlive = 0;

	//PrintDebugProc("enemy mark %d\n", g_enemy[0].nSeePFrame);

	for(int nCntEnemy = 0; nCntEnemy < MAX_ENEMY; nCntEnemy++)
	{
		if(g_enemy[nCntEnemy].bUse)
		{
			nCountAlive++;

			{//プレイヤーに気づく判断処理
				if( !HitCheckMeshWall( g_enemy[nCntEnemy].pos, pCamera->posV, NULL, NULL) && pPlayer->bAlive && //壁に遮られたか 
					//HitCheckBall( g_enemy[nCntEnemy].pos, 1000.0f, pCamera->posV, 20.0f) && //一定の距離以内
					HitCheckViewArea( g_enemy[nCntEnemy].pos, pCamera->posV, g_enemy[nCntEnemy].rot, D3DXToRadian( 90.0f) ) && //後ろには見えない
					!IsDebugMode()) //デバッグモードのときに、当たり判定はなし
				{
					if( g_enemy[nCntEnemy].nSeePFrame <= 1000) g_enemy[nCntEnemy].nSeePFrame++;
					if( g_enemy[nCntEnemy].nSeePFrame >= 50)
					{
						g_enemy[nCntEnemy].bSeePlayer = true;

						//プレイヤーを見た時の情報を保存
						if( g_enemy[nCntEnemy].bPatrol)
						{
							//びっくりマークを設定
							SetFlashMessage(MSG_EXCLAMATION);

							g_enemy[nCntEnemy].bPatrol = false;
						
							g_enemy[nCntEnemy].posPatrol = g_enemy[nCntEnemy].pos;
							g_enemy[nCntEnemy].rotPatrol = g_enemy[nCntEnemy].rotTarget;
						}
					}
				}
				else if( HitCheckBall( g_enemy[nCntEnemy].pos, 120.0f, pCamera->posV, 20.0f) ) //一定の距離以内
				{
					if( g_enemy[nCntEnemy].nSeePFrame <= 65535) g_enemy[nCntEnemy].nSeePFrame++;
					if( g_enemy[nCntEnemy].nSeePFrame >= 50)
					{
						g_enemy[nCntEnemy].bSeePlayer = true;

						//プレイヤーを見た時の情報を保存
						if( g_enemy[nCntEnemy].bPatrol)
						{
							g_enemy[nCntEnemy].bPatrol = false;
						
							g_enemy[nCntEnemy].posPatrol = g_enemy[nCntEnemy].pos;
							g_enemy[nCntEnemy].rotPatrol = g_enemy[nCntEnemy].rotTarget;
						}
					}					
				}
				else
				{
					if( g_enemy[nCntEnemy].nSeePFrame > 0)
					{
						g_enemy[nCntEnemy].nSeePFrame--;
					}
					g_enemy[nCntEnemy].bSeePlayer = false;
				}
			}

			//CoolDown
			if( g_enemy[nCntEnemy].nCoolDown > 0)
			{
				g_enemy[nCntEnemy].nCoolDown -= 1 * fTimeSpeed;
				if(g_enemy[nCntEnemy].nCoolDown <= 0)
				{
					g_enemy[nCntEnemy].nCoolDown = -1;
					g_enemy[nCntEnemy].bShot = false;
				}
			}

			//プレイヤーに気づいたら、行動処理
			if( g_enemy[nCntEnemy].bSeePlayer || g_enemy[nCntEnemy].nSeePFrame >= 50)
			{
				if( !g_enemy[nCntEnemy].bEscaping)
				{
					//向き
					g_enemy[nCntEnemy].rotTarget = GetRotationAngle( g_enemy[nCntEnemy].pos, pCamera->posV, g_enemy[nCntEnemy].rot);		
				}

				//弾を発射
				if(!g_enemy[nCntEnemy].bShot)
				{
					//向き
					g_enemy[nCntEnemy].rot = GetRotationAngle( g_enemy[nCntEnemy].pos, pCamera->posV, g_enemy[nCntEnemy].rot);

					if(g_enemy[nCntEnemy].type == ENEMY_RED)
					{
						for(int cnt = 0; cnt < 3; cnt++)
						{
							SetEnemyBullet( g_enemy[nCntEnemy].pos, pCamera->posV + D3DXVECTOR3( rand() % 60 - 30, rand() % 40 - 20, rand() % 60 - 30));
						}

						g_enemy[nCntEnemy].bShot = true;
						g_enemy[nCntEnemy].nCoolDown = COOLDOWN + rand() % 60;
						
						PlaySound(SOUND_LABEL_SE_ESHOT);
					}
					else if(g_enemy[nCntEnemy].type == ENEMY_BLUE)
					{
						SetEnemyBullet( g_enemy[nCntEnemy].pos, pCamera->posV);
						g_enemy[nCntEnemy].bShot = true;
						g_enemy[nCntEnemy].nCoolDown = COOLDOWN/2 + rand() % 60;
						
						PlaySound(SOUND_LABEL_SE_ESHOT);					
					}
					else
					{
						SetEnemyBullet( g_enemy[nCntEnemy].pos, pCamera->posV);
						g_enemy[nCntEnemy].bShot = true;
						g_enemy[nCntEnemy].nCoolDown = COOLDOWN + rand() % 60;
						
						PlaySound(SOUND_LABEL_SE_ESHOT);					
					}

				}

			}
			else
			{
				if( g_enemy[nCntEnemy].bPatrol)
				{
					//nothing
				}
				else
				{
					//パトロールに戻る
					g_enemy[nCntEnemy].rotTarget = GetRotationAngle( g_enemy[nCntEnemy].pos, g_enemy[nCntEnemy].posPatrol, g_enemy[nCntEnemy].rot);
					D3DXVECTOR3 vec = g_enemy[nCntEnemy].pos - g_enemy[nCntEnemy].posPatrol;
					if( D3DXVec3Length( &vec) < VALUE_MOVE)
					{
						g_enemy[nCntEnemy].bPatrol = true;
						g_enemy[nCntEnemy].pos = g_enemy[nCntEnemy].posPatrol;
						g_enemy[nCntEnemy].rotTarget = g_enemy[nCntEnemy].rotPatrol;
					}
				}
			}

			//弾キレ、逃げる処理
			//if( g_enemy[nCntEnemy].bShot && !g_enemy[nCntEnemy].bEscaping)
			//{
			//	float movRot = rand() % 180 - 90;
			//	g_enemy[nCntEnemy].rotTarget.y = g_enemy[nCntEnemy].rot.y + D3DXToRadian(movRot);
			//	if( g_enemy[nCntEnemy].rotTarget.y > D3DX_PI)
			//	{
			//		g_enemy[nCntEnemy].rotTarget.y -= D3DX_PI * 2.0f;
			//	}
			//	g_enemy[nCntEnemy].bEscaping = true;
			//}

			bool bMove = true;
			//プレイヤーに近づき過ぎないように
			D3DXVECTOR3 vec = g_enemy[nCntEnemy].pos - pPlayer->pos;
			if( (D3DXVec3Length(&vec) < 200.0f) && g_enemy[nCntEnemy].bSeePlayer)
			{
				bMove = false;
			}

			{//移動処理


				if( bMove)
				{
					//移動慣性の初期化
					g_enemy[nCntEnemy].move.x = VALUE_MOVE;
					g_enemy[nCntEnemy].move.z = VALUE_MOVE;	

					if(g_enemy[nCntEnemy].type == ENEMY_BLUE)
					{
						g_enemy[nCntEnemy].move.x = 0;
						g_enemy[nCntEnemy].move.z = 0;
					}
				}


				//時計回り、または逆時計回りを決める
				g_enemy[nCntEnemy].rotAngle =  Get2VecRotAngle( g_enemy[nCntEnemy].rot, g_enemy[nCntEnemy].rotTarget, DIVIDE_ROTATE, -1);


				//回転慣性
				g_enemy[nCntEnemy].rotAngle += (-g_enemy[nCntEnemy].rotAngle) * 0.001f;

				//モデルY軸角度修正
				if(g_enemy[nCntEnemy].rot.y > D3DX_PI)
				{
					g_enemy[nCntEnemy].rot.y = g_enemy[nCntEnemy].rot.y - D3DX_PI*2;
				}
				else if(g_enemy[nCntEnemy].rot.y < 0.0f - D3DX_PI)
				{
					g_enemy[nCntEnemy].rot.y = g_enemy[nCntEnemy].rot.y + D3DX_PI*2;
				}

				//次の回転位置に到着したら
				if( fabs(g_enemy[nCntEnemy].rot.y - g_enemy[nCntEnemy].rotTarget.y) < VALUE_ROTATE &&
					fabs(g_enemy[nCntEnemy].rot.x - g_enemy[nCntEnemy].rotTarget.x) < VALUE_ROTATE &&
					fabs(g_enemy[nCntEnemy].rot.z - g_enemy[nCntEnemy].rotTarget.z) < VALUE_ROTATE
					)
				{
					g_enemy[nCntEnemy].rot = g_enemy[nCntEnemy].rotTarget;
					g_enemy[nCntEnemy].rotAngle = D3DXVECTOR3( 0, 0, 0);
				}
				else //次の回転位置にまだ到着してない
				{
					g_enemy[nCntEnemy].rot += g_enemy[nCntEnemy].rotAngle * fTimeSpeed;
				}	

				//回転していない時
				if(g_enemy[nCntEnemy].rotAngle == D3DXVECTOR3( 0, 0, 0))
				{
					//慣性処理
					g_enemy[nCntEnemy].move.x -= g_enemy[nCntEnemy].move.x * 0.05f;
					g_enemy[nCntEnemy].move.z -= g_enemy[nCntEnemy].move.z * 0.05f;

					D3DXVECTOR3 tNextPos = g_enemy[nCntEnemy].pos;
					tNextPos.x += g_enemy[nCntEnemy].move.x * sinf(g_enemy[nCntEnemy].rot.y);
					tNextPos.z += g_enemy[nCntEnemy].move.z * cosf(g_enemy[nCntEnemy].rot.y);

					D3DXVECTOR3 tSphere  = D3DXVECTOR3( 0, 0, 0);
					D3DXVECTOR3 front = tNextPos - g_enemy[nCntEnemy].pos;
					D3DXVec3Normalize( &tSphere, &front);
					tSphere *= MODEL_SPHERE;

					//壁の法線ベクトルを取得変数の初期化
					D3DXVECTOR3 wall_nor = D3DXVECTOR3(0,0,0);

					//Side
					g_enemy[nCntEnemy].posLSide.x = g_enemy[nCntEnemy].pos.x + 15.0f * sinf(g_enemy[nCntEnemy].rotTarget.y + D3DXToRadian(-90.0f));
					g_enemy[nCntEnemy].posLSide.z = g_enemy[nCntEnemy].pos.z + 15.0f * cosf(g_enemy[nCntEnemy].rotTarget.y + D3DXToRadian(-90.0f));

					g_enemy[nCntEnemy].posRSide.x = g_enemy[nCntEnemy].pos.x + 15.0f * sinf(g_enemy[nCntEnemy].rotTarget.y + D3DXToRadian(90.0f));
					g_enemy[nCntEnemy].posRSide.z = g_enemy[nCntEnemy].pos.z + 15.0f * cosf(g_enemy[nCntEnemy].rotTarget.y + D3DXToRadian(90.0f));

					//壁に当たったら
					if( HitCheckMeshWall( g_enemy[nCntEnemy].posLSide, g_enemy[nCntEnemy].posLSide + tSphere, &wall_nor, NULL) ||
						HitCheckMeshWall( g_enemy[nCntEnemy].posRSide, g_enemy[nCntEnemy].posRSide + tSphere, &wall_nor, NULL) )
					{

						if( g_enemy[nCntEnemy].bSeePlayer || !g_enemy[nCntEnemy].bPatrol)
						{
							//壁ずり処理:移動ベクトルを修正
							GetWallScratchVector( &front, front, wall_nor);
				
							D3DXVec3Normalize( &tSphere, &front);
							tSphere *= MODEL_SPHERE;

							if( !HitCheckMeshWall( g_enemy[nCntEnemy].pos, g_enemy[nCntEnemy].pos + tSphere, &wall_nor, NULL) )
							{
								//移動処理
								g_enemy[nCntEnemy].pos += front;
							}
						}
						
						if( g_enemy[nCntEnemy].bPatrol)
						{
							//180反転
							g_enemy[nCntEnemy].rotTarget.y = g_enemy[nCntEnemy].rot.y + D3DXToRadian(180.0f);
							if( g_enemy[nCntEnemy].rotTarget.y > D3DX_PI)
							{
								g_enemy[nCntEnemy].rotTarget.y -= D3DX_PI * 2.0f;
							}	
						}



					}
					else
					{
						//移動処理
						g_enemy[nCntEnemy].pos += front * fTimeSpeed;
					}		

				}			
			}

			//shadow
			SetPositionShadow( g_enemy[nCntEnemy].nIdxShadow, g_enemy[nCntEnemy].pos);

		}
	}

	if( nCountAlive == 0)
	{
		PlaySound( SOUND_LABEL_SE_CLEAR);
		SetGameStep(STEP_CLEAR);
	}

	//PrintDebugProc("\n敵の位置:(X:%f, Y:%f, Z:%f)\n", g_enemy[0].pos.x, g_enemy[0].pos.y, g_enemy[0].pos.z);
	//PrintDebugProc("敵の向き :(X:%f, Y:%f, Z:%f)\n", g_enemy[0].rot.x, D3DXToDegree(g_enemy[0].rot.y), g_enemy[0].rot.z);
	//if( g_enemy[0].bSeePlayer) PrintDebugProc("see Player\n");
	//if( g_enemy[0].bPatrol)PrintDebugProc("patral\n");

}