Working on improving the serialization system and ObjectProperty/IPropertyObject (TODO: come up with better names). The plan is to:

- Add support for some of the most common types (vectors, colors, rects) so there's no need to parse the values in the setters of the serializable properties (see Holdable.HoldPos for example).
- Make a generic version of the item editing HUD that can be used on any IPropertyObject. Should make it easier to implement things like the character editor, editing structure properties, particle editor, etc.
- Improve the interface of the editing HUD. Instead of having to type in a string value into a textbox, there should be number input fields for numeric properties, sliders for properties that only accept a range of values, a color picker, etc. And tooltips.
This commit is contained in:
Joonas Rikkonen
2017-11-03 19:41:21 +02:00
parent 8b9be55135
commit a0d606ef5f
41 changed files with 345 additions and 263 deletions
@@ -23,7 +23,7 @@ namespace Barotrauma.Items.Components
// }
//}
[Editable, HasDefaultValue(2000.0f, true)]
[Editable, SerializableProperty(2000.0f, true)]
public float MaxForce
{
get { return maxForce; }
@@ -16,21 +16,21 @@ namespace Barotrauma.Items.Components
bool hasPower;
[Editable, HasDefaultValue(false, true)]
[Editable, SerializableProperty(false, true)]
public bool RequireWaterDetectors
{
get;
set;
}
[Editable, HasDefaultValue(true, true)]
[Editable, SerializableProperty(true, true)]
public bool RequireOxygenDetectors
{
get;
set;
}
[Editable, HasDefaultValue(false, true)]
[Editable, SerializableProperty(false, true)]
public bool ShowHullIntegrity
{
get;
@@ -29,7 +29,7 @@ namespace Barotrauma.Items.Components
private set;
}
[Editable, HasDefaultValue(100.0f, true)]
[Editable, SerializableProperty(100.0f, true)]
public float GeneratedAmount
{
get { return generatedAmount; }
@@ -15,7 +15,7 @@ namespace Barotrauma.Items.Components
public Hull hull1;
[HasDefaultValue(0.0f, true)]
[SerializableProperty(0.0f, true)]
public float FlowPercentage
{
get { return flowPercentage; }
@@ -27,7 +27,7 @@ namespace Barotrauma.Items.Components
}
}
[HasDefaultValue(80.0f, false)]
[SerializableProperty(80.0f, false)]
public float MaxFlow
{
get { return maxFlow; }
@@ -26,14 +26,14 @@ namespace Barotrauma.Items.Components
private float displayBorderSize;
[HasDefaultValue(10000.0f, false)]
[SerializableProperty(10000.0f, false)]
public float Range
{
get { return range; }
set { range = MathHelper.Clamp(value, 0.0f, 100000.0f); }
}
[HasDefaultValue(false, false)]
[SerializableProperty(false, false)]
public bool DetectSubmarineWalls
{
get;
@@ -54,7 +54,7 @@ namespace Barotrauma.Items.Components
private float? nextServerLogWriteTime;
private float lastServerLogWriteTime;
[Editable, HasDefaultValue(9500.0f, true)]
[Editable, SerializableProperty(9500.0f, true)]
public float MeltDownTemp
{
get { return meltDownTemp; }
@@ -64,7 +64,7 @@ namespace Barotrauma.Items.Components
}
}
[Editable, HasDefaultValue(9000.0f, true)]
[Editable, SerializableProperty(9000.0f, true)]
public float FireTemp
{
get { return fireTemp; }
@@ -74,7 +74,7 @@ namespace Barotrauma.Items.Components
}
}
[Editable, HasDefaultValue(1.0f, true)]
[Editable, SerializableProperty(1.0f, true)]
public float PowerPerTemp
{
get { return powerPerTemp; }
@@ -84,7 +84,7 @@ namespace Barotrauma.Items.Components
}
}
[HasDefaultValue(0.0f, true)]
[SerializableProperty(0.0f, true)]
public float FissionRate
{
get { return fissionRate; }
@@ -95,7 +95,7 @@ namespace Barotrauma.Items.Components
}
}
[HasDefaultValue(0.0f, true)]
[SerializableProperty(0.0f, true)]
public float CoolingRate
{
get { return coolingRate; }
@@ -106,7 +106,7 @@ namespace Barotrauma.Items.Components
}
}
[HasDefaultValue(0.0f, true)]
[SerializableProperty(0.0f, true)]
public float Temperature
{
get { return temperature; }
@@ -122,7 +122,7 @@ namespace Barotrauma.Items.Components
return (temperature > 0.0f);
}
[HasDefaultValue(false, true)]
[SerializableProperty(false, true)]
public bool AutoTemp
{
get { return autoTemp; }
@@ -139,7 +139,7 @@ namespace Barotrauma.Items.Components
public float AvailableFuel { get; set; }
[HasDefaultValue(500.0f, true)]
[SerializableProperty(500.0f, true)]
public float ShutDownTemp
{
get { return shutDownTemp; }
@@ -67,7 +67,7 @@ namespace Barotrauma.Items.Components
}
}
[Editable, HasDefaultValue(0.5f, true)]
[Editable, SerializableProperty(0.5f, true)]
public float NeutralBallastLevel
{
get { return neutralBallastLevel; }