Flipping sprites of staircases & engine

This commit is contained in:
juanjp600
2016-10-01 16:41:16 -03:00
parent d7047c0df8
commit bdcd894b83
8 changed files with 81 additions and 39 deletions

View File

@@ -57,7 +57,9 @@ namespace Barotrauma
bool isHorizontal;
public float lastUpdate;
public SpriteEffects SpriteEffects = SpriteEffects.None;
public override Sprite Sprite
{
get { return prefab.sprite; }
@@ -438,7 +440,10 @@ namespace Barotrauma
Vector2.Zero, color, Point.Zero);
}
}
SpriteEffects oldEffects = prefab.sprite.effects;
prefab.sprite.effects ^= SpriteEffects;
if (back == prefab.sprite.Depth > 0.5f || editing)
{
foreach (WallSection s in sections)
@@ -462,6 +467,8 @@ namespace Barotrauma
prefab.sprite.DrawTiled(spriteBatch, new Vector2(s.rect.X + drawOffset.X, -(s.rect.Y + drawOffset.Y)), new Vector2(s.rect.Width, s.rect.Height), Vector2.Zero, color, offset);
}
}
prefab.sprite.effects = oldEffects;
}
private bool OnWallCollision(Fixture f1, Fixture f2, Contact contact)
@@ -747,6 +754,11 @@ namespace Barotrauma
public override void FlipX()
{
base.FlipX();
if (prefab.CanSpriteFlipX)
{
SpriteEffects ^= SpriteEffects.FlipHorizontally;
}
if (StairDirection != Direction.None)
{

View File

@@ -17,6 +17,7 @@ namespace Barotrauma
private bool isPlatform;
private Direction stairDirection;
private bool canSpriteFlipX;
private float maxHealth;
@@ -48,6 +49,11 @@ namespace Barotrauma
get { return stairDirection; }
}
public bool CanSpriteFlipX
{
get { return canSpriteFlipX; }
}
public Vector2 Size
{
get { return size; }
@@ -107,6 +113,8 @@ namespace Barotrauma
sp.sprite.effects = SpriteEffects.FlipHorizontally;
if (ToolBox.GetAttributeBool(subElement, "flipvertical", false))
sp.sprite.effects = SpriteEffects.FlipVertically;
if (ToolBox.GetAttributeBool(subElement, "canflipx", false))
sp.canSpriteFlipX = true;
break;
case "backgroundsprite":

View File

@@ -562,7 +562,7 @@ namespace Barotrauma
public void Update(float deltaTime)
{
if (PlayerInput.KeyHit(InputType.Crouch) && (this == MainSub)) FlipX();
//if (PlayerInput.KeyHit(InputType.Crouch) && (this == MainSub)) FlipX();
if (Level.Loaded == null) return;