Refactoring: Removed old barrel functions

Replaced old barrel functions with the liquid container library calls
liquid_container
Mark 2016-01-29 23:23:55 +01:00
parent 64f7b4152e
commit 9ee44b39ed
9 changed files with 16 additions and 60 deletions

View File

@ -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))

View File

@ -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);

View File

@ -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)

View File

@ -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)

View File

@ -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);

View File

@ -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);

View File

@ -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);
guide->AddGuideMessage(Format("$MsgTutorialProduceLoam$", contents));

View File

@ -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;
}

View File

@ -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);
}