LuaSystem::LuaSystem(Game *game) : System<LuaSystem>(game), m_luaEnv(game->getLua()) { // Specify we want LuaComponents addRequirement({TypeIdGrabber::getUniqueTypeID<LuaComponent>()}); // Subscribe to reload messages subscribe("ReloadLua"); // Create lua state and environment //m_luaContext = luaL_newstate(); //luaL_openlibs(m_luaContext); //createLuaEnvironment(); //lua_pushstring(m_luaContext, "BRAT"); //lua_pushnumber(m_luaContext, 1337); //lua_pushnumber(m_luaContext, 55); //lua_pushnumber(m_luaContext, 3333); //reverse_variadic<4, Tester> testerRec; //Tester* test = //testerRec.create(m_luaContext); //SDL_Log("TEST %i %i %i %c", test->numA, test->numB, test->numC, test->strA); }
void ConstructionTask::updateRequirements() { clearRequirements(); if(!hasEnded()) { reserveLocation(); if(!finishedWithBuilder() && !mBuilder && (mProducedUnit || (mReservedLocation && mReservedLocation->isCalculated()))) { Position location = mProducedUnit ? mProducedUnit->getPosition() : mReservedLocation->getPosition(); int neededDuration = mType.getRace() == BWAPI::Races::Protoss ? BWAPI::Broodwar->getLatencyFrames() : mType.getRace() == BWAPI::Races::Zerg ? Requirement::maxTime : mType.buildTime(); RequirementGroup requiredConditions; requiredConditions.addUnitFilterRequirement(40, neededDuration, UnitFilter(mType.whatBuilds().first) && UnitFilter(UnitFilterFlags::IsComplete), location); if(!mReservedResources && (!mProducedUnit || !mProducedUnit->exists())) { requiredConditions.addTechForTypeRequirement(mType); if(mType.mineralPrice() > 0) requiredConditions.addMineralRequirement(mType.mineralPrice()); if(mType.gasPrice() > 0) requiredConditions.addGasRequirement(mType.gasPrice()); if(mType.supplyRequired() > 0) requiredConditions.addSupplyRequirement(mType.supplyRequired()); } addRequirement(requiredConditions); } } }
LuaSystem::LuaSystem(Engine *engine) : System<LuaSystem>(engine) { // Specify we want LuaComponents addRequirement({TypeIdGrabber::getUniqueTypeID<LuaComponent>()}); // Subscribe to reload messages subscribe("ReloadLua"); LuaEnvironment &env = engine->getLua(); env.pushObject(this, "Saurobyte_LuaSystem"); env.writeGlobal("SAUROBYTE_LUA_SYSTEM"); // Create lua state and environment //m_luaContext = luaL_newstate(); //luaL_openlibs(m_luaContext); //createLuaEnvironment(); //lua_pushstring(m_luaContext, "BRAT"); //lua_pushnumber(m_luaContext, 1337); //lua_pushnumber(m_luaContext, 55); //lua_pushnumber(m_luaContext, 3333); //reverse_variadic<4, Tester> testerRec; //Tester* test = //testerRec.create(m_luaContext); //SDL_Log("TEST %i %i %i %c", test->numA, test->numB, test->numC, test->strA); }
void GatherTask::updateRequirements() { clearRequirements(); //TODO: any worker will do that i can control, dont limit to my races workers Unit resourceDepot = mBase->getResourceDepot(); if(resourceDepot) { int completeTime = 0; if(!resourceDepot->isCompleted()) completeTime = resourceDepot->getCompletedTime(); if(mResource->getType().isRefinery() && !mResource->isCompleted()) completeTime = std::max(completeTime, mResource->getCompletedTime()); if(!mWorkerOne) { RequirementGroup requirementOne; requirementOne.addUnitFilterRequirement(workerPriority(1), Requirement::maxTime, UnitFilter(UnitFilterFlags::IsWorker) && UnitFilter(UnitFilterFlags::IsComplete), mResource->getPosition()); if(completeTime > 0) requirementOne.addTimeRequirement(completeTime); addRequirement(requirementOne); } if(!mWorkerTwo) { RequirementGroup requirementTwo; requirementTwo.addUnitFilterRequirement(workerPriority(2), Requirement::maxTime, UnitFilter(UnitFilterFlags::IsWorker) && UnitFilter(UnitFilterFlags::IsComplete), mResource->getPosition()); if(completeTime > 0) requirementTwo.addTimeRequirement(completeTime); addRequirement(requirementTwo); } if(!mWorkerThree) { RequirementGroup requirementThree; requirementThree.addUnitFilterRequirement(workerPriority(3), Requirement::maxTime, UnitFilter(UnitFilterFlags::IsWorker) && UnitFilter(UnitFilterFlags::IsComplete), mResource->getPosition()); if(completeTime > 0) requirementThree.addTimeRequirement(completeTime); addRequirement(requirementThree); } } }
void QTechniqueFilter::copy(const QNode *ref) { QFrameGraphNode::copy(ref); const QTechniqueFilter *other = static_cast<const QTechniqueFilter*>(ref); Q_FOREACH (QAnnotation *crit, other->d_func()->m_requireList) addRequirement(qobject_cast<QAnnotation *>(QNode::clone(crit))); Q_FOREACH (QParameter *p, other->d_func()->m_parameters) addParameter(qobject_cast<QParameter *>(QNode::clone(p))); }
void TechTask::updateRequirements() { clearRequirements(); if(!mUnit && !shouldReturnUnit()) { RequirementGroup requiredConditions; assert(mReservedResources == false); requiredConditions.addTechForTypeRequirement(mType); requiredConditions.addUnitFilterRequirement(40, mType.researchTime(), UnitFilter(mType.whatResearches()) && UnitFilter(UnitFilterFlags::IsComplete)); requiredConditions.addMineralRequirement(mType.mineralPrice()); requiredConditions.addGasRequirement(mType.gasPrice()); addRequirement(requiredConditions); } }
void TrainTask::updateRequirements() { clearRequirements(); if(!mProductionBuilding) { RequirementGroup requiredConditions; freeResources(); requiredConditions.addUnitFilterRequirement(40, mType.buildTime(), UnitFilter(mType.whatBuilds().first) && UnitFilter(UnitFilterFlags::IsComplete) && !UnitFilter(UnitFilterFlags::IsLifted)); requiredConditions.addTechForTypeRequirement(mType); if(mType.mineralPrice() > 0) requiredConditions.addMineralRequirement(mType.mineralPrice()); if(mType.gasPrice() > 0) requiredConditions.addGasRequirement(mType.gasPrice()); if(mType.supplyRequired() > 0) requiredConditions.addSupplyRequirement(mType.supplyRequired()); addRequirement(requiredConditions); } }