@@ -13,52 +13,17 @@ public struct PropertyValue
13
13
[ FieldOffset ( 0 ) ]
14
14
public float RawFloat = 0 ;
15
15
16
- public PropertyValue ( bool value )
17
- {
18
- RawLong = Convert . ToInt64 ( value ) ;
19
- }
20
-
21
- public PropertyValue ( float value )
22
- {
23
- RawFloat = value ;
24
- }
25
-
26
- public PropertyValue ( int value )
27
- {
28
- RawLong = value ;
29
- }
30
-
31
- public PropertyValue ( long value )
32
- {
33
- RawLong = value ;
34
- }
35
-
36
- public PropertyValue ( uint value )
37
- {
38
- RawLong = ( int ) value ;
39
- }
40
-
41
- public PropertyValue ( ulong value )
42
- {
43
- // for EntityId, Time, Guid, RegionId
44
- RawLong = ( long ) value ;
45
- }
46
-
47
- public PropertyValue ( PrototypeId prototypeId )
48
- {
49
- RawLong = ( long ) prototypeId ;
50
- }
51
-
52
- public PropertyValue ( CurveId curveId )
53
- {
54
- RawLong = ( long ) curveId ;
55
- }
56
-
57
- public PropertyValue ( AssetId assetId )
58
- {
59
- RawLong = ( long ) assetId ;
60
- }
61
-
16
+ // Constructors
17
+
18
+ public PropertyValue ( bool value ) { RawLong = Convert . ToInt64 ( value ) ; }
19
+ public PropertyValue ( float value ) { RawFloat = value ; }
20
+ public PropertyValue ( int value ) { RawLong = value ; }
21
+ public PropertyValue ( long value ) { RawLong = value ; }
22
+ public PropertyValue ( uint value ) { RawLong = ( int ) value ; }
23
+ public PropertyValue ( ulong value ) { RawLong = ( long ) value ; } // for EntityId, Time, Guid, RegionId
24
+ public PropertyValue ( PrototypeId prototypeId ) { RawLong = ( long ) prototypeId ; }
25
+ public PropertyValue ( CurveId curveId ) { RawLong = ( long ) curveId ; }
26
+ public PropertyValue ( AssetId assetId ) { RawLong = ( long ) assetId ; }
62
27
public PropertyValue ( Vector3 vector )
63
28
{
64
29
ulong x = ( ulong ) vector . X & 0x1FFFFF ;
@@ -78,24 +43,16 @@ public PropertyValue(Vector3 vector)
78
43
RawLong = ( long ) ( x | y | z ) ;
79
44
}
80
45
46
+ // Conversion to specific value types
81
47
public bool ToBool ( ) => RawLong != 0 ;
82
-
83
48
public float ToFloat ( ) => RawFloat ;
84
-
85
49
public int ToInt ( ) => ( int ) RawLong ;
86
-
87
50
public long ToLong ( ) => RawLong ;
88
-
89
51
public uint ToUInt ( ) => ( uint ) ( int ) RawLong ;
90
-
91
52
public ulong ToULong ( ) => ( ulong ) RawLong ;
92
-
93
53
public PrototypeId ToPrototypeId ( ) => ( PrototypeId ) RawLong ;
94
-
95
54
public CurveId ToCurveId ( ) => ( CurveId ) RawLong ;
96
-
97
55
public AssetId ToAssetId ( ) => ( AssetId ) RawLong ;
98
-
99
56
public Vector3 ToVector3 ( )
100
57
{
101
58
ulong raw = ( ulong ) RawLong ;
@@ -121,11 +78,36 @@ public string Print(PropertyDataType type)
121
78
{
122
79
case PropertyDataType . Boolean : return ToBool ( ) . ToString ( ) ;
123
80
case PropertyDataType . Real : return ToFloat ( ) . ToString ( ) ;
124
- case PropertyDataType . Integer : return ToInt ( ) . ToString ( ) ;
81
+ case PropertyDataType . Integer : return ToLong ( ) . ToString ( ) ;
125
82
case PropertyDataType . Prototype : return GameDatabase . GetPrototypeName ( ToPrototypeId ( ) ) ;
83
+ //case PropertyDataType.Curve: return "Curve Property Value";
84
+ case PropertyDataType . Asset : return GameDatabase . GetAssetName ( ToAssetId ( ) ) ;
126
85
case PropertyDataType . Int21Vector3 : return ToVector3 ( ) . ToString ( ) ;
127
86
default : return $ "0x{ RawLong : X} ";
128
87
}
129
88
}
89
+
90
+ // Implicit casting
91
+ public static implicit operator PropertyValue ( bool value ) => new ( value ) ;
92
+ public static implicit operator PropertyValue ( float value ) => new ( value ) ;
93
+ public static implicit operator PropertyValue ( int value ) => new ( value ) ;
94
+ public static implicit operator PropertyValue ( long value ) => new ( value ) ;
95
+ public static implicit operator PropertyValue ( uint value ) => new ( value ) ;
96
+ public static implicit operator PropertyValue ( ulong value ) => new ( value ) ;
97
+ public static implicit operator PropertyValue ( PrototypeId value ) => new ( value ) ;
98
+ public static implicit operator PropertyValue ( CurveId value ) => new ( value ) ;
99
+ public static implicit operator PropertyValue ( AssetId value ) => new ( value ) ;
100
+ public static implicit operator PropertyValue ( Vector3 value ) => new ( value ) ;
101
+
102
+ public static implicit operator bool ( PropertyValue value ) => value . ToBool ( ) ;
103
+ public static implicit operator float ( PropertyValue value ) => value . ToFloat ( ) ;
104
+ public static implicit operator int ( PropertyValue value ) => value . ToInt ( ) ;
105
+ public static implicit operator long ( PropertyValue value ) => value . ToLong ( ) ;
106
+ public static implicit operator uint ( PropertyValue value ) => value . ToUInt ( ) ;
107
+ public static implicit operator ulong ( PropertyValue value ) => value . ToULong ( ) ;
108
+ public static implicit operator PrototypeId ( PropertyValue value ) => value . ToPrototypeId ( ) ;
109
+ public static implicit operator CurveId ( PropertyValue value ) => value . ToCurveId ( ) ;
110
+ public static implicit operator AssetId ( PropertyValue value ) => value . ToAssetId ( ) ;
111
+ public static implicit operator Vector3 ( PropertyValue value ) => value . ToVector3 ( ) ;
130
112
}
131
113
}
0 commit comments