forked from Mirrors/openclonk
Refactoring: Removed old barrel functions
Replaced old barrel functions with the liquid container library callsliquid_container
parent
2f5cc035b6
commit
9d17cff91e
|
@ -275,7 +275,7 @@ private func InitLorries()
|
|||
if (!Random(5))
|
||||
{
|
||||
var barrel = lorry->CreateContents(Barrel);
|
||||
barrel->SetFilled("Water", Barrel->BarrelMaxFillLevel());
|
||||
barrel->SetLiquidContainer("Water", Barrel->GetLiquidContainerMaxFillLevel());
|
||||
}
|
||||
// Objects which are only in one eighth of the lorries.
|
||||
if (!Random(8))
|
||||
|
|
|
@ -66,7 +66,6 @@ private func FillWithLiquid()
|
|||
FillBarrel(mat);
|
||||
}
|
||||
|
||||
|
||||
private func FillBarrel(string szMat) // TODO: change the input to material index, instead of name. This makes more sense for this function
|
||||
{
|
||||
if (!LiquidContainerAccepts(szMat)) return;
|
||||
|
@ -109,11 +108,6 @@ private func EmptyBarrel(int angle, int strength, object clonk)
|
|||
AddEffect("ExtinguishingSpray", clonk, 100, 1, this, nil, spray);
|
||||
}
|
||||
|
||||
private func UpdateBarrel() // TODO: deprecated
|
||||
{
|
||||
UpdateLiquidContainer();
|
||||
}
|
||||
|
||||
private func UpdateLiquidContainer()
|
||||
{
|
||||
if (LiquidContainerIsEmpty())
|
||||
|
@ -195,64 +189,27 @@ protected func FxExtinguishingSprayTimer(object target, proplist effect, int tim
|
|||
|
||||
public func IsToolProduct() { return true; }
|
||||
|
||||
public func BarrelMaxFillLevel() // TODO: deprecated
|
||||
{
|
||||
return GetLiquidContainerMaxFillLevel();
|
||||
}
|
||||
|
||||
public func GetLiquidContainerMaxFillLevel()
|
||||
{
|
||||
return 300;
|
||||
}
|
||||
|
||||
public func GetFillLevel() // TODO: deprecated
|
||||
{
|
||||
return GetLiquidFillLevel();
|
||||
}
|
||||
|
||||
public func IsBarrel()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public func BarrelIsEmpty() // TODO: deprecated
|
||||
{
|
||||
return LiquidContainerIsEmpty();
|
||||
}
|
||||
|
||||
public func BarrelIsFull() // TODO: deprecated
|
||||
{
|
||||
return LiquidContainerIsFull();
|
||||
}
|
||||
|
||||
//returns the contained liquid
|
||||
public func GetBarrelMaterial() // TODO: deprecated
|
||||
{
|
||||
return GetLiquidName();
|
||||
}
|
||||
|
||||
public func IsBarrelForMaterial(string sznMaterial) // TODO: deprecated
|
||||
{
|
||||
return IsLiquidContainerForMaterial(sznMaterial);
|
||||
}
|
||||
|
||||
public func IsLiquidContainerForMaterial(string sznMaterial)
|
||||
{
|
||||
return WildcardMatch("Water",sznMaterial);
|
||||
}
|
||||
|
||||
|
||||
public func CanBeStackedWith(object other)
|
||||
{
|
||||
// Does not take into account the fill level for now.
|
||||
return inherited(other, ...) && (other->~GetBarrelMaterial() == this->GetBarrelMaterial());
|
||||
}
|
||||
|
||||
public func SetFilled(material, volume) // TODO: deprecated, and let's hope that the input types are correct
|
||||
{
|
||||
SetLiquidContainer(material, volume);
|
||||
}
|
||||
|
||||
public func CalcValue(object in_base, int for_player)
|
||||
{
|
||||
var val = GetDefValue();
|
||||
|
@ -275,7 +232,6 @@ private func GetValueOf(string szMaterial) // 300 px of...
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
public func Definition(proplist def)
|
||||
{
|
||||
SetProperty("PictureTransformation", Trans_Mul(Trans_Translate(0, 1000, 0), Trans_Rotate(-40, 1, 0, 0), Trans_Rotate(20, 0, 0, 1)), def);
|
||||
|
|
|
@ -23,17 +23,17 @@ public func LiquidOutput(string sznMaterial, int inMaxAmount, object pnPump, obj
|
|||
//Search liquid to pump
|
||||
if (bnWildcard)
|
||||
{
|
||||
var ptBarrel = FindObject(Find_Container(this), Find_Func("IsBarrel"), Find_Func("IsBarrelForMaterial", sznMaterial), Find_Not(Find_Func("BarrelIsEmpty")));
|
||||
var ptBarrel = FindObject(Find_Container(this), Find_Func("IsBarrel"), Find_Func("IsLiquidContainerForMaterial", sznMaterial), Find_Not(Find_Func("LiquidContainerIsEmpty")));
|
||||
var sztMaterial="";
|
||||
if (ptBarrel)
|
||||
sztMaterial = ptBarrel->GetBarrelMaterial();
|
||||
sztMaterial = ptBarrel->GetLiquidName();
|
||||
//Nothing to pump
|
||||
if (sztMaterial == "")
|
||||
return ["", 0];
|
||||
sznMaterial = sztMaterial;
|
||||
}
|
||||
var itFound = 0;
|
||||
for (var ptBarrel in FindObjects(Find_Container(this), Find_Func("IsBarrel"), Find_Func("IsBarrelForMaterial", sznMaterial), Find_Not(Find_Func("BarrelIsEmpty"))))
|
||||
for (var ptBarrel in FindObjects(Find_Container(this), Find_Func("IsBarrel"), Find_Func("IsLiquidContainerForMaterial", sznMaterial), Find_Not(Find_Func("LiquidContainerIsEmpty"))))
|
||||
{
|
||||
var atFound = ptBarrel->GetLiquid(sznMaterial, inMaxAmount - itFound, this);
|
||||
//Crazy stuff happend?
|
||||
|
@ -56,14 +56,14 @@ public func LiquidInput(string sznMaterial, int inMaxAmount, object pnPump, obje
|
|||
{
|
||||
var itAmount = inMaxAmount;
|
||||
//Fill liquids into already existing barrels
|
||||
for (var ptBarrel in FindObjects(Find_Container(this), Find_Func("IsBarrel"), Find_Func("IsContainerForMaterial", sznMaterial), Find_Not(Find_Func("BarrelIsEmpty")), Find_Not(Find_Func("BarrelIsFull"))))
|
||||
for (var ptBarrel in FindObjects(Find_Container(this), Find_Func("IsBarrel"), Find_Func("IsContainerForMaterial", sznMaterial), Find_Not(Find_Func("LiquidContainerIsEmpty")), Find_Not(Find_Func("LiquidContainerIsFull"))))
|
||||
{
|
||||
itAmount -= BoundBy(ptBarrel->PutLiquid(sznMaterial, itAmount, this), 0, itAmount);
|
||||
if (!itAmount)
|
||||
return inMaxAmount;
|
||||
}
|
||||
//Fill liquids into empty barrels
|
||||
for (var ptBarrel in FindObjects(Find_Container(this), Find_Func("IsBarrel"), Find_Func("IsContainerForMaterial", sznMaterial), Find_Func("BarrelIsEmpty")))
|
||||
for (var ptBarrel in FindObjects(Find_Container(this), Find_Func("IsBarrel"), Find_Func("IsContainerForMaterial", sznMaterial), Find_Func("LiquidContainerIsEmpty")))
|
||||
{
|
||||
itAmount -= BoundBy(ptBarrel->PutLiquid(sznMaterial, itAmount, this), 0, itAmount);
|
||||
if (!itAmount)
|
||||
|
|
|
@ -605,8 +605,8 @@ public func CheckLiquids(id product, bool remove)
|
|||
var need = liq_need[1];
|
||||
// Find liquid containers in this producer.
|
||||
for (var liq_container in FindObjects(Find_Container(this), Find_Func("IsLiquidContainer")))
|
||||
if (liq_container->~GetBarrelMaterial() == liquid)
|
||||
liquid_amount += liq_container->~GetFillLevel();
|
||||
if (liq_container->~GetLiquidName() == liquid)
|
||||
liquid_amount += liq_container->~GetLiquidFillLevel();
|
||||
// Find objects that "are" liquid (e.g. ice)
|
||||
for (var liq_object in FindObjects(Find_Container(this), Find_Func("IsLiquid")))
|
||||
if (liq_object->~IsLiquid() == liquid)
|
||||
|
|
|
@ -131,14 +131,14 @@ global func Test1_OnStart(int plr){ return true;}
|
|||
global func Test1_OnFinish(){ return; }
|
||||
global func Test1_Execute()
|
||||
{
|
||||
Log("Test the behaviour of IsBarrelForMaterial");
|
||||
Log("Test the behaviour of IsLiquidContainerForMaterial");
|
||||
|
||||
// a loop would be cool, but that would work only with runtime overloadable functions
|
||||
var container = CreateObject(Barrel);
|
||||
|
||||
var test1 = container->IsBarrelForMaterial("Water");
|
||||
var test2 = !container->IsBarrelForMaterial("Sky");
|
||||
var test3 = !container->IsBarrelForMaterial();
|
||||
var test1 = container->IsLiquidContainerForMaterial("Water");
|
||||
var test2 = !container->IsLiquidContainerForMaterial("Sky");
|
||||
var test3 = !container->IsLiquidContainerForMaterial();
|
||||
|
||||
Log("- Container returns 'true' if liquid parameter is correct: %v", test1);
|
||||
Log("- Container returns 'false' if liquid parameter is incorrect: %v", test2);
|
||||
|
|
|
@ -200,7 +200,7 @@ private func InitAI()
|
|||
var npc_fireman = CreateObjectAbove(Clonk, 200, 384);
|
||||
npc_fireman->SetName("Hubert");
|
||||
var barrel = npc_fireman->CreateContents(Barrel);
|
||||
barrel->SetFilled("Water", 300);
|
||||
barrel->SetLiquidContainer("Water", 300);
|
||||
npc_fireman->SetObjectLayer(npc_fireman);
|
||||
npc_fireman->SetDir(DIR_Left);
|
||||
npc_fireman->SetDialogue("Fireman", false);
|
||||
|
|
|
@ -354,7 +354,7 @@ global func FxTutorialFilledBarrelTimer(object target, proplist effect)
|
|||
if (!foundry)
|
||||
return FX_OK;
|
||||
var barrel = FindObject(Find_ID(Barrel), Find_Container(foundry));
|
||||
if (barrel && barrel->GetFillLevel() >= 100)
|
||||
if (barrel && barrel->GetLiquidFillLevel() >= 100)
|
||||
{
|
||||
var contents = GetPlayerControlAssignment(effect.plr, CON_Contents, true, true);
|
||||
guide->AddGuideMessage(Format("$MsgTutorialProduceLoam$", contents));
|
||||
|
|
|
@ -139,7 +139,7 @@ private func UpdateFuel()
|
|||
private func GetBarrel()
|
||||
{
|
||||
for (var barrel in FindObjects(Find_Func("IsBarrel"), Find_Container(this)))
|
||||
if (barrel->GetFillLevel() > 0)
|
||||
if (barrel->GetLiquidFillLevel() > 0)
|
||||
return barrel;
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ public func Intro_Start()
|
|||
{
|
||||
var train = FindObject(Find_ID(Locomotive));
|
||||
train->CreateContents(Coal, 2)->SetCon(20);
|
||||
train->CreateContents(Barrel)->SetFilled("Water", 300);
|
||||
train->CreateContents(Barrel)->SetLiquidContainer("Water", 300);
|
||||
train->ContainedRight();
|
||||
return ScheduleNext(4);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue