Build 0.18.9.0

This commit is contained in:
Markus Isberg
2022-06-14 04:14:47 +09:00
parent 4f5a3bf8b9
commit 856f894203
39 changed files with 459 additions and 377 deletions
@@ -8,6 +8,8 @@ namespace Barotrauma
{
public class GUICanvas : RectTransform
{
private static readonly object mutex = new object();
protected GUICanvas() : base(size, parent: null) { }
private static GUICanvas _instance;
@@ -39,22 +41,25 @@ namespace Barotrauma
private static void OnChildrenChanged(RectTransform _)
{
//add weak reference if we don't have one yet
foreach (var child in _instance.Children)
lock (mutex)
{
if (!_instance.childrenWeakRef.Any(c => c.TryGetTarget(out var existingChild) && existingChild == child))
//add weak reference if we don't have one yet
foreach (var child in _instance.Children)
{
_instance.childrenWeakRef.Add(new WeakReference<RectTransform>(child));
if (!_instance.childrenWeakRef.Any(c => c.TryGetTarget(out var existingChild) && existingChild == child))
{
_instance.childrenWeakRef.Add(new WeakReference<RectTransform>(child));
}
}
}
//get rid of strong references
_instance.children.Clear();
//remove dead children
for (int i = _instance.childrenWeakRef.Count - 2; i >= 0; i--)
{
if (!_instance.childrenWeakRef[i].TryGetTarget(out var child) || child.Parent != _instance)
//get rid of strong references
_instance.children.Clear();
//remove dead children
for (int i = _instance.childrenWeakRef.Count - 2; i >= 0; i--)
{
_instance.childrenWeakRef.RemoveAt(i);
if (!_instance.childrenWeakRef[i].TryGetTarget(out var child) || child.Parent != _instance)
{
_instance.childrenWeakRef.RemoveAt(i);
}
}
}
}
@@ -207,5 +207,21 @@ namespace Barotrauma
return ItemQualityColorNormal;
}
}
public static void RecalculateFonts()
{
foreach (var font in Fonts.Values)
{
font.Prefabs.ForEach(p => p.LoadFont());
}
}
public static void RecalculateSizeRestrictions()
{
foreach (var componentStyle in ComponentStyles)
{
componentStyle.RefreshSize();
}
}
}
}