(c224aa4f4) Refresh the size of the linked gap when a door's scale is changed

This commit is contained in:
Joonas Rikkonen
2019-06-14 16:15:00 +03:00
parent d08132afc5
commit c76ae7612d
4 changed files with 32 additions and 8 deletions
@@ -170,14 +170,14 @@ namespace Barotrauma.Items.Components
get;
set;
}
public Door(Item item, XElement element)
: base(item, element)
{
IsHorizontal = element.GetAttributeBool("horizontal", false);
canBePicked = element.GetAttributeBool("canbepicked", false);
autoOrientGap = element.GetAttributeBool("autoorientgap", false);
foreach (XElement subElement in element.Elements())
{
string texturePath = subElement.GetAttributeString("texture", "");
@@ -401,6 +401,18 @@ namespace Barotrauma.Items.Components
#endif
}
public override void OnScaleChanged()
{
#if CLIENT
UpdateConvexHulls();
#endif
if (linkedGap != null)
{
RefreshLinkedGap();
linkedGap.Rect = item.Rect;
}
}
protected override void RemoveComponentSpecific()
{
base.RemoveComponentSpecific();
@@ -693,6 +693,8 @@ namespace Barotrauma.Items.Components
/// </summary>
public virtual void OnItemLoaded() { }
public virtual void OnScaleChanged() { }
// TODO: Consider using generics, interfaces, or inheritance instead of reflection -> would be easier to debug when something changes/goes wrong.
// For example, currently we can edit the constructors but they will fail in runtime because the parameters are not changed here.
// It's also painful to find where the constructors are used, because the references exist only at runtime.