Esempio n. 1
0
	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);
	}
Esempio n. 2
0
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);
		}
	}
}
Esempio n. 3
0
	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);
	}
Esempio n. 4
0
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);
		}
	}
}
Esempio n. 5
0
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)));
}
Esempio n. 6
0
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);
	}
}
Esempio n. 7
0
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);
	}
}