int barcodez(int socket) { char tehfile[41]; char safe[] = IMG_ROOT; char cobracmdr[sizeof(tehfile)+sizeof(safe)+9]; char data[600]; char safepath[sizeof(safe)+sizeof(tehfile)]; int res = 0; memset(tehfile, 0x0, sizeof(tehfile)); memset(cobracmdr, 0x0, sizeof(cobracmdr)); memset(data, 0x0, sizeof(data)); memset(safepath, 0x0, sizeof(safepath)); sendString(socket, "Welcome to the data matrix bar code reader.\n"); sendString(socket, "Enter the name of file uploaded to decode data.\n> "); if ((res = recvUntil(socket, tehfile, sizeof(tehfile) - 1, '\n')) == 0) { fprintf(stderr, "No datas!\n"); close(socket); exit(1); } snprintf(safepath, sizeof(safepath), "%s%s", safe, tehfile); if ((res = validPath(safe, safepath)) == -1) { sendString(socket, "Hey! You can't look in there.\n"); fprintf(stderr, "%s is outside the safe path.\n", safepath); close(socket); exit(1); } snprintf(cobracmdr, sizeof(cobracmdr), "dmtxread %s", safepath); if ((fp = popen(cobracmdr, "r")) == NULL) { perror("popen"); close(socket); exit(1); } fread(data, SIZE, 1, fp); if (data[0] == 0x0) { sendString(socket, "Looks like you lost your file!\n"); fprintf(stderr, "Nothing read!\n"); close(socket); exit(1); } sendString(socket, data); fclose(fp); unlink(safepath); close(socket); return 0; }
void CNetPlayerInput::UpdateErrorSnap(const Vec3 &entPos, const Vec3 &desiredPos, f32 netPosDist, const Vec3 &desPosOffset, const CTimeValue &curTime) { if (g_pGameCVars->pl_velocityInterpAlwaysSnap) { //--- Snap to target m_pPlayer->GetEntity()->SetPos(desiredPos); m_passedNetPos = true; m_passedPredictionPos = true; } else if (curTime > m_nextBCTime && !(m_pPlayer->m_stats.inFreefall.Value() > 0)) { //--- Breadcrumbs dropped for simulated annealing, whilst the player is blocked we reduce the maximum //--- allowed offset until the character is snapped to the last net position Vec3 prevOffset = entPos - m_breadCrumb; bool blocked = false; if (!m_passedNetPos) { float moveDist = prevOffset.Dot(desPosOffset) / netPosDist; float moveSpeed = moveDist / k_timePerBC; blocked = ((moveSpeed / m_netLerpSpeed) <= k_BCMovingRatio); } if (blocked) { m_blockedTime += k_timePerBC; } else { m_blockedTime = 0.0f; } m_breadCrumb = entPos; m_nextBCTime = curTime+k_timePerBC; Vec3 v0(desiredPos.x, desiredPos.y, 0.0f); Vec3 v1(m_predictedPosition.x, m_predictedPosition.y, 0.0f); Vec3 pt(entPos.x, entPos.y, 0.0f); Lineseg validPath(v0, v1); float t; float distSqrXY = Distance::Point_LinesegSq(pt, validPath, t); float heightDiff = m_predictedPosition.z - entPos.z; float blockedFactor = (1.0f - (m_blockedTime / k_maxBlockTime)); float maxDistXY = !m_passedNetPos ? blockedFactor * k_maxInterpolateDist : k_reachedTargetAllowedDeviation; float timeOnGround = m_pPlayer->GetActorStats()->onGround; float allowedHeightDiff = (float)__fsel(timeOnGround - k_onGroundTime, k_allowedHeightDiff, k_allowedHeightDiffInAir); if ((distSqrXY > (maxDistXY * maxDistXY)) || (cry_fabsf(heightDiff) > allowedHeightDiff)) { //--- Snap to target m_pPlayer->GetEntity()->SetPos(desiredPos); m_passedNetPos = true; const bool isfallen = m_pPlayer->m_stats.inFreefall.Value()==1; } } }
void testPaths(FILE* out, struct Map* map, int pathLength, int numPaths, int* paths) { int i, result; fprintf(out, "Test length %d paths\n", pathLength); for(i = 0; i < numPaths; ++i) { result = validPath(pathLength, paths + i*pathLength, map); fprintf(out, " Path %d, result = %d\n", i, result); } }
//---------------------------------------------------------------------- void AIController::handleScoutOrders( Agent* scout, ArenaMap& currentMap, const ObservedEntities& entities, Orders& tentativeOrders ) { if( scout->currentPath.empty() ) { scout->currentTargetLoc = currentMap.getLocationForScoutToGoTo(); m_agentsRequestingPaths.push( scout->entityID ); } else { if( currentMap.hasNewMapInfo() && !validPath( currentMap, scout->pos, scout->currentPath ) ) { if( scout->pos == scout->currentTargetLoc || currentMap.getMapTileType( scout->currentTargetLoc.x, scout->currentTargetLoc.y ) == ARENA_SQUARE_TYPE_STONE ) scout->currentTargetLoc = currentMap.getLocationForScoutToGoTo(); m_agentsRequestingPaths.push( scout->entityID ); } } }
//---------------------------------------------------------------------- void AIController::handleSoldierOrders( Agent* soldier, ArenaMap& currentMap, const ObservedEntities& entities, Orders& tentativeOrders ) { if( soldier->currentPath.empty() ) { soldier->currentTargetLoc = currentMap.getLocationForScoutToGoTo(); switch( m_currentQueenState ) { case GATHER_RESOURCES: case DEFEND: case ATTACK: if( !getEntityIDForClosestEnemyQueen( soldier->pos, entities, soldier->currentEnemyTargetID ) ) soldier->currentTargetLoc = currentMap.getLocationForScoutToGoTo(); break; } m_agentsRequestingPaths.push( soldier->entityID ); } else if( m_currentQueenState == ATTACK && soldier->currentEnemyTargetID == -1 ) { if( !getEntityIDForClosestEnemyQueen( soldier->pos, entities, soldier->currentEnemyTargetID ) ) { if( soldier->currentTargetLoc == soldier->pos ) { soldier->currentTargetLoc = currentMap.getLocationForScoutToGoTo(); m_agentsRequestingPaths.push( soldier->entityID ); } } else m_agentsRequestingPaths.push( soldier->entityID ); } else { if( currentMap.hasNewMapInfo() && !validPath( currentMap, soldier->pos, soldier->currentPath ) ) { if( soldier->pos == soldier->currentTargetLoc || currentMap.getMapTileType( soldier->currentTargetLoc.x, soldier->currentTargetLoc.y ) == ARENA_SQUARE_TYPE_STONE ) soldier->currentTargetLoc = currentMap.getLocationForScoutToGoTo(); m_agentsRequestingPaths.push( soldier->entityID ); } } }
//---------------------------------------------------------------------- void AIController::handleWorkerOrders( Agent* worker, ArenaMap& currentMap, const ObservedEntities& entities, Orders& tentativeOrders ) { if( m_currentQueenState == ATTACK && currentMap.hasNoMoreResources() && worker->specialStatus != ENTITY_SPECIAL_STATUS_CARRYING_FOOD ) { tentativeOrders.AddOrder( worker->entityID, ORDER_SUICIDE ); } else { if( worker->currentPath.empty() && !worker->waitingForPath ) { if( worker->pos == m_queen->pos && worker->specialStatus == ENTITY_SPECIAL_STATUS_CARRYING_FOOD ) { tentativeOrders.AddOrder( worker->entityID, ORDER_DROP_FOOD, true ); --m_numWorkersWithFood; worker->currentTargetAgentID = -1; } else if( worker->pos == worker->currentTargetLoc && currentMap.getMapTileType( worker->pos.x, worker->pos.y ) == ARENA_SQUARE_TYPE_FOOD ) { tentativeOrders.AddOrder( worker->entityID, ORDER_TAKE_FOOD, true ); m_agentsRequestingPaths.push( worker->entityID ); worker->currentTargetLoc = m_queen->pos; worker->currentTargetAgentID = m_queen->entityID; worker->waitingForPath = true; currentMap.getMapTile( worker->pos.x, worker->pos.y ).isClaimed = false; } else if( worker->specialStatus != ENTITY_SPECIAL_STATUS_CARRYING_FOOD ) { int x, y; if( currentMap.getClosestNutrient( m_arenaInfo.visibilityRangeQueen*QUEEN_RANGE_FACTOR, m_queen->pos, x, y ) ) { m_agentsRequestingPaths.push( worker->entityID ); worker->currentTargetLoc = TileCoords( x, y ); worker->currentTargetAgentID = -1; worker->waitingForPath = true; currentMap.getMapTile( x, y ).isClaimed = true; } else { ++m_numWorkersThatCouldntFindFoodThisFrame; if( m_numWorkersThatCouldntFindFoodThisFrame >= NUM_WORKERS_IDLE_BEFORE_QUEEN_MOVES ) { worker->currentTargetAgentID = m_queen->entityID; } else { worker->currentTargetAgentID = -1; worker->currentTargetLoc = currentMap.getRandomLocationInArea( worker->pos, m_arenaInfo.visibilityRangeQueen*QUEEN_RANGE_FACTOR ); } m_agentsRequestingPaths.push( worker->entityID ); worker->waitingForPath = true; } } else { worker->currentTargetAgentID = m_queen->entityID; m_agentsRequestingPaths.push( worker->entityID ); worker->waitingForPath = true; } } else if( currentMap.getMapTileType( worker->currentTargetLoc.x, worker->currentTargetLoc.y ) != ARENA_SQUARE_TYPE_FOOD && worker->specialStatus != ENTITY_SPECIAL_STATUS_CARRYING_FOOD ) { int x, y; if( currentMap.getClosestNutrient( m_arenaInfo.visibilityRangeQueen*QUEEN_RANGE_FACTOR, m_queen->pos, x, y ) ) { m_agentsRequestingPaths.push( worker->entityID ); worker->currentTargetLoc = TileCoords( x, y ); worker->currentTargetAgentID = -1; worker->waitingForPath = true; currentMap.getMapTile( x, y ).isClaimed = true; } } else if( currentMap.hasNewMapInfo() && !worker->waitingForPath && !validPath( currentMap, worker->pos, worker->currentPath ) ) { m_agentsRequestingPaths.push( worker->entityID ); worker->waitingForPath = true; } } }
QStringList VideoConverter::getCommandLine() { QStringList parameters; QString extension; parameters << "-i" << validPath(videoItem->getVideoFile()); switch (convConfToUse.outputFormat) { case ofAVI: parameters << "-f" << "avi" << "-vcodec" << "mpeg4"; extension = ".avi"; break; case ofWMV: extension = ".wmv"; break; case ofMPEG1: parameters << "-vcodec" << "mpeg1video"; extension = ".mpg"; break; case ofMPEG2: parameters << "-vcodec" << "mpeg2video"; extension = ".mpeg"; break; case ofMP4: case ofMP4_hd: { QString vpre = convConfToUse.outputFormat == ofMP4 ? "default" : "hq"; // configure h264 codec #ifndef Q_OS_LINUX #ifdef Q_OS_WIN32 bool use_x264 = true; #else bool use_x264 = isRunningOn64bits(); #endif if (use_x264) parameters << "-vcodec" << "libx264" << "-fpre" << QFileInfo(ffmpegApp).absolutePath() + "/ffmpeg-presets/libx264-" + vpre + ".ffpreset"; else // no x264 support parameters << "-f" << "mp4" << "-vcodec" << "mpeg4"; #else parameters << "-vcodec" << "libx264" << "-vpre" << vpre; #endif extension = ".mp4"; break; } case ofAppleiPod: parameters << "-acodec" << "libfaac" << "-ab" << "128kb" << "-vcodec" << "mpeg4" << "-b" << "1200kb" << "-mbd" << "2" << "-cmp" << "2" << "-subcmp" << "2" << "-s" << "320x240"; extension = ".mp4"; break; case ofSonyPSP: parameters << "-acodec" << "libfaac" << "-ab" << "128kb" << "-vcodec" << "mpeg4" << "-b" << "1200kb" << "-mbd" << "2" << "-flags" << "+4mv" << "-trellis" << "2" << "-cmp" << "2" << "-subcmp" << "2" << "-r" << "30000/1001" << "-f" << "psp"; extension = ".mp4"; break; case of3GP: parameters << "-vcodec" << "mpeg4" << "-acodec" << "libfaac" << "-ar" << "8000" << "-ac" << "1" << "-ab" << "12.2k" << "-f" << "3gp"; extension = ".3gp"; break; case ofMP3: extension = ".mp3"; break; } // this is used only for NON Apple iPod videos if (convConfToUse.outputFormat != ofAppleiPod) { switch (convConfToUse.videoResolution) { case vrOriginal: break; case vr96x72: parameters << "-s" << "96x72"; break; case vr128x96: parameters << "-s" << "128x96"; break; case vr160x120: parameters << "-s" << "160x120"; break; case vr176x120: parameters << "-s" << "176x120"; break; case vr176x144: parameters << "-s" << "176x144"; break; case vr192x144: parameters << "-s" << "192x144"; break; case vr240x180: parameters << "-s" << "240x180"; break; case vr320x200: parameters << "-s" << "320x200"; break; case vr320x240: parameters << "-s" << "320x240"; break; case vr352x240: parameters << "-s" << "352x240"; break; case vr352x288: parameters << "-s" << "352x288"; break; case vr480x272: parameters << "-s" << "480x272"; break; case vr480x360: parameters << "-s" << "480x360"; break; case vr480x480: parameters << "-s" << "480x480"; break; case vr624x352: parameters << "-s" << "624x352"; break; case vr640x480: parameters << "-s" << "640x480"; break; case vr720x480: parameters << "-s" << "720x480"; break; case vr720x576: parameters << "-s" << "720x576"; break; } if (convConfToUse.videoFrameRate == vfr15) parameters << "-r" << "15"; else if (convConfToUse.videoFrameRate == vfr24) parameters << "-r" << "24"; else if (convConfToUse.videoFrameRate == vfr25) parameters << "-r" << "25"; else if (convConfToUse.videoFrameRate == vfr29_97) parameters << "-r" << "29.97"; else if (convConfToUse.videoFrameRate == vfr30) parameters << "-r" << "30"; switch (convConfToUse.audioSampleRatio) { case asrOriginal: break; case asr22050: parameters << "-ar" << "22050"; break; case asr44100: parameters << "-ar" << "44100"; break; } switch (convConfToUse.outputQuality) { case oqLower_quality: parameters << "-b" << "384k" << "-ab" << "64k"; break; case oqLow_quality: parameters << "-b" << "512k" << "-ab" << "80k"; break; case oqNormal_quality: parameters << "-b" << "640k" << "-ab" << "96k"; break; case oqMedium_quality: parameters << "-b" << "800k" << "-ab" << "96k"; break; case oqGood_quality: parameters << "-b" << "1000k" << "-ab" << "128k"; break; case oqSuperb_quality: parameters << "-b" << "1200k" << "-ab" << "128k"; break; case oqSame_quality: break; } } videoItem->setVideoFileSavedTo(uniqueFileName(changeFileExt(videoItem->getVideoFile(), extension)), this); parameters << "-y" << validPath(videoItem->getVideoFileSavedTo()); return parameters; }