bool GMESong::StartTrack(int track, bool getcritsec) { gme_err_t err; if (getcritsec) { CritSec.Enter(); } err = gme_start_track(Emu, track); if (getcritsec) { CritSec.Leave(); } if (err != NULL) { Printf("Could not start track %d: %s\n", track, err); return false; } CurrTrack = track; GetTrackInfo(); if (!m_Looping) { gme_set_fade(Emu, CalcSongLength()); } return true; }
BOOL EnvironmentConstruct::Init() { int nResult = false; int nRetCode = false; ITabFile* piTableFile = NULL; KTRACK* pThisTrack = NULL; KROUTE_NODE* pFromRouteNode = NULL; KROUTE_NODE* pToRouteNode = NULL; KTRACK* pTrack = NULL; int nTrackID = 0; int nTabHeight = 0; int nDistance = 0; int nCurrentFrame = 0; char szScriptFile[MAX_PATH]; KROUTE_NODE RouteNode; KTRACK Track; KTRACK_POINT TrackPoint; KTRACK_POINT PrevTrackPoint; std::pair<KTrackMap::iterator, bool> itRetCode; // Load RoadNode.tab //-------------------------------------------------------------------------- piTableFile = g_OpenTabFile("RoadNode.tab"); KGLOG_PROCESS_ERROR(piTableFile); nTabHeight = piTableFile->GetHeight(); KGLOG_PROCESS_ERROR(nTabHeight > 1); for (int i = 2; i <= nTabHeight; i++) { nRetCode = piTableFile->GetInteger(i, "NodeID", -1, &RouteNode.nNodeID); KGLOG_PROCESS_ERROR(nRetCode && "Get NodeID"); nRetCode = piTableFile->GetString(i, "Description", "", RouteNode.szDescription, sizeof(RouteNode.szDescription)); KGLOG_PROCESS_ERROR(nRetCode && "Get Description"); nRetCode = piTableFile->GetInteger(i, "MapID", 0, (int*)&RouteNode.dwMapID); KGLOG_PROCESS_ERROR(nRetCode && "Get MapID"); nRetCode = piTableFile->GetInteger(i, "CityID", 0, (int*)&RouteNode.dwCityID); KGLOG_PROCESS_ERROR(nRetCode && "Get CityID"); nRetCode = piTableFile->GetInteger(i, "ForceID", 0, (int*)&RouteNode.dwForceID); KGLOG_PROCESS_ERROR(nRetCode && "Get ForceID"); RouteNode.dwDefaultForceID = RouteNode.dwForceID; nRetCode = piTableFile->GetInteger(i, "TongID", 0, (int*)&RouteNode.dwTongID); KGLOG_PROCESS_ERROR(nRetCode && "Get TongID"); nRetCode = piTableFile->GetString(i, "ScriptFile", "", szScriptFile, sizeof(szScriptFile)); KGLOG_PROCESS_ERROR(nRetCode); RouteNode.szScriptFile[0] = '\0'; if (szScriptFile[0] != '\0') { snprintf(RouteNode.szScriptFile, sizeof(RouteNode.szScriptFile), "%s", szScriptFile); RouteNode.szScriptFile[sizeof(RouteNode.szScriptFile) - 1] = '\0'; } nRetCode = piTableFile->GetInteger(i, "NeedOpen", false, &RouteNode.bIsNeedOpen); KGLOG_PROCESS_ERROR(nRetCode && "Get NeedOpen"); nRetCode = piTableFile->GetInteger(i, "X", 0, &RouteNode.nX); KGLOG_PROCESS_ERROR(nRetCode && "Get X"); nRetCode = piTableFile->GetInteger(i, "Y", 0, &RouteNode.nY); KGLOG_PROCESS_ERROR(nRetCode && "Get Y"); nRetCode = piTableFile->GetInteger(i, "Z", 0, &RouteNode.nZ); KGLOG_PROCESS_ERROR(nRetCode && "Get Z"); KG_PROCESS_ERROR(RouteNode.bIsNeedOpen || RouteNode.dwForceID == 0); m_RouteMap.insert(std::make_pair(RouteNode.nNodeID, RouteNode)); } KG_COM_RELEASE(piTableFile); piTableFile = NULL; //Load RoadTrack.tab //-------------------------------------------------------------------------- piTableFile = g_OpenTabFile("RoadTrack.tab"); KGLOG_PROCESS_ERROR(piTableFile); nTabHeight = piTableFile->GetHeight(); KGLOG_PROCESS_ERROR(nTabHeight > 1); for (int i = 2; i <= nTabHeight; i++) { nRetCode = piTableFile->GetInteger(i, "FromNodeID", 0, &Track.nFromNode); KGLOG_PROCESS_ERROR(nRetCode && "Get FromNodeID"); nRetCode = piTableFile->GetInteger(i, "ToNodeID", 0, &Track.nToNode); KGLOG_PROCESS_ERROR(nRetCode && "Get ToNodeID"); nRetCode = piTableFile->GetInteger(i, "CostMoney", 0, &Track.nCostMoney); KGLOG_PROCESS_ERROR(nRetCode && "Get Cost Money"); nRetCode = piTableFile->GetInteger(i, "TrackID", 0, &Track.nTrackID); KGLOG_PROCESS_ERROR(nRetCode && "Get TrackID"); KGLOG_PROCESS_ERROR(Track.nTrackID > 0 && Track.nTrackID <= MAX_TRACK_ID); nRetCode = piTableFile->GetInteger(i, "Velocity", 0, &Track.nVelocity); KGLOG_PROCESS_ERROR(nRetCode && "Get Velocity"); KGLOG_PROCESS_ERROR(Track.nVelocity > 0); Track.nFrame = 0; // 这里置0,将在读入路点的时候,累计每个路点的时间。 itRetCode = m_TrackMap.insert(std::make_pair(Track.nTrackID, Track)); KGLOG_PROCESS_ERROR(itRetCode.second); pThisTrack = GetTrackInfo(Track.nTrackID); pFromRouteNode = GetNodeInfo(Track.nFromNode); pToRouteNode = GetNodeInfo(Track.nToNode); pFromRouteNode->vLinkNode.push_back(std::make_pair(pToRouteNode, pThisTrack)); pToRouteNode->vLinkNode.push_back(std::make_pair(pFromRouteNode, pThisTrack)); } KG_COM_RELEASE(piTableFile); piTableFile = NULL; //Load RoadPoint.tab //-------------------------------------------------------------------------- piTableFile = g_OpenTabFile("RoadPoint.tab"); KGLOG_PROCESS_ERROR(piTableFile); nTabHeight = piTableFile->GetHeight(); KGLOG_PROCESS_ERROR(nTabHeight > 1); for (int i = 2; i <= nTabHeight; i++) { nRetCode = piTableFile->GetInteger(i, "TrackID", 0, &nTrackID); KG_PROCESS_ERROR(nRetCode && "Get TrackID"); nRetCode = piTableFile->GetInteger(i, "X", 0, &TrackPoint.nX); KG_PROCESS_ERROR(nRetCode && "Get X"); nRetCode = piTableFile->GetInteger(i, "Y", 0, &TrackPoint.nY); KG_PROCESS_ERROR(nRetCode && "Get Y"); nRetCode = piTableFile->GetInteger(i, "Z", 0, &TrackPoint.nZ); KG_PROCESS_ERROR(nRetCode && "Get Z"); pTrack = GetTrackInfo(nTrackID); KG_PROCESS_ERROR(pTrack); if (pTrack->vPoint.empty()) { pTrack->nFrame = 0; TrackPoint.nFrame = 0; pTrack->vPoint.push_back(TrackPoint); continue; } PrevTrackPoint = pTrack->vPoint.back(); nDistance = g_GetDistance3( PrevTrackPoint.nX, PrevTrackPoint.nY, PrevTrackPoint.nZ, TrackPoint.nX, TrackPoint.nY, TrackPoint.nZ ); nCurrentFrame = (int)sqrt((double)nDistance) / pTrack->nVelocity; pTrack->nFrame += nCurrentFrame; TrackPoint.nFrame = pTrack->nFrame; pTrack->vPoint.push_back(TrackPoint); } nResult = true; Exit0: if (!nResult) { m_RouteMap.clear(); m_TrackMap.clear(); pTrack->vPoint.clear(); } KG_COM_RELEASE(piTableFile); return nResult; }
unsigned char objPutCard::putCardProcess() { qDebug()<<Q_FUNC_INFO; unsigned char ucResult = 0; unsigned char aucBuf[20]; unsigned short usLength = 0; while(1) { ucResult = EventProcess(true, false, true); if(ucResult) break; if(getEventType() == Mag) { qDebug()<<"Mag is swiped"; pxMagObj=GetPxMag(); qDebug("\n+++++ SwipeCard [MAG EVENT] --------+++++++++++++++++\n"); unsigned char length1 = pxMagObj->xxdata[0]; unsigned char length2 = pxMagObj->xxdata[length1+2]; if((length1==0)&&(length2==0)) return(ERR_MAG_TRACKDATA); else { if(GetTrackInfo((unsigned char*)pxMagObj) != 0) return(ERR_NOTPROC); } break; } else if(getEventType() == Untouch) { memset(aucBuf, 0, sizeof(aucBuf)); ucResult = MIFARE_readCardNo(GetMifare(), 254, aucBuf, &usLength); QString tmp=QString::fromAscii((const char*)aucBuf); qDebug()<<"tmp::"<<tmp<<tmp.size(); if(tmp.size()<5) return ERR_MFCDRV; qDebug("card is %s", aucBuf); qDebug("card len is %d", usLength); if(ucResult) return ERR_MFCDRV; else { memset(G_NORMALTRANS_aucSourceAcc, 0, sizeof(G_NORMALTRANS_aucSourceAcc)); memcpy(G_NORMALTRANS_aucSourceAcc, aucBuf, usLength); G_NORMALTRANS_ucMainAccountLen = usLength; break; } } else if(getEventType() == Key) { ucResult = KEYDrv_Process(); if(ucResult==ERR_CANCEL) { break; } if(ucResult==ERR_CARDNOACT) { // 没有手动 if(NormalTransData.transType==TransMode_CashAdvance && g_constantParam.advance.MANUAL_ENABLE==false) { ucResult = 0; } if(NormalTransData.transType==TransMode_CashDeposit && g_constantParam.deposit.MANUAL_ENABLE==false) { ucResult = 0; } if(NormalTransData.transType==TransMode_BalanceInquiry && g_constantParam.balance.MANUAL_ENABLE==false) { ucResult = 0; } if(NormalTransData.transType==TransMode_CardTransfer && g_constantParam.p2p.MANUAL_ENABLE==false) { ucResult = 0; } if(NormalTransData.transType==TransMode_AdvanceVoid && g_constantParam.transvoid.MANUAL_ENABLE==false) { ucResult = 0; } if(NormalTransData.transType==TransMode_DepositVoid && g_constantParam.transvoid.MANUAL_ENABLE==false) { ucResult = 0; } if(g_constantParam.adjust.MANUAL_ENABLE == false && (NormalTransData.transType == TransMode_AdvanceAdjust || NormalTransData.transType == TransMode_DepositAdjust)) { ucResult = 0; } if(NormalTransData.transType==TransMode_PINChange && g_constantParam.pinchange.MANUAL_ENABLE==false) { ucResult = 0; } // 进入手动 if(NormalTransData.transType==TransMode_CashAdvance && g_constantParam.advance.MANUAL_ENABLE==true) { break; } if(NormalTransData.transType==TransMode_CashDeposit && g_constantParam.deposit.MANUAL_ENABLE==true) { break; } if(NormalTransData.transType==TransMode_BalanceInquiry && g_constantParam.balance.MANUAL_ENABLE==true) { break; } if(NormalTransData.transType==TransMode_CardTransfer && g_constantParam.p2p.MANUAL_ENABLE==true) { break; } if(NormalTransData.transType==TransMode_AdvanceVoid && g_constantParam.transvoid.MANUAL_ENABLE==true) { break; } if(NormalTransData.transType==TransMode_DepositVoid && g_constantParam.transvoid.MANUAL_ENABLE==true) { break; } if(g_constantParam.adjust.MANUAL_ENABLE == true && (NormalTransData.transType == TransMode_AdvanceAdjust || NormalTransData.transType == TransMode_DepositAdjust)) { break; } if(NormalTransData.transType==TransMode_PINChange && g_constantParam.pinchange.MANUAL_ENABLE==true) { break; } } } else { ucResult = ERR_UNKNOWNDRV; break; } } RemoveKeyEventBug(); return ucResult; }