1
0

Prefabs: Implemented support for ExpandFloorStrategy.

This commit is contained in:
Mattes D
2016-11-21 17:12:01 +01:00
parent 59f34ab801
commit 6b70574da9
13 changed files with 1282 additions and 1191 deletions

View File

@@ -526,16 +526,15 @@ bool cPrefabPiecePool::ReadPieceMetadataCubesetVer1(
}
// Get the values:
int AddWeightIfSame = 0, DefaultWeight = 100, MoveToGround = 0, ShouldExpandFloor = 0;
int AddWeightIfSame = 0, DefaultWeight = 100, MoveToGround = 0;
AString DepthWeight, MergeStrategy, VerticalLimit, VerticalStrategy;
a_LuaState.GetNamedValue("AddWeightIfSame", AddWeightIfSame);
a_LuaState.GetNamedValue("DefaultWeight", DefaultWeight);
a_LuaState.GetNamedValue("DepthWeight", DepthWeight);
a_LuaState.GetNamedValue("MergeStrategy", MergeStrategy);
a_LuaState.GetNamedValue("MoveToGround", MoveToGround);
a_LuaState.GetNamedValue("ShouldExpandFloor", ShouldExpandFloor);
a_LuaState.GetNamedValue("VerticalLimit", VerticalLimit);
a_LuaState.GetNamedValue("VerticalStrategy", VerticalStrategy);
a_LuaState.GetNamedValue("AddWeightIfSame", AddWeightIfSame);
a_LuaState.GetNamedValue("DefaultWeight", DefaultWeight);
a_LuaState.GetNamedValue("DepthWeight", DepthWeight);
a_LuaState.GetNamedValue("MergeStrategy", MergeStrategy);
a_LuaState.GetNamedValue("MoveToGround", MoveToGround);
a_LuaState.GetNamedValue("VerticalLimit", VerticalLimit);
a_LuaState.GetNamedValue("VerticalStrategy", VerticalStrategy);
// Apply the values:
a_Prefab->SetAddWeightIfSame(AddWeightIfSame);
@@ -555,7 +554,42 @@ bool cPrefabPiecePool::ReadPieceMetadataCubesetVer1(
a_Prefab->SetMergeStrategy(strategy->second);
}
a_Prefab->SetMoveToGround(MoveToGround != 0);
a_Prefab->SetExtendFloor(ShouldExpandFloor != 0);
AString ExpandFloorStrategyStr;
if (!a_LuaState.GetNamedValue("ExpandFloorStrategy", ExpandFloorStrategyStr))
{
// Check the older variant for ExpandFloorStrategy, ShouldExpandFloor:
int ShouldExpandFloor;
if (a_LuaState.GetNamedValue("ShouldExpandFloor", ShouldExpandFloor))
{
LOG("Piece \"%s\" in file \"%s\" is using the old \"ShouldExpandFloor\" attribute. Use the new \"ExpandFloorStrategy\" attribute instead for more options.",
a_PieceName.c_str(), a_FileName.c_str()
);
a_Prefab->SetExtendFloorStrategy((ShouldExpandFloor != 0) ? cPrefab::efsRepeatBottomTillNonAir : cPrefab::efsNone);
}
}
else
{
auto lcExpandFloorStrategyStr = StrToLower(ExpandFloorStrategyStr);
if (lcExpandFloorStrategyStr == "repeatbottomtillnonair")
{
a_Prefab->SetExtendFloorStrategy(cPrefab::efsRepeatBottomTillNonAir);
}
else if (lcExpandFloorStrategyStr == "repeatbottomtillsolid")
{
a_Prefab->SetExtendFloorStrategy(cPrefab::efsRepeatBottomTillSolid);
}
else
{
if (lcExpandFloorStrategyStr != "none")
{
LOGWARNING("Piece \"%s\" in file \"%s\" is using an unknown \"ExpandFloorStrategy\" attribute value: \"%s\"",
a_PieceName.c_str(), a_FileName.c_str(), ExpandFloorStrategyStr.c_str()
);
}
a_Prefab->SetExtendFloorStrategy(cPrefab::efsNone);
}
}
if (!VerticalLimit.empty())
{
if (!a_Prefab->SetVerticalLimitFromString(VerticalLimit, a_LogWarnings))