Option to configure alternate sprites for broken items

This commit is contained in:
Joonas Rikkonen
2018-01-11 16:51:36 +02:00
parent c9f15d71ef
commit 25ebe52248
4 changed files with 60 additions and 15 deletions
@@ -383,6 +383,7 @@ namespace Barotrauma
case "trigger":
case "sprite":
case "deconstruct":
case "brokensprite":
break;
case "aitarget":
aiTarget = new AITarget(this);
@@ -25,8 +25,6 @@ namespace Barotrauma
partial class ItemPrefab : MapEntityPrefab
{
//static string contentFolder = "Content/Items/";
private readonly string configFile;
//default size
@@ -305,12 +303,28 @@ namespace Barotrauma
sprite = new Sprite(subElement, spriteFolder);
size = sprite.size;
break;
#if CLIENT
case "brokensprite":
string brokenSpriteFolder = "";
if (!subElement.GetAttributeString("texture", "").Contains("/"))
{
brokenSpriteFolder = Path.GetDirectoryName(filePath);
}
var brokenSprite = new BrokenItemSprite(new Sprite(subElement, brokenSpriteFolder), subElement.GetAttributeFloat("maxcondition", 0.0f));
int spriteIndex = 0;
for (int i = 0; i < BrokenSprites.Count && BrokenSprites[i].MaxCondition < brokenSprite.MaxCondition; i++)
{
spriteIndex = i;
}
BrokenSprites.Insert(spriteIndex, brokenSprite);
break;
#endif
case "deconstruct":
DeconstructTime = subElement.GetAttributeFloat("time", 10.0f);
foreach (XElement deconstructItem in subElement.Elements())
{
string deconstructItemName = deconstructItem.GetAttributeString("name", "not found");
//minCondition does <= check, meaning that below or equeal to min condition will be skipped.
float minCondition = deconstructItem.GetAttributeFloat("mincondition", -0.1f);