(d9829ac) v0.9.4.0

This commit is contained in:
Regalis
2019-10-24 18:05:42 +02:00
parent 9aa12bcac2
commit b39922a074
319 changed files with 12516 additions and 6815 deletions
@@ -26,6 +26,9 @@ namespace Barotrauma
public float LastImpactSoundTime;
public const float ImpactSoundInterval = 0.2f;
private bool editingHUDRefreshPending;
private float editingHUDRefreshTimer;
class SpriteState
{
public float RotationState;
@@ -33,7 +36,7 @@ namespace Barotrauma
public bool IsActive = true;
}
private Dictionary<ItemPrefab.DecorativeSprite, SpriteState> spriteAnimState = new Dictionary<ItemPrefab.DecorativeSprite, SpriteState>();
private Dictionary<DecorativeSprite, SpriteState> spriteAnimState = new Dictionary<DecorativeSprite, SpriteState>();
private Sprite activeSprite;
public override Sprite Sprite
@@ -128,11 +131,13 @@ namespace Barotrauma
}
}
foreach (BrokenItemSprite brokenSprite in Prefab.BrokenSprites)
for (int i = 0; i < Prefab.BrokenSprites.Count;i++)
{
if (condition <= brokenSprite.MaxCondition)
float minCondition = i > 0 ? Prefab.BrokenSprites[i - i].MaxCondition : 0.0f;
if (condition <= minCondition ||
condition <= Prefab.BrokenSprites[i].MaxCondition && !Prefab.BrokenSprites[i].FadeIn)
{
activeSprite = brokenSprite.Sprite;
activeSprite = Prefab.BrokenSprites[i].Sprite;
break;
}
}
@@ -211,18 +216,18 @@ namespace Barotrauma
}
}
float depth = GetDrawDepth();
if (activeSprite != null)
{
SpriteEffects oldEffects = activeSprite.effects;
activeSprite.effects ^= SpriteEffects;
SpriteEffects oldBrokenSpriteEffects = SpriteEffects.None;
if (fadeInBrokenSprite != null)
if (fadeInBrokenSprite != null && fadeInBrokenSprite.Sprite != activeSprite)
{
oldBrokenSpriteEffects = fadeInBrokenSprite.Sprite.effects;
fadeInBrokenSprite.Sprite.effects ^= SpriteEffects;
}
float depth = GetDrawDepth();
if (body == null)
{
bool flipHorizontal = (SpriteEffects & SpriteEffects.FlipHorizontally) != 0;
@@ -304,9 +309,9 @@ namespace Barotrauma
}
activeSprite.effects = oldEffects;
if (fadeInBrokenSprite != null)
if (fadeInBrokenSprite != null && fadeInBrokenSprite.Sprite != activeSprite)
{
fadeInBrokenSprite.Sprite.effects = oldEffects;
fadeInBrokenSprite.Sprite.effects = oldBrokenSpriteEffects;
}
}
@@ -314,7 +319,7 @@ namespace Barotrauma
//causing them to be removed from the list
for (int i = drawableComponents.Count - 1; i >= 0; i--)
{
drawableComponents[i].Draw(spriteBatch, editing);
drawableComponents[i].Draw(spriteBatch, editing, depth);
}
if (GameMain.DebugDraw)
@@ -437,21 +442,23 @@ namespace Barotrauma
public override void UpdateEditing(Camera cam)
{
if (editingHUD == null || editingHUD.UserData as Item != this)
if (editingHUD == null || editingHUD.UserData as Item != this ||
(editingHUDRefreshPending && editingHUDRefreshTimer <= 0.0f))
{
editingHUD = CreateEditingHUD(Screen.Selected != GameMain.SubEditorScreen);
editingHUDRefreshTimer = 1.0f;
}
if (Screen.Selected != GameMain.SubEditorScreen) return;
if (Screen.Selected != GameMain.SubEditorScreen) { return; }
if (Character.Controlled == null) activeHUDs.Clear();
if (Character.Controlled == null) { activeHUDs.Clear(); }
if (!Linkable) return;
if (!Linkable) { return; }
if (!PlayerInput.KeyDown(Keys.Space)) return;
if (!PlayerInput.KeyDown(Keys.Space)) { return; }
bool lClick = PlayerInput.LeftButtonClicked();
bool rClick = PlayerInput.RightButtonClicked();
if (!lClick && !rClick) return;
if (!lClick && !rClick) { return; }
Vector2 position = cam.ScreenToWorld(PlayerInput.MousePosition);
var otherEntity = mapEntityList.FirstOrDefault(e => e != this && e.IsHighlighted && e.IsMouseOn(position));
@@ -472,6 +479,8 @@ namespace Barotrauma
public GUIComponent CreateEditingHUD(bool inGame = false)
{
editingHUDRefreshPending = false;
int heightScaled = (int)(20 * GUI.Scale);
editingHUD = new GUIFrame(new RectTransform(new Vector2(0.3f, 0.25f), GUI.Canvas, Anchor.CenterRight) { MinSize = new Point(400, 0) }) { UserData = this };
GUIListBox listBox = new GUIListBox(new RectTransform(new Vector2(0.95f, 0.8f), editingHUD.RectTransform, Anchor.Center), style: null)
@@ -672,6 +681,13 @@ namespace Barotrauma
editingHUDCreated = editingHUD != null && editingHUD != prevEditingHUD;
}
if (editingHUD == null ||
!(GUI.KeyboardDispatcher.Subscriber is GUITextBox textBox) ||
!editingHUD.IsParentOf(textBox))
{
editingHUDRefreshTimer -= deltaTime;
}
List<ItemComponent> prevActiveHUDs = new List<ItemComponent>(activeHUDs);
List<ItemComponent> activeComponents = new List<ItemComponent>(components);
foreach (MapEntity entity in linkedTo)
@@ -916,6 +932,7 @@ namespace Barotrauma
break;
case NetEntityEvent.Type.ChangeProperty:
ReadPropertyChange(msg, false);
editingHUDRefreshPending = true;
break;
case NetEntityEvent.Type.Invalid:
break;
@@ -954,6 +971,7 @@ namespace Barotrauma
break;
case NetEntityEvent.Type.ChangeProperty:
WritePropertyChange(msg, extraData, true);
editingHUDRefreshTimer = 1.0f;
break;
case NetEntityEvent.Type.Combine:
UInt16 combineTargetID = (UInt16)extraData[1];
@@ -969,6 +987,7 @@ namespace Barotrauma
if (parentInventory != null || body == null || !body.Enabled || Removed)
{
positionBuffer.Clear();
return;
}