Exemplo n.º 1
0
void VMVupManager::StartTesting(VMVup* _curVUP, __int64 _startTime)
{
	VMVup* pVup = _curVUP;
	D_CHECK(pVup);
	__int64 nowms = _startTime;

	UDP_PACK pack;
	pack.m_uiType = EPT_M2C_StartTesting;
	pack.m_unValue.m_StartTestingParam.m_uiBurstTime = nowms;

#ifndef USE_UDT_LIB
	m_pSendSocket->SetAddress(pVup->GetIPAddress(), pVup->GetPort());
	m_pSendSocket->SendTo((const Char*)&pack, sizeof(UDP_PACK));
#else
	s32 iRet = UDT::sendmsg(pVup->GetClientSocket(), (const Char*)&pack, sizeof(UDP_PACK));
	if(iRet == UDT::ERROR)
	{
		LOG_INFO("[ERROR] sendmsg failed: %s\n", UDT::getlasterror().getErrorMessage());
		return;
	}
	else
	{
		if(iRet != sizeof(UDP_PACK))
		{
			LOG_INFO("[ERROR] send start testing to %d(%s:%d) failed\n", _curVUP->GetUniqueID(), _curVUP->GetIPAddress(), _curVUP->GetPort());
		}
		else
		{
			LOG_INFO("send start testing to %d(%s:%d) successfully\n", _curVUP->GetUniqueID(), _curVUP->GetIPAddress(), _curVUP->GetPort());
		}
		return;
	}
#endif
}
Exemplo n.º 2
0
//----------------------------------------------------------------------------------------------------------------
void VMVupManager::AddClientSocket(UDTSOCKET _pNewSocket)
{
	D_CHECK(_pNewSocket != UDT::ERROR);
	std::vector<UDTSOCKET>& pClientArray = m_pClientSockets.RetrieveContrainer();
	pClientArray.push_back(_pNewSocket);
	m_pClientSockets.ReleaseContrainer();
}
Exemplo n.º 3
0
	void WinDxRenderer::SetLight(u32 p_uiIdx, const Light& p_Light)
	{
		D_CHECK(m_poMainD3DDevice);
		D3DLIGHT9 l_Light;
		memset(&l_Light, 0, sizeof(l_Light));
		switch(p_Light.m_uiType)
		{
		case E_LightType_Spot:
			l_Light.Type = D3DLIGHT_SPOT;
			break;
		case E_LightType_Point:
			l_Light.Type = D3DLIGHT_POINT;
			break;
		}
		l_Light.Ambient		= WinDxMapping::MappingColor(p_Light.m_Ambient);
		l_Light.Diffuse		= WinDxMapping::MappingColor(p_Light.m_Diffuse);
		l_Light.Specular	= WinDxMapping::MappingColor(p_Light.m_Specular);
		l_Light.Position	= D3DXVECTOR3(p_Light.m_vPosition.x, p_Light.m_vPosition.y, p_Light.m_vPosition.z);
		l_Light.Direction	= D3DXVECTOR3(p_Light.m_vDirection.x, p_Light.m_vDirection.y, p_Light.m_vDirection.z);
		l_Light.Range		= p_Light.m_fRange;
		l_Light.Falloff		= p_Light.m_fFalloff;
		l_Light.Attenuation0= p_Light.m_fAttenuation[0];
		l_Light.Attenuation1= p_Light.m_fAttenuation[1];
		l_Light.Attenuation2= p_Light.m_fAttenuation[2];
		l_Light.Theta		= p_Light.m_fTheta;
		l_Light.Phi			= p_Light.m_fPhi;

		m_poMainD3DDevice->SetLight(p_uiIdx, &l_Light);
		m_poMainD3DDevice->LightEnable(p_uiIdx, true);
	}
Exemplo n.º 4
0
void FEEditorCanvas::Export(File* _pFile, u32 pitchType, u32 teamState, u32 position)
{
	D_CHECK(_pFile->IsValid());

	ElementPairMapIterator it = m_Elements.begin();
	while(it != m_Elements.end())
	{
		std::stringstream ss;
		ss << "FormationStaticDatabase.AddFormationPoint(";
		if(pitchType == FormationEditor::EPitchType_Normal)
			ss << "EFormationPitchType.EPitchType_Normal,";
		else
			ss << "EFormationPitchType.EPitchType_Large,";
		if(teamState == FormationEditor::ETeamState_Attack)
			ss << "EFormationTeamState.ETeamState_Attack,";
		else
			ss << "EFormationTeamState.ETeamState_Defend,";
		ss << position << ",";

		ElementPair* ePair = (*it).second;
		Vec3 refPos = ePair->m_RefElement->GetPosition();
		Vec3 formationPos = ePair->m_FormationElement->GetPosition();

		ss << "Vector3(" << refPos.x << "," << refPos.y << "," << refPos.z << "),";
		ss << "Vector3(" << formationPos.x << "," << formationPos.y << "," << formationPos.z << "));\r\n";

		_pFile->Write(ss.str().c_str(), ss.str().length());

		++it;
	}
}
Exemplo n.º 5
0
void FEPlayer::Deserialize(TiXmlDocument* _poXmlDoc, TiXmlElement* _poParent)
{
	TiXmlElement* poElement = _poParent->FirstChildElement("Player");
	if(poElement)
	{
		int isMovable, isDeletable;
		poElement->QueryIntAttribute("is_movable", &isMovable);
		poElement->QueryIntAttribute("is_deletable", &isDeletable);
		if(isMovable)
			AddFlags(EFEFlag_Movable);
		else
			RemoveFlags(EFEFlag_Movable);

		if(isDeletable)
			AddFlags(EFEFlag_Deletable);
		else
			RemoveFlags(EFEFlag_Deletable);

		TiXmlElement* poPosElement = poElement->FirstChildElement("Position");
		D_CHECK(poPosElement);

		double x, y;
		poPosElement->QueryDoubleAttribute("x", &x);
		poPosElement->QueryDoubleAttribute("y", &y);
		SetPosition(Vec3(x, y, 0.f));
		SetColor(GetColor(m_id));
	}
}
Exemplo n.º 6
0
Bool FormationEditor::StopRealGame()
{
	D_CHECK(IsInRealGame());
	m_RealGameCanvas->Stop();
	m_Mode = EEditorMode_Edit;
	m_SimulatedRefCanvas = NULL;

	return true;
}
Exemplo n.º 7
0
	Bool WinDxRenderer::BeginFrame()
	{
		D_CHECK(m_poMainD3DDevice);
		//Clear(D_Color(200, 200, 200), E_ClearFlagTarget | E_ClearFlagZBuffer);

		//m_poMainD3DDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);

		return SUCCEEDED(m_poMainD3DDevice->BeginScene());
	}
