void TimerCB::update(unsigned long curMillis) { if((curMillis - m_startTime) > m_delay) { switch(m_count) { case 0: { // completely elapsed. Do Nothing break; } case -1: { // infinitely recurring m_callBack(m_context); break; } default: { // m_callback may want to restart the timer, so // decrement count 1st. m_count--; m_callBack(m_context); break; } } m_startTime = curMillis; } }
void Producer::run() { for (int i = 0; i < 10; i++) { QThread::msleep(200); m_callBack(i); } }
void Util::scheduleCallBack(float time) { if (m_callBack) { m_callBack(); m_callBack = nullptr; } }
//addType 0:额外获得 1:捕获获得 void Player::AddGold(int Increse,int AddType) { int newGold = this->getCurGold()+Increse; this->setCurGold(newGold); this->m_totalgold += Increse; for (int i=0;i<sizeof(GoldLevel) / sizeof(GoldLevel[0]);i++) { if(this->m_totalgold > GoldLevel[i]) { m_level = i+1; if(G_MainGame != nullptr) { taskMgr::getInstance()->Hook(0, m_level); } } } SavePlayInfo(); if(m_callBack) { m_callBack(); } if(AddType == 1) { m_PopfreeGold+=Increse; m_poprmb += Increse; if(m_PopfreeGold > 1500) { m_PopfreeGold = 0; TipWin::ShowTip(0); } if(m_poprmb > 5500) { m_poprmb = 0; TipWin::ShowTip(1); } } if(G_MainGame) { G_MainGame->m_bottomgold->setString(StringUtils::format("%d",newGold)); if(G_MainGame->m_ShowBuyMoney && newGold >= 500) { G_MainGame->ShowBuyMoney(false); } } if(LoadScene::m_loadScene) { LoadScene::m_loadScene->labelatlas->setString(StringUtils::format("%d",newGold)); } }
////////////////////////////////////////////////////////////////////////// // // Class MemoryViewDebugger // // 罗嘉飞 2011、5、26 内存显示 // void MemoryViewDebugger::Debug( VCPU* pCPU, LPVOID param ) { auto IR = pCPU->GetIR(); if ( IR->m_elements[ 0 ] == "leave" ) {flag = 0; m_funcId.pop();} else if ( IR->m_elements[ 0 ] == "mov" && IR->m_elements[ 1 ] == "d1" ) {flag = 1;m_funcId.push( pCPU->Getdreg()[ 1 ] );} if ( !m_funcId.empty() ) { if ( m_funcId.top() != pCPU->Getdreg()[ 1 ] ) flag = 1; } if ( flag == 1 ) { // 获取语法器 IParser* pParser = (IParser*)m_callBack( NULL ); // 获取符号表 Environment& env = (Environment)pParser->GetTables(); MemorySpy* pProWnd = *(MemorySpy**)( m_callBack( (LPVOID)1 ) ); dword_pointer pebp = pCPU->Getebp(); dword_pointer pesp = pCPU->Getesp(); dword eip = pCPU->Geteip(); //dword c=*(pebp+8); //dword d=*(pesp+8); ////////////////// PropertiesInsertItem temp; WatchPropertiesListType* ValList = new std::list< PropertiesInsertItem >; ////////////////////// DWORD pc = pCPU->Geteip(); // PC /*dword func_id = pCPU->Getdreg()[ 1 ];*/ dword func_id = m_funcId.top(); //每次都去栈顶 //m_funcId.push(func_id); Table* table; auto iter=env.m_tableList.begin(); for (;iter!=env.m_tableList.end();iter++) { if( iter->second.GetID()==func_id) { break; } } if ( iter == env.m_tableList.end() ) return; table = &iter->second; /*(table)->m_symbolList;*/ for ( auto symbol = table->GetLocalVarTable().begin(); symbol != table->GetLocalVarTable().end(); ++symbol ) { temp.varname=symbol->second.name; temp.val=*(dword_pointer)( ((uchar_pointer)pebp) - symbol->second.offset); ValList->push_back(temp); } /*table->m_paramSymbolList;*/ for ( auto symbol = table->GetParamTable().begin(); symbol != table->GetParamTable().end(); ++symbol ) { temp.varname=symbol->second.name; temp.val=*(dword_pointer)( ((uchar_pointer)pebp) - symbol->second.offset + 4); ValList->push_back(temp); } if ( listComp != *ValList ) { listComp = *ValList; //pProWnd->PostMessageA( WM_CLEAR_ALL_ITEMS ); pProWnd->PostMessageA( WM_INSERT_ITEM, (WPARAM)ValList, 0 ); } else { delete ValList; } } }
////////////////////////////////////////////////////////////////////////// // // Class WatchDogDebugger // // 罗嘉飞 2011/5/26 需要看到的内存 // void WatchDogDebugger::Debug( VCPU* pCPU, LPVOID param ) { auto IR = pCPU->GetIR(); if ( IR->m_elements[ 0 ] == "leave" ) {flag = 0; m_funcId.pop();} else if ( IR->m_elements[ 0 ] == "mov" && IR->m_elements[ 1 ] == "d1" ) {flag = 1;m_funcId.push( pCPU->Getdreg()[ 1 ] );} if ( !m_funcId.empty() ) { if ( m_funcId.top() != pCPU->Getdreg()[ 1 ] ) flag = 1; } if( flag==1) { // 获取语法器 IParser* pParser = (IParser*)m_callBack( 0 ); // 获取符号表 Environment& env = (Environment)pParser->GetTables(); dword_pointer pebp = pCPU->Getebp(); dword_pointer pesp = pCPU->Getesp(); dword eip = pCPU->Geteip(); std::list<std::string>* pList = (std::list<std::string>*)m_callBack( (LPVOID)1 ); PropertiesInsertItem temp; std::list< PropertiesInsertItem >* ValList = new std::list< PropertiesInsertItem >; ////////////////////// DWORD pc = pCPU->Geteip(); // PC dword func_id = m_funcId.top(); Table* table; auto iter=env.m_tableList.begin(); for (;iter!=env.m_tableList.end();iter++) { if( iter->second.GetID()==func_id) { break; } } if ( iter == env.m_tableList.end() ) return; table = &iter->second; for ( auto symbol = table->GetLocalVarTable().begin(); symbol != table->GetLocalVarTable().end(); ++symbol ) { //在关键字List里才取出 for (auto iter = pList->begin(); iter != pList->end(); ++iter) { if ( *iter == symbol->second.name) { temp.varname=symbol->second.name; temp.val=*(dword_pointer)( ((uchar_pointer)pebp) - symbol->second.offset); ValList->push_back(temp); } } } for ( auto symbol = table->GetParamTable().begin(); symbol != table->GetParamTable().end(); ++symbol ) { //在关键字List里才取出 for (auto iter = pList->begin(); iter != pList->end(); ++iter) { if ( *iter == symbol->second.name) { temp.varname=symbol->second.name; temp.val=*(dword_pointer)( ((uchar_pointer)pebp) - symbol->second.offset+4); ValList->push_back(temp); } } } m_callBack( (LPVOID)ValList ); /* CPropertiesWnd* pProWnd = *(CPropertiesWnd**)m_callBack( (LPVOID)2 ); if ( listComp != *ValList ) { listComp = *ValList; pProWnd->PostMessageA( WM_CLEAR_ALL_ITEMS ); pProWnd->PostMessageA( WM_INSERT_ITEM, (WPARAM)ValList, 0 ); }*/ //static int i = 0; //if ( ! ValList->empty() ) //{ // std::ofstream out("d:\\data\\" + itoa( i++ ) + ".txt",std::ios::out); // out << eip << std::endl; // for (auto iter = ValList->begin(); iter!=ValList->end(); ++iter) // { // out << iter->varname << " "; // out << iter->val << std::endl; // } //} } }