(20f37d9c7) Option to toggle structure drop shadows and edit the position of the shadow

This commit is contained in:
Joonas Rikkonen
2019-04-11 18:25:01 +03:00
parent b76aa1ff3a
commit dd45af5a9f
2 changed files with 32 additions and 10 deletions

View File

@@ -215,23 +215,24 @@ namespace Barotrauma
{
if (Prefab.BackgroundSprite != null)
{
bool drawDropShadow = Submarine != null && HasBody;
Vector2 dropShadowOffset = Vector2.Zero;
if (drawDropShadow)
if (UseDropShadow)
{
dropShadowOffset = Submarine.HiddenSubPosition - Position;
if (dropShadowOffset != Vector2.Zero)
dropShadowOffset = DropShadowOffset;
if (dropShadowOffset == Vector2.Zero)
{
if (IsHorizontal)
if (Submarine == null)
{
dropShadowOffset = new Vector2(0.0f, Math.Sign(dropShadowOffset.Y) * 10.0f);
dropShadowOffset = Vector2.UnitY * 10.0f;
}
else
{
dropShadowOffset = new Vector2(Math.Sign(dropShadowOffset.X) * 10.0f, 0.0f);
dropShadowOffset = IsHorizontal ?
new Vector2(0.0f, Math.Sign(Submarine.HiddenSubPosition.Y - Position.Y) * 10.0f) :
new Vector2(Math.Sign(Submarine.HiddenSubPosition.X - Position.X) * 10.0f, 0.0f);
}
dropShadowOffset.Y = -dropShadowOffset.Y;
}
dropShadowOffset.Y = -dropShadowOffset.Y;
}
if (DrawTiled)
@@ -251,7 +252,7 @@ namespace Barotrauma
textureScale: TextureScale * Scale,
startOffset: backGroundOffset);
if (drawDropShadow)
if (UseDropShadow)
{
Prefab.BackgroundSprite.DrawTiled(
spriteBatch,
@@ -276,7 +277,7 @@ namespace Barotrauma
rotate: 0,
spriteEffect: SpriteEffects);
if (drawDropShadow)
if (UseDropShadow)
{
Prefab.BackgroundSprite.Draw(
spriteBatch,

View File

@@ -144,6 +144,20 @@ namespace Barotrauma
get { return spriteColor; }
set { spriteColor = value; }
}
[Editable, Serialize(false, true)]
public bool UseDropShadow
{
get;
private set;
}
[Serialize("0,0", true), Editable(ToolTip = "The position of the drop shadow relative to the structure. If set to zero, the shadow is positioned automatically so that it points towards the sub's center of mass.")]
public Vector2 DropShadowOffset
{
get;
private set;
}
public override Rectangle Rect
{
@@ -1139,6 +1153,13 @@ namespace Barotrauma
if (element.GetAttributeBool("flippedx", false)) s.FlipX(false);
if (element.GetAttributeBool("flippedy", false)) s.FlipY(false);
SerializableProperty.DeserializeProperties(s, element);
//structures with a body drop a shadow by default
if (element.Attribute("usedropshadow") == null)
{
s.UseDropShadow = prefab.Body;
}
return s;
}