Exemplo n.º 8
0
	void WinDxRenderer::Clear(const D_Color& p_Color, u32 p_uiClearFlag)
	{
		D_CHECK(m_poMainD3DDevice);
		if(FAILED(m_poMainD3DDevice->Clear(0, NULL,
			WinDxMapping::MappingClearFlag(p_uiClearFlag),
			WinDxMapping::MappingColor(p_Color),
			1.f, 0)))
				D_FatalError("Clear Failed");
	}
Exemplo n.º 9
0
	void WinDxRenderer::SetProjectionMatrix(const Mat4 &p_ProjectionMatrix)
	{
		D_CHECK(m_poMainD3DDevice);

		D3DXMATRIX l_ProjectionMatrix = WinDxMapping::MappingMat4(p_ProjectionMatrix);
		HRESULT hr;
		if(FAILED( hr = m_poMainD3DDevice->SetTransform(D3DTS_PROJECTION, &l_ProjectionMatrix) ))
			D_FatalError("Cannot set Projection Matrix");
	}
Exemplo n.º 10
0
	void WinDxRenderer::SetViewMatrix(const Mat4 &p_ViewMat)
	{
		D_CHECK(m_poMainD3DDevice);

		D3DXMATRIX l_ViewMat = WinDxMapping::MappingMat4(p_ViewMat);
		HRESULT hr;
		if(FAILED( hr = m_poMainD3DDevice->SetTransform(D3DTS_VIEW, &l_ViewMat) ))
			D_FatalError("Cannot set View Matrix");
	}
Exemplo n.º 11
0
u32 WorkingRunner::Run()
{
	VMThreadSafeContainer<std::vector<UDTSOCKET>>& clientSocketContainer = m_pMan->GetClientSocket(); 
	std::vector<UDTSOCKET>* rfds = NULL, *efds = NULL;
	rfds = new std::vector<UDTSOCKET>;
	efds = new std::vector<UDTSOCKET>;
	while(!m_bRequestStop)
	{
		std::vector<UDTSOCKET>& clientSocket = clientSocketContainer.RetrieveContrainer();
		s32 iRet = UDT::selectEx(clientSocket, rfds, NULL, efds, 0);
		clientSocketContainer.ReleaseContrainer();
		
		if(iRet == UDT::ERROR)
		{
			LOG_INFO("selectEx failed: %s\n", UDT::getlasterror().getErrorMessage());
			return 1;
		}
		else if(iRet == 0)
		{
			::Sleep(10);
		}
		else if(iRet > 0)
		{
			//Handle rfds
			UDP_PACKWrapper recvPacket;
			std::vector<UDTSOCKET>::const_iterator itRead = rfds->begin();
			for(itRead = rfds->begin(); itRead != rfds->end(); ++itRead)
			{
				UDTSOCKET readSocket = *itRead;
				D_CHECK(readSocket != UDT::INVALID_SOCK);
				s32 iRecv = UDT::recvmsg(readSocket, (char*)&recvPacket.m_InnerData, sizeof(UDP_PACK));
				if(iRecv == UDT::ERROR)
				{
					LOG_INFO("recvmsg failed(%d): %s\n", readSocket, UDT::getlasterror().getErrorMessage());
					continue;
				}
				recvPacket.m_ClientSocket = readSocket;
				m_pUDPPackBuffer->InsertUDPData(recvPacket);
			}
			//Handle efds
			std::vector<UDTSOCKET>::const_iterator itExpect = efds->begin();
			for(itExpect = efds->begin(); itExpect != efds->end(); ++itExpect)
			{
				UDTSOCKET expectSocket = *itExpect;
				recvPacket.m_ClientSocket = expectSocket;
				recvPacket.m_InnerData.m_uiType = EPT_C2M_LostConnection;
				m_pUDPPackBuffer->InsertUDPData(recvPacket);
				//m_pMan->LostConnection(expectSocket);
			}
		}
	}
	//TJQ: crash if clean up these vector, don't know why
	//delete rfds;
	//delete efds;
	return 0;
}
Exemplo n.º 12
0
//#pragma optimize("", off)
void VMVupManager::_UpdateRDVPoint()
{
	RDVPointListIterator it = m_poRDVList.begin();
	while(it != m_poRDVList.end())
	{
		RDVPointInfo& info = (*it).second;
		D_CHECK(info.m_RunningInfo.IsValid());
		f32 fNow = GameEngine::GetGameEngine()->GetClockMod()->GetTotalElapsedSeconds();
		if(info.m_RunningInfo.m_ClientList.size() >= info.m_uiExpectedNum ||
			fNow - info.m_RunningInfo.m_fStartTime >= (f32)info.m_uiTimeOut)
		{
			//Default value
			s32 iDelayOfStartTime = 5000;
			s32 iIntervalOfEachGroup = 0;
			s32 iMaxGroupNum = 1;
			s32 iRunningID = info.m_RunningInfo.m_uiCurrentRunningID;
			RDVPointParameterListIterator itRDVPointParam = m_poRDVParam.find(Protocal::GetRDVPointID(Protocal::GetRDVPointMajor(iRunningID), 0));
			if(itRDVPointParam != m_poRDVParam.end())
			{
				RDVPointParameter& param = (*itRDVPointParam).second;
				iDelayOfStartTime = param.m_iDelayOfStartTime;
				iIntervalOfEachGroup = param.m_iIntervalOfEachGroup;
				iMaxGroupNum = param.m_iGroupNum;
			}
			struct __timeb64 timebuffer;
			_ftime64(&timebuffer);
			__int64 curTime = timebuffer.time * 1000 + timebuffer.millitm;

			for(s32 i = 0; i < info.m_RunningInfo.m_ClientList.size(); ++i)
			{
				VMVup* pVup = FindVup(info.m_RunningInfo.m_ClientList[i]);
				if(!pVup)
					continue;
				if(pVup->GetGroup() >= 0)
				{
					StartTesting(pVup, curTime + iDelayOfStartTime + pVup->GetGroup() * iIntervalOfEachGroup);
				}
			}
			for(s32 i = 0; i < iMaxGroupNum; ++i)
			{
				__int64 nowms = curTime + iDelayOfStartTime + i * iIntervalOfEachGroup;
				__int64 nows = nowms / 1000;
				char timeline[26];
				ctime_s(timeline, 26, &(nows));
				LOG_INFO("RDVPoint(%d,%d)..Group(%d)..Time of starting test: %.19s.%03hu\n", 
					Protocal::GetRDVPointMajor(iRunningID), Protocal::GetRDVPointMinor(iRunningID), i, timeline, nowms % 1000);
			}
			VMSummary::GetPtr()->RemoveRDVPoint(Protocal::GetRDVPointMajor(iRunningID), Protocal::GetRDVPointMinor(iRunningID));
			it = m_poRDVList.erase(it);
		}
		else
		{
			++it;
		}
	}
}	
Exemplo n.º 13
0
bool FormationEditor::StopSimulation()
{
	D_CHECK(IsSimulating());

	m_SimulatedCanvas->Stop();
	m_Mode = EEditorMode_Edit;
	m_SimulatedRefCanvas = NULL;

	return true;
}
Exemplo n.º 14
0
	ClockModule::ClockModule()
		:m_uiFrameElapsedTicks(0)
		,m_uiTotalElapsedTicks(0)
		,m_fFrameElapsedSeconds(0.f)
		,m_fTotalElapsedSeconds(0.f)
		,m_uiCurrentTicks(0)
		,m_iStartFrameTicks(0)
		,m_iRateLock(-1)
	{
		m_poTick = CallCreator<Tick>(E_CreatorType_Tick);
		D_CHECK(m_poTick);

		m_uiLastTicks = m_poTick->GetTick();
	}
Exemplo n.º 15
0
	void WinDxRenderer::InitRender(u32 p_uiWidth, u32 p_uiHeight, const Char* p_strTitle, Bool p_bIsWindowed, void* p_poOuter)
	{
		WinDxRenderWindow *l_poMainWindow = new WinDxRenderWindow;
		D_CHECK(l_poMainWindow);

		l_poMainWindow->InitWindow(p_uiWidth, p_uiHeight, p_strTitle, p_bIsWindowed, p_poOuter);

		m_poMainWindow = l_poMainWindow;
		m_poMainD3DDevice = l_poMainWindow->GetDevice()->GetD3DDevice();
		m_poMainHwnd = l_poMainWindow->GetHWND();

		m_qRotationFromGUI = Quat::IDENTITY;
		m_vTranslationFromGUI = Vec3::ZERO;
		m_fZoomFromGUI = 1.f;
	}
Exemplo n.º 16
0
void FEEditorCanvas::Delete()
{
	if(m_SelectedElement)
	{
		if(m_SelectedElement->HasFlags(EFEFlag_Deletable))
		{
			ElementPairMapIterator it = m_Elements.find(m_SelectedElement->GetID());
			D_CHECK(it != m_Elements.end())
			ElementPair* pPair = (*it).second;
			delete pPair->m_RefElement;
			delete pPair->m_FormationElement;
			delete pPair;
			m_Elements.erase(it);

			m_SelectedElement = NULL;
		}
	}
}
Exemplo n.º 17
0
	void WinDxRenderer::SetWorldMatrix(const Mat4 &p_WorldMat)
	{
		D_CHECK(m_poMainD3DDevice);
		
		/*Mat4 mRotFromGUI;
		mRotFromGUI.Rotation(m_qRotationFromGUI);
		Mat4 mTrans = p_WorldMat;

		Vec3 v = m_vTranslationFromGUI;
		mTrans.Translation(v.x, v.y, v.z);
		
		mTrans = mTrans * mRotFromGUI;*/

		D3DXMATRIX l_WorldMat = WinDxMapping::MappingMat4(p_WorldMat);
		HRESULT hr;
		if(FAILED( hr = m_poMainD3DDevice->SetTransform(D3DTS_WORLD, &l_WorldMat) ))
			D_FatalError("Cannot set World Matrix");
	}
Exemplo n.º 18
0
int main(int argc, char* argv[])
#endif
{
#if PLATFORM_TYPE == PLATFORM_WIN32
	::SetPriorityClass(::GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
#endif
	
	TsiULibSettings libSettings;

	InitLibSettings(&libSettings);

#if PLATFORM_TYPE == PLATFORM_WIN32
	libSettings.SetupCreator(new T_Creator<WinPanic>,				E_CreatorType_Panic);
	libSettings.SetupCreator(new T_Creator<WinTick>,				E_CreatorType_Tick);
	libSettings.SetupCreator(new T_Creator<WinGDIRenderWindow>,		E_CreatorType_RenderWindow);
	libSettings.SetupCreator(new T_Creator<WinGDIRenderer>,			E_CreatorType_Renderer);
	libSettings.SetupCreator(new T_Creator<WinRenderGUIWindowMsg>,	E_CreatorType_RenderWindowMsg);
	libSettings.SetupCreator(new T_Creator<WinInputManager>,		E_CreatorType_Input);
	libSettings.SetupCreator(new T_Creator<DefaultFile>,			E_CreatorType_File);
#endif
	libSettings.DefineMacro(E_LS_Has_GUI);

#ifndef USE_UDT_LIB
	libSettings.DefineMacro(E_LS_Has_Network);
#endif

	g_poEngine = new GameEngine(1140, 800, "VUP Manager (Ver.Beta 0.8.1)", false);

	D_CHECK(g_poEngine);

	if(!g_poEngine->Init())
		D_FatalError("Init Scene Error");

	g_poEngine->MainLoop();

	if(!g_poEngine->UnInit())
		D_FatalError("UnInit Scene Error");

	D_SafeDelete(g_poEngine);

	UninitLibSettings(&libSettings);

	return 0;
}
Exemplo n.º 19
0
void FormationEditor::Export(File* pFile)
{
	D_CHECK(pFile->IsValid());
	
	Char start[] = "do\r\n";
	pFile->Write(start, strlen(start));

	for(s32 i = 0; i < EPitchType_Num; ++i)
	{
		for(s32 j = 0; j < ETeamState_Num; ++j)
		{
			for(s32 k = 0; k < kMaxPositionCount; ++k)
			{
				m_Canvases[i][j][k]->Export(pFile, i, j, k);
			}
		}
	}
	Char end[] = "end\r\n";
	pFile->Write(end, strlen(end));
}
Exemplo n.º 20
0
int main(int argc, char* argv[])
#endif
{
#if PLATFORM_TYPE == PLATFORM_WIN32
	::SetPriorityClass(::GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
#endif

	TsiULibSettings libSettings;

	InitLibSettings(&libSettings);

#if PLATFORM_TYPE == PLATFORM_WIN32
	libSettings.SetupCreator(new T_Creator<WinPanic>, E_CreatorType_Panic);
	libSettings.SetupCreator(new T_Creator<WinTick>, E_CreatorType_Tick);
	libSettings.SetupCreator(new T_Creator<WinGDIRenderWindow>, E_CreatorType_RenderWindow);
	libSettings.SetupCreator(new T_Creator<WinGDIRenderer>, E_CreatorType_Renderer);
	libSettings.SetupCreator(new T_Creator<WinRenderGUIWindowMsg>, E_CreatorType_RenderWindowMsg);
	libSettings.SetupCreator(new T_Creator<WinInputManager>, E_CreatorType_Input);
	libSettings.SetupCreator(new T_Creator<DefaultFile>, E_CreatorType_File);
#endif
	libSettings.DefineMacro(E_LS_Has_GDI);
	libSettings.DefineMacro(E_LS_Has_GUI);

	g_poEngine = new MyEngine(g_WindowWidth, g_WindowHeight, "SoccerDebugger(SSO version) V2.5", g_bIsAlwaysOnTop);

	D_CHECK(g_poEngine);

	if(!g_poEngine->Init())
		D_FatalError("Init Scene Error");

	g_poEngine->MainLoop();

	if(!g_poEngine->UnInit())
		D_FatalError("UnInit Scene Error");

	D_SafeDelete(g_poEngine);

	UninitLibSettings(&libSettings);

	return 0;
}
Exemplo n.º 21
0
Bool FormationEditor::StartRealGame(const RealGameInfo& rgInfo)
{
	D_CHECK(IsEditor());
	m_Mode = EEditorMode_RealGame;
	m_RealGameCanvas->Setup(rgInfo);

	int nextIdx = 0;
	for(int i = 0; i < 10; ++i)
	{
		if(rgInfo.m_Player[i].m_HasValidData)
		{
			if(rgInfo.m_Player[i].m_Team == kHOME_TEAM)
			{
				m_RefPlayerPositionInTB[nextIdx++] = rgInfo.m_Player[i].m_Pos;
			}
		}
	}
	for(int i = 0; i < 10; ++i)
	{
		if(rgInfo.m_Player[i].m_HasValidData)
		{
			if(rgInfo.m_Player[i].m_Team == kAWAY_TEAM)
			{
				m_RefPlayerPositionInTB[nextIdx++] = rgInfo.m_Player[i].m_Pos;
			}
		}
	}

	if(!rgInfo.m_IsLargePitch)
	{
		CoordinateInfo::sLength = kPithLenghNormal;
		CoordinateInfo::sWidth = kPitchWidthNormal;
	}
	else
	{
		CoordinateInfo::sLength = kPithLenghLarge;
		CoordinateInfo::sWidth = kPitchWidthLarge;
	}
	return true;
}
Exemplo n.º 22
0
	Bool Thread::Start()
	{
		if(HasStarted())
		{
			D_Output("Thread has started\n");
			return false;
		}
		else
		{
			_Free();

#if PLATFORM_TYPE == PLATFORM_WIN32			
			DWORD threadId;
			m_pThreadID = ::CreateThread(0, 0, ThreadProc, this, 0, &threadId);
			if(m_pThreadID == NULL)
			{
				D_CHECK(0);
				return false;
			}
			::SetThreadPriority(m_pThreadID, sThreadPriorities[m_ePriority]);
#endif
		}
		return true;
	}
Exemplo n.º 23
0
	unsigned long __stdcall Thread::ThreadProc(void* ptr)
	{
		D_CHECK(ptr);
		Thread* pThread = static_cast<Thread*>(ptr);
		return pThread->_Run();
	}
Exemplo n.º 24
0
void VMVupManager::Create()
{
	if(!_InitParameter())
	{
		LOG_INFO("read configuration file failed\n");
		return;
	}
	else
	{
		LOG_INFO("read configuration successfully\n");
	}

	//Init recving packet pool
	m_pUDPPackBuffer = new MemPool<UDP_PACKWrapper>();
	m_pUDPPackBuffer->SetMaxSize(1000);

	//Init watched value
	//m_WatchedInfo.Init();

#ifndef USE_UDT_LIB
	//Init network
	m_pRecvSocket = new WinSocket;
	s32 iRet = m_pRecvSocket->Create(E_NETWORK_PROTO_UDP, false);
	D_CHECK(!iRet);
	iRet = m_pRecvSocket->SetAddress(NULL, m_uiServerPort);
	D_CHECK(!iRet);
	iRet = m_pRecvSocket->Bind();
	D_CHECK(!iRet);

	m_pSendSocket = new WinSocket;
	iRet = m_pSendSocket->Create(E_NETWORK_PROTO_UDP, false);
	D_CHECK(!iRet);
	//iRet = m_pSendSocket->SetAddress(NULL, 52346);
	//D_CHECK(!iRet);

	//Init recv thread
	m_pRecvThread = new Thread(new RecvUDPRunner(m_pRecvSocket, m_pUDPPackBuffer));
	Bool bRet = m_pRecvThread->Start();
	D_CHECK(bRet);
	Refresh();
#else
	m_ListeningThread = new Thread(new ListeningRunner(this, m_uiServerPort));
	Bool bRet = m_ListeningThread->Start();
	D_CHECK(bRet);

	m_WorkingThread = new Thread(new WorkingRunner(this, m_pUDPPackBuffer));
	bRet = m_WorkingThread->Start();
	D_CHECK(bRet);

	m_TransferLoggerThread = new Thread(new TransferLogger(m_uiServerTransferLogPort));
	bRet = m_TransferLoggerThread->Start();
	D_CHECK(bRet);
#endif

	GameEngine::GetGameEngine()->GetEventMod()->RegisterHandler(
		(EventType_t)(E_ET_AgentLeave), 
		new MEventHandler<VMVupManager>(this, &VMVupManager::onAgentLeave));

	GameEngine::GetGameEngine()->GetEventMod()->RegisterHandler(
		(EventType_t)(E_ET_VUPInfoUpdate), 
		new MEventHandler<VMVupManager>(this, &VMVupManager::onVUPInfoChange));
}
Exemplo n.º 25
0
bool FormationEditor::StartSimulation(const FESimulatedCanvas::SimulatedSettings& setup)
{	
	D_CHECK(IsEditor());

	if(!setup.m_AwayPlayerPosition.Size() && !setup.m_HomePlayerPosition.Size())
		return false;

	std::string fullPath = setup.m_RootDir + "\\Media\\scripts\\ai\\formationsimulation.lua";
	File* pLuaFile = FileManager::Get().OpenFile(fullPath.c_str(), E_FOM_Write | E_FOM_Text);
	if(!pLuaFile)
		return false;

	std::stringstream ss;

	ss <<	"DefaultMatchSetup()"																								<< "\r\n";
	
	ss <<	"package.path = \"scripts:/?.lua\""																					<< "\r\n";
	ss <<	"require \"MiniGameSharedFunctions\""																				<< "\r\n";
	
	ss <<	"MatchSetup['Init'] = function(newGame)"																			<< "\r\n";
	ss <<		"\tgameId = newGame.CreateGame();"																				<< "\r\n";

	if(setup.m_PitchType == EPitchType_Normal)
		ss <<	"\tnewGame.AddPitch(\"Street_SH_Night_01\");"																	<< "\r\n";
	else
		ss <<	"\tnewGame.AddPitch(\"stadium_BJ_60_40\");"																		<< "\r\n";
	ss <<		"\tnewGame.AddBall(\"CommonObjects\");"																			<< "\r\n";
	for(int i = 0; i < setup.m_HomePlayerPosition.Size(); ++i)
	{
		m_RefPlayerPositionInTB[i] = setup.m_HomePlayerPosition[i];

		ss <<	"\tMatchSetup.player" << i + 1 << " = newGame.AddPlayer('SM_M_Vs_Red', ETeam.ETeam_HOME);"						<< "\r\n";
	}
	for(int i = 0; i < setup.m_AwayPlayerPosition.Size(); ++i)
	{
		m_RefPlayerPositionInTB[i + setup.m_HomePlayerPosition.Size()] = setup.m_AwayPlayerPosition[i];

		ss <<	"\tMatchSetup.player" << i + 1 + setup.m_HomePlayerPosition.Size() 
									  << " = newGame.AddPlayer('SM_M_Vs_Blue', ETeam.ETeam_AWAY);"								<< "\r\n";
	}
	ss <<		"\tnewGame.SetHasNoHumanPlayer(ETeam.ETeam_HOME);"																<< "\r\n";	
	ss <<		"\tnewGame.SetHasNoHumanPlayer(ETeam.ETeam_AWAY);"																<< "\r\n";	
	ss <<		"\tnewGame.SetHasNoGoalkeeper(ETeam.ETeam_HOME);"																<< "\r\n";	
	ss <<		"\tnewGame.SetHasNoGoalkeeper(ETeam.ETeam_AWAY);"																<< "\r\n";	
	ss <<		"\tnewGame.RunGame(gameId)"																						<< "\r\n";	
	ss <<	"end"																												<< "\r\n";	

	ss <<	"MatchSetup['Setup'] = function(newGame)"																			<< "\r\n";	
	ss <<		"\tnewGame.SetInputMode(InputMode.Normal);"																		<< "\r\n";	
	for(int i = 0; i < setup.m_HomePlayerPosition.Size(); ++i)
	{
		ss <<	"\tGameLogic.ClearPlayerAI( MatchSetup.player" << i + 1 << " )"													<< "\r\n";	
		ss <<	"\tGameLogic.AddBehaviourModule(MatchSetup.player" << i + 1
		   <<	", EBehaviourModule.EBehaviourModule_IDLE);"																	<< "\r\n";
		ss <<	"\tGameLogic.AddBehaviourModule(MatchSetup.player" << i + 1
		   <<	", EBehaviourModule.EBehaviourModule_NEWAI_ATTACK_BASICFORMATION);"												<< "\r\n";
		ss <<	"\tGameLogic.AddBehaviourModule(MatchSetup.player" << i + 1
		   <<	", EBehaviourModule.EBehaviourModule_NEWAI_DEFEND_BASICFORMATION);"												<< "\r\n";
	}
	for(int i = 0; i < setup.m_AwayPlayerPosition.Size(); ++i)
	{
		ss <<	"\tGameLogic.ClearPlayerAI( MatchSetup.player" << i + 1 + setup.m_HomePlayerPosition.Size() << " )"				<< "\r\n";	
		ss <<	"\tGameLogic.AddBehaviourModule(MatchSetup.player" << i + 1 + setup.m_HomePlayerPosition.Size()
		   <<	", EBehaviourModule.EBehaviourModule_IDLE);"																	<< "\r\n";
		ss <<	"\tGameLogic.AddBehaviourModule(MatchSetup.player" << i + 1 + setup.m_HomePlayerPosition.Size()
		   <<	", EBehaviourModule.EBehaviourModule_NEWAI_ATTACK_BASICFORMATION);"												<< "\r\n";
		ss <<	"\tGameLogic.AddBehaviourModule(MatchSetup.player" << i + 1 + setup.m_HomePlayerPosition.Size()
		   <<	", EBehaviourModule.EBehaviourModule_NEWAI_DEFEND_BASICFORMATION);"												<< "\r\n";
	}
	ss <<		"\tSequenceManager.PlaySequence( \"Camera.Side\" );"															<< "\r\n";	
	ss <<		"\tSequenceManager.PlaySequence( \"Game.SinglePlayer\");"														<< "\r\n";	
	ss <<	"end"																												<< "\r\n";	

	ss <<	"MatchSetup['Reset'] = function(newGame)"																			<< "\r\n";	
	ss <<		"\tGameLogic.ReinitializeBallAtEx( -5.5, 0, 0 );"																<< "\r\n";	
	ss <<		"\tGameLogic.ReinitializeBallState(ERequestBallState.ERequestBallState_FREE, MatchSetup.player1);"				<< "\r\n";
	ss <<	"end"																												<< "\r\n";

	Bool isOk = pLuaFile->Write(ss.str().c_str(), ss.str().length());
	if(!isOk)
	{
		FileManager::Get().CloseFile(pLuaFile);
		return false;
	}

	std::stringstream ss2;

	std::string fullPathStartupFile = setup.m_RootDir + "\\Media\\scripts\\ui_configuration.lua";
	File* pStartupFile = FileManager::Get().OpenFile(fullPathStartupFile.c_str(), E_FOM_Write | E_FOM_Text);
	if(!pStartupFile)
		return false;

	ss2 <<	"do"																																			<< "\r\n";
	ss2 <<		"\tGameControl.skip_menu = true;"																											<< "\r\n";
	ss2 <<		"\tGameControl.set_startup_by_lua (\"Media/Scripts/ai/formationsimulation.lua\", GameType.GameType_MINIGAME);"	<< "\r\n";
	ss2 <<	"end"																																			<< "\r\n";

	isOk = pStartupFile->Write(ss2.str().c_str(), ss2.str().length());
	if(!isOk)
	{
		FileManager::Get().CloseFile(pStartupFile);
		FileManager::Get().CloseFile(pLuaFile);
		return false;
	}

	FileManager::Get().CloseFile(pStartupFile);
	FileManager::Get().CloseFile(pLuaFile);

	if(setup.m_PitchType == EPitchType_Normal)
	{
		CoordinateInfo::sLength = kPithLenghNormal;
		CoordinateInfo::sWidth = kPitchWidthNormal;
	}
	else
	{
		CoordinateInfo::sLength = kPithLenghLarge;
		CoordinateInfo::sWidth = kPitchWidthLarge;
	}
	m_IsHomeAttacking = (setup.m_TeamState == ETeamState_Attack);

	m_Mode = EEditorMode_Simulation;
	m_SimulatedCanvas->Setup(setup);

	return true;
}
Exemplo n.º 26
0
	void WinDxRenderer::EndFrame()
	{
		D_CHECK(m_poMainD3DDevice);
		m_poMainD3DDevice->EndScene();
	}
Exemplo n.º 27
0
	void WinDxRenderer::Flip()
	{
		D_CHECK(m_poMainD3DDevice);
		m_poMainD3DDevice->Present(NULL, NULL, NULL, NULL);
	}
Exemplo n.º 28
0
 void TArithRRNode::markAllocated(fint* use_count, fint* def_count) {
   U_CHECK(_src); D_CHECK(_dest); 
   U_CHECK(oper); 
 }
Exemplo n.º 29
0
//#pragma optimize("", off)
void VMVupManager::_HandleUdpPack()
{
	s32 iSize = m_pUDPPackBuffer->GetSize();
	if(iSize != 0)
	{
		UDP_PACKWrapper *poPacArray = new UDP_PACKWrapper[iSize];
		m_pUDPPackBuffer->GetUDPData(poPacArray, iSize);
		for(s32 i = 0; i < iSize; ++i)
		{
			UDP_PACKWrapper *poPackWrapper = poPacArray + i;
			UDP_PACK* poPack = &(poPackWrapper->m_InnerData);
			switch(poPack->m_uiType)
			{
			case EPT_C2M_LostConnection:
				{
					LostConnection(poPackWrapper->m_ClientSocket);
				}
				break;
			case EPT_C2M_ClientRegister:
				{
#ifndef USE_UDT_LIB
					Char cmd[VMCommand::kMaxCommandLength];
					sprintf(cmd, "addvup %d %s %d",	poPack->m_unValue.m_ClientRegisterParam.m_uiPassPort,
													poPackWrapper->m_SrcIPAddress.c_str(),
													poPack->m_unValue.m_ClientRegisterParam.m_uiPort);
					VMCommandCenter::GetPtr()->ExecuteFromString(cmd);

					sprintf(cmd, "updatevup %d -rs %d -tp %d",	poPack->m_unValue.m_ClientRegisterParam.m_uiPassPort,
															    poPack->m_unValue.m_ClientRegisterParam.m_uiStatus,
																poPack->m_unValue.m_ClientRegisterParam.m_uiTestPhase);
					VMCommandCenter::GetPtr()->ExecuteFromString(cmd);

					UDP_PACK pack;
					pack.m_uiType = EPT_M2C_ClientRegisterACK;
					m_pSendSocket->SetAddress(poPackWrapper->m_SrcIPAddress.c_str(), poPack->m_unValue.m_ClientRegisterParam.m_uiPort);
					m_pSendSocket->SendTo((const Char*)&pack, sizeof(UDP_PACK));
#else
					UDTSOCKET curSocket = poPackWrapper->m_ClientSocket;
					VMVup* pVup = FindVupBySocket(curSocket);
					if(pVup)
					{
						pVup->SetUniqueID(poPack->m_unValue.m_ClientRegisterParam.m_uiPassPort);
						pVup->SetStatus(poPack->m_unValue.m_ClientRegisterParam.m_uiStatus);
						pVup->SetTestPhase(poPack->m_unValue.m_ClientRegisterParam.m_uiTestPhase);

						LOG_INFO("get registered info from: %d(%s:%d)\n", pVup->GetUniqueID(), pVup->GetIPAddress(), pVup->GetPort());

						Bool isOk = AddVup(pVup);

						UDP_PACK pack;
						pack.m_uiType = EPT_M2C_ClientRegisterACK;
						if(isOk)
						{
							pack.m_unValue.m_RegisterAckParam.m_uiHasSuccessed = true;
							s32 iRet = UDT::sendmsg(pVup->GetClientSocket(), (const Char*)&pack, sizeof(UDP_PACK));
							if(iRet == UDT::ERROR)
							{
								LOG_INFO("[ERROR] sendmsg failed: %s\n", UDT::getlasterror().getErrorMessage());
							}
						}
						else
						{
							pack.m_unValue.m_RegisterAckParam.m_uiHasSuccessed = false;
							s32 iRet = UDT::sendmsg(pVup->GetClientSocket(), (const Char*)&pack, sizeof(UDP_PACK));
							if(iRet == UDT::ERROR)
							{
								LOG_INFO("[ERROR] sendmsg failed: %s\n", UDT::getlasterror().getErrorMessage());
							}
							LOG_INFO("[ERROR] duplicate passport: %d\n", poPack->m_unValue.m_ClientRegisterParam.m_uiPassPort);
						}
					}
					else
					{
						LOG_INFO("[ERROR] cannot find vup in client list and retry: %d\n", poPack->m_unValue.m_ClientRegisterParam.m_uiPassPort);
						m_pUDPPackBuffer->InsertUDPData(*poPackWrapper);
					}
#endif
				}
				break;
			case EPT_C2M_ReportClientStatus:
				{
					Char cmd[VMCommand::kMaxCommandLength];
					sprintf(cmd, "updatevup %d -rs %d",	poPack->m_unValue.m_ReportClientStatusParam.m_uiPassPort,
														poPack->m_unValue.m_ReportClientStatusParam.m_uiRunningStatus);
					VMCommandCenter::GetPtr()->ExecuteFromString(cmd);

					sprintf(cmd, "updatevup %d -tp %d",	poPack->m_unValue.m_ReportClientStatusParam.m_uiPassPort,
														poPack->m_unValue.m_ReportClientStatusParam.m_uiTestPhase);
					VMCommandCenter::GetPtr()->ExecuteFromString(cmd);

					//LOG_INFO("get status %s, %s\n", VMVup::kStatus[poPack->m_unValue.m_ReportClientStatusParam.m_uiRunningStatus].GetName(),
					//								VMVup::kTestPhase[poPack->m_unValue.m_ReportClientStatusParam.m_uiTestPhase].GetName());
				}
				break;
			case EPT_C2M_ReachRDVPoint:
				{
					u16 uiRDVPoint = poPack->m_unValue.m_ReachRDVPointParam.m_uiRDVPointID;
					RDVPointListIterator itRDVPoint = m_poRDVList.find(uiRDVPoint);
					if(itRDVPoint == m_poRDVList.end())
					{
						LOG_INFO("[RDV Point] new rdv point: %d\n", uiRDVPoint);
						RDVPointInfo info;
						info.m_uiID								= uiRDVPoint;
						info.m_RunningInfo.m_bHasValidValue		= true;
						info.m_RunningInfo.m_uiCurrentRunningID = uiRDVPoint;
						info.m_RunningInfo.m_fStartTime			= GameEngine::GetGameEngine()->GetClockMod()->GetTotalElapsedSeconds();
						info.m_RunningInfo.m_bIsGroupFull		= false;

						itRDVPoint = m_poRDVList.insert(std::pair<RDVPointID, RDVPointInfo>(uiRDVPoint, info)).first;

						RDVPointInfo& pi = (*itRDVPoint).second;
						RDVPointRunningInfo& runningInfo = (*itRDVPoint).second.m_RunningInfo;
						RDVPointParameterListIterator itRDVPointParam = m_poRDVParam.find(Protocal::GetRDVPointID(Protocal::GetRDVPointMajor(uiRDVPoint), 0));
						if(itRDVPointParam != m_poRDVParam.end())
						{
							const RDVPointParameter& param = (*itRDVPointParam).second;
							runningInfo.m_GroupList.ReSize(param.m_iGroupNum);
							for(s32 i = 0; i < runningInfo.m_GroupList.Size(); ++i)
							{
								runningInfo.m_GroupList[i] = 0;
							}
							pi.m_uiExpectedNum = param.m_uiExpectedNum;
							pi.m_uiTimeOut = param.m_uiTimeOut;
						}
						else
						{
							runningInfo.m_GroupList.ReSize(1);
							runningInfo.m_GroupList[0] = 0;

							//TJQ: use default value
							pi.m_uiExpectedNum = 9999;
							pi.m_uiTimeOut = 10 * 60;
						}
					}
					else
					{
						RDVPointInfo& pi = (*itRDVPoint).second;
						D_CHECK(pi.m_RunningInfo.m_bHasValidValue);
						D_CHECK(pi.m_RunningInfo.m_uiCurrentRunningID == uiRDVPoint);
						//D_CHECK(pi.m_uiExpectedNum == poPack->m_unValue.m_ReachRDVPointParam.m_uiExpected);
						//D_CHECK(pi.m_uiTimeOut == poPack->m_unValue.m_ReachRDVPointParam.m_uiTimeout);
					}
					RDVPointRunningInfo& runningInfo = (*itRDVPoint).second.m_RunningInfo;

					RDVPointParameterListIterator itRDVPointParam = m_poRDVParam.find(Protocal::GetRDVPointID(Protocal::GetRDVPointMajor(uiRDVPoint), 0));
					if(itRDVPointParam == m_poRDVParam.end())
					{	
						//use default
						VMVup* vup = FindVup(poPack->m_unValue.m_ReachRDVPointParam.m_uiPassPort);
						if(vup)
						{
							vup->SetGroup(0);
							vup->SetRDVPointID(uiRDVPoint);
							
							runningInfo.m_GroupList[0]++;
							
							LOG_INFO("[RDV Point] add vup %d to: R(%d, %d)G(0)[%d/-1]\n", 
								poPack->m_unValue.m_ReachRDVPointParam.m_uiPassPort, 
								Protocal::GetRDVPointMajor(uiRDVPoint),
								Protocal::GetRDVPointMinor(uiRDVPoint),
								runningInfo.m_GroupList[0]);

							runningInfo.m_ClientList.push_back(poPack->m_unValue.m_ReachRDVPointParam.m_uiPassPort);

							VMSummary::GroupUpdateParam guParam;
							guParam.m_AddorRemove = true;
							guParam.m_MaxNumberInGroup = -1;
							guParam.m_MyGroup = 0;
							guParam.m_VUPsPassport = poPack->m_unValue.m_ReachRDVPointParam.m_uiPassPort;
							VMSummary::GetPtr()->UpdateGroupInfo(Protocal::GetRDVPointMajor(uiRDVPoint), Protocal::GetRDVPointMinor(uiRDVPoint), 1, guParam);
						}
					}
					else
					{
						const RDVPointParameter& param = (*itRDVPointParam).second;
						VMVup* vup = FindVup(poPack->m_unValue.m_ReachRDVPointParam.m_uiPassPort);
						if(vup)
						{
							//Set RDV Point
							vup->SetRDVPointID(uiRDVPoint);

							//Set Group
							Bool bShouldFindAEmptyGroup = true;
							s32 iOriginalGroup = vup->GetGroup();
							vup->SetGroup(-1);

							if(!runningInfo.m_bIsGroupFull)
							{
								if(iOriginalGroup >= 0 && iOriginalGroup < runningInfo.m_GroupList.Size())
								{
									if(runningInfo.m_GroupList[iOriginalGroup] < param.m_iVUPNumInEachGroup)
									{
										runningInfo.m_GroupList[iOriginalGroup]++;
										vup->SetGroup(iOriginalGroup);
										bShouldFindAEmptyGroup = false;
									}
								}
								if(bShouldFindAEmptyGroup)
								{
									s32 idx = 0;
									for(idx = 0; idx < runningInfo.m_GroupList.Size(); ++idx)
									{
										if(runningInfo.m_GroupList[idx] < param.m_iVUPNumInEachGroup)
										{
											runningInfo.m_GroupList[idx]++;
											vup->SetGroup(idx);
											break;
										}
									}
									if(idx == runningInfo.m_GroupList.Size())
									{
										runningInfo.m_bIsGroupFull = true;
									}
								}
							}
							if(vup->GetGroup() >= 0)
							{
								runningInfo.m_ClientList.push_back(poPack->m_unValue.m_ReachRDVPointParam.m_uiPassPort);

								VMSummary::GroupUpdateParam guParam;
								guParam.m_AddorRemove = true;
								guParam.m_MaxNumberInGroup = param.m_iVUPNumInEachGroup;
								guParam.m_MyGroup = vup->GetGroup();
								guParam.m_VUPsPassport = poPack->m_unValue.m_ReachRDVPointParam.m_uiPassPort;
								VMSummary::GetPtr()->UpdateGroupInfo(Protocal::GetRDVPointMajor(uiRDVPoint), Protocal::GetRDVPointMinor(uiRDVPoint), param.m_iGroupNum, guParam);

								LOG_INFO("[RDV Point] add vup %d to: R(%d, %d)G(%d)[%d/%d]\n", 
									poPack->m_unValue.m_ReachRDVPointParam.m_uiPassPort, 
									Protocal::GetRDVPointMajor(uiRDVPoint),
									Protocal::GetRDVPointMinor(uiRDVPoint),
									vup->GetGroup(), 
									runningInfo.m_GroupList[vup->GetGroup()], 
									param.m_iVUPNumInEachGroup);
							}
						}
					}
				}
				break;
			}
		}
		delete[] poPacArray;
	}
}
Exemplo n.º 30
0
 void AbstractArrayAtNode::markAllocated(fint* use_count, fint* def_count) {
   U_CHECK(_src); D_CHECK(_dest); U_CHECK(arg);
   if (error) D_CHECK(error);
   use_count[Temp4]++; def_count[Temp4]++;       // (potentially) uses Temp4
 }