本文整理汇总了C#中Part.TakeResource方法的典型用法代码示例。如果您正苦于以下问题:C# Part.TakeResource方法的具体用法?C# Part.TakeResource怎么用?C# Part.TakeResource使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Part
的用法示例。
在下文中一共展示了Part.TakeResource方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RequestResource
private double RequestResource(string resourceName, double requestedAmount, Part part)
{
return part.TakeResource(resourceName, requestedAmount);
}
示例2: FillEvaSuit
private void FillEvaSuit(Part oldPart, Part newPart)
{
double desiredFood = globalSettings.FoodConsumptionRate * globalSettings.EvaDefaultResourceAmount;
double desiredWater = globalSettings.WaterConsumptionRate * globalSettings.EvaDefaultResourceAmount;
double desiredOxygen = globalSettings.OxygenConsumptionRate * globalSettings.EvaDefaultResourceAmount;
double desiredElectricity = globalSettings.EvaElectricityConsumptionRate * globalSettings.EvaDefaultResourceAmount;
Vessel lastVessel = oldPart.vessel;
VesselInfo lastVesselInfo;
if (!gameSettings.knownVessels.TryGetValue(lastVessel.id, out lastVesselInfo))
{
lastVesselInfo = new VesselInfo(lastVessel.vesselName, Planetarium.GetUniversalTime());
}
UpdateVesselInfo(lastVesselInfo, lastVessel);
int numCrew = lastVesselInfo.numCrew + 1;
double foodObtained = oldPart.TakeResource(globalSettings.FoodId, Math.Min(desiredFood, lastVesselInfo.remainingFood / numCrew));
double waterObtained = oldPart.TakeResource(globalSettings.WaterId, Math.Min(desiredWater, lastVesselInfo.remainingWater / numCrew));
double oxygenObtained = oldPart.TakeResource(globalSettings.OxygenId, Math.Min(desiredOxygen, lastVesselInfo.remainingOxygen / numCrew));
double electricityObtained = oldPart.TakeResource(globalSettings.ElectricityId, Math.Min(desiredElectricity, lastVesselInfo.remainingElectricity / numCrew));
newPart.TakeResource(globalSettings.FoodId, -foodObtained);
newPart.TakeResource(globalSettings.WaterId, -waterObtained);
newPart.TakeResource(globalSettings.OxygenId, -oxygenObtained);
newPart.TakeResource(globalSettings.ElectricityId, -electricityObtained);
}
示例3: ConsumeWater
private void ConsumeWater(double currentTime, Vessel vessel, VesselInfo vesselInfo, ProtoCrewMember crewMember, CrewMemberInfo crewMemberInfo, Part part)
{
if (vesselInfo.remainingWater >= globalSettings.WaterConsumptionRate)
{
double deltaTime = Math.Min(currentTime - crewMemberInfo.lastWater, globalSettings.MaxDeltaTime);
double desiredWater = globalSettings.WaterConsumptionRate * deltaTime;
double waterObtained = part.TakeResource(globalSettings.WaterId, Math.Min(desiredWater, vesselInfo.remainingWater / vesselInfo.numCrew));
double wasteWaterProduced = waterObtained * globalSettings.WasteWaterProductionRate / globalSettings.WaterConsumptionRate;
part.TakeResource(globalSettings.WasteWaterId, -wasteWaterProduced);
crewMemberInfo.lastWater += deltaTime - ((desiredWater - waterObtained) / globalSettings.WaterConsumptionRate);
crewMemberInfo.hibernating = false;
}
else
{
double timeWithoutWater = currentTime - crewMemberInfo.lastWater;
if (timeWithoutWater > (globalSettings.MaxTimeWithoutWater + crewMemberInfo.respite))
{
if (!gameSettings.HibernateInsteadOfKill)
{
KillCrewMember(crewMember, "dehydration", vessel);
}
else
{
crewMemberInfo.hibernating = true;
}
}
}
}
示例4: EmptyEvaSuit
private void EmptyEvaSuit(Part oldPart, Part newPart)
{
Vessel lastVessel = oldPart.vessel;
VesselInfo lastVesselInfo;
if (!gameSettings.knownVessels.TryGetValue(lastVessel.id, out lastVesselInfo))
{
ScreenMessages.PostScreenMessage("Error - EmptyEvaSuit - Cannot find VesselInfo for " + oldPart.vessel.id, 10.0f, ScreenMessageStyle.UPPER_CENTER);
this.LogError("EmptyEvaSuit - Cannot find VesselInfo for " + oldPart.vessel.id);
return;
}
newPart.TakeResource(globalSettings.FoodId, -lastVesselInfo.remainingFood);
newPart.TakeResource(globalSettings.WaterId, -lastVesselInfo.remainingWater);
newPart.TakeResource(globalSettings.OxygenId, -lastVesselInfo.remainingOxygen);
newPart.TakeResource(globalSettings.ElectricityId, -lastVesselInfo.remainingElectricity);
newPart.TakeResource(globalSettings.CO2Id, -lastVesselInfo.remainingCO2);
newPart.TakeResource(globalSettings.WasteId, -lastVesselInfo.remainingWaste);
newPart.TakeResource(globalSettings.WasteWaterId, -lastVesselInfo.remainingWasteWater);
}
示例5: ConsumeFood
private void ConsumeFood(double currentTime, Vessel vessel, VesselInfo vesselInfo, ProtoCrewMember crewMember, CrewMemberInfo crewMemberInfo, Part part)
{
if (vesselInfo.remainingFood >= globalSettings.FoodConsumptionRate)
{
double deltaTime = Math.Min(currentTime - crewMemberInfo.lastFood, globalSettings.MaxDeltaTime);
double desiredFood = globalSettings.FoodConsumptionRate * deltaTime;
double foodObtained = part.TakeResource(globalSettings.FoodId, Math.Min(desiredFood, vesselInfo.remainingFood / vesselInfo.numCrew));
double wasteProduced = foodObtained * globalSettings.WasteProductionRate / globalSettings.FoodConsumptionRate;
part.TakeResource(globalSettings.WasteId, -wasteProduced);
crewMemberInfo.lastFood += deltaTime - ((desiredFood - foodObtained) / globalSettings.FoodConsumptionRate);
crewMemberInfo.hibernating = false;
}
else
{
double timeWithoutFood = currentTime - crewMemberInfo.lastFood;
if (timeWithoutFood > (globalSettings.MaxTimeWithoutFood + crewMemberInfo.respite))
{
if (!gameSettings.HibernateInsteadOfKill)
{
KillCrewMember(crewMember, "starvation", vessel);
}
else
{
crewMemberInfo.hibernating = true;
}
}
}
}