@quenty/rogue-properties 4.24.0 → 4.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [4.25.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/rogue-properties@4.24.0...@quenty/rogue-properties@4.25.0) (2023-07-17)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Can set rogue properties setter ([b3c148a](https://github.com/Quenty/NevermoreEngine/commit/b3c148a2d81a0c88e1fc7d9ae8e3c1cfc2033bf9))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [4.24.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/rogue-properties@4.23.0...@quenty/rogue-properties@4.24.0) (2023-07-15)
|
|
7
18
|
|
|
8
19
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/rogue-properties",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.25.0",
|
|
4
4
|
"description": "Roguelike properties which can be modified by external provides",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"publishConfig": {
|
|
45
45
|
"access": "public"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "ce69150f3e814a2e38a086bc90c7d92121b0c28b"
|
|
48
48
|
}
|
|
@@ -11,6 +11,7 @@ local RogueBindersShared = require("RogueBindersShared")
|
|
|
11
11
|
local BinderUtils = require("BinderUtils")
|
|
12
12
|
local RoguePropertyModifierUtils = require("RoguePropertyModifierUtils")
|
|
13
13
|
local RoguePropertyService = require("RoguePropertyService")
|
|
14
|
+
local ValueBaseUtils = require("ValueBaseUtils")
|
|
14
15
|
|
|
15
16
|
local RogueSetterProvider = {}
|
|
16
17
|
RogueSetterProvider.ServiceName = "RogueSetterProvider"
|
|
@@ -31,10 +32,15 @@ function RogueSetterProvider:GetBinder()
|
|
|
31
32
|
end
|
|
32
33
|
|
|
33
34
|
function RogueSetterProvider:Create(value, source)
|
|
34
|
-
assert(type(value) == "number", "Bad value")
|
|
35
35
|
assert(typeof(source) == "Instance" or source == nil, "Bad source")
|
|
36
36
|
|
|
37
|
-
local
|
|
37
|
+
local className = ValueBaseUtils.getClassNameFromType(typeof(value))
|
|
38
|
+
if not className then
|
|
39
|
+
error(string.format("[RogueSetterProvider] - Can't set to type %q", typeof(value)))
|
|
40
|
+
return nil
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
local obj = Instance.new(className)
|
|
38
44
|
obj.Name = "Setter"
|
|
39
45
|
obj.Value = value
|
|
40
46
|
|
|
@@ -52,38 +58,30 @@ function RogueSetterProvider:GetInvertedVersion(_propObj, _rogueProperty, baseVa
|
|
|
52
58
|
return baseValue
|
|
53
59
|
end
|
|
54
60
|
|
|
55
|
-
function RogueSetterProvider:GetModifiedVersion(propObj,
|
|
56
|
-
--
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return item:GetValue()
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
return baseValue
|
|
63
|
-
else
|
|
64
|
-
return baseValue
|
|
61
|
+
function RogueSetterProvider:GetModifiedVersion(propObj, _rogueProperty, baseValue)
|
|
62
|
+
-- Just return the first value
|
|
63
|
+
for _, item in pairs(self:_getSetters(propObj)) do
|
|
64
|
+
return item:GetValue()
|
|
65
65
|
end
|
|
66
|
+
|
|
67
|
+
return baseValue
|
|
66
68
|
end
|
|
67
69
|
|
|
68
70
|
function RogueSetterProvider:ObserveModifiedVersion(propObj, rogueProperty, observeBaseValue)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
})
|
|
84
|
-
else
|
|
85
|
-
return observeBaseValue
|
|
86
|
-
end
|
|
71
|
+
-- TODO: optimize this.
|
|
72
|
+
return RxBrioUtils.flatCombineLatest({
|
|
73
|
+
value = observeBaseValue;
|
|
74
|
+
allSetters = self:_observeSettersBrio(propObj):Pipe({
|
|
75
|
+
RxBrioUtils.flatMapBrio(function(item)
|
|
76
|
+
return item:ObserveValue();
|
|
77
|
+
end); -- this gets us a list of multipliers which should mutate pretty frequently.
|
|
78
|
+
Rx.defaultsToNil;
|
|
79
|
+
});
|
|
80
|
+
}):Pipe({
|
|
81
|
+
Rx.map(function(state)
|
|
82
|
+
return self:GetModifiedVersion(propObj, rogueProperty, state.value)
|
|
83
|
+
end);
|
|
84
|
+
})
|
|
87
85
|
end
|
|
88
86
|
|
|
89
87
|
function RogueSetterProvider:_observeSettersBrio(propObj)
|
|
@@ -89,14 +89,14 @@ function RogueProperty:SetBaseValue(value)
|
|
|
89
89
|
if baseValue then
|
|
90
90
|
baseValue.Value = self:_encodeValue(value)
|
|
91
91
|
else
|
|
92
|
-
warn("Failed to get the baseValue to parent")
|
|
92
|
+
warn("[RogueProperty] - Failed to get the baseValue to parent")
|
|
93
93
|
end
|
|
94
94
|
end
|
|
95
95
|
|
|
96
96
|
function RogueProperty:SetValue(value)
|
|
97
97
|
local baseValue = self:GetBaseValueObject()
|
|
98
98
|
if not baseValue then
|
|
99
|
-
warn("Failed to get the baseValue to parent")
|
|
99
|
+
warn("[RogueProperty] - Failed to get the baseValue to parent")
|
|
100
100
|
return
|
|
101
101
|
end
|
|
102
102
|
|
|
@@ -199,7 +199,7 @@ function RogueProperty:CreateMultiplier(amount, source)
|
|
|
199
199
|
local baseValue = self:GetBaseValueObject()
|
|
200
200
|
|
|
201
201
|
if not baseValue then
|
|
202
|
-
warn("Failed to get the baseValue to parent")
|
|
202
|
+
warn("[RogueProperty] - Failed to get the baseValue to parent")
|
|
203
203
|
end
|
|
204
204
|
|
|
205
205
|
local multiplier = provider:Create(amount, source)
|
|
@@ -215,7 +215,7 @@ function RogueProperty:CreateAdditive(amount, source)
|
|
|
215
215
|
local baseValue = self:GetBaseValueObject()
|
|
216
216
|
|
|
217
217
|
if not baseValue then
|
|
218
|
-
warn("Failed to get the baseValue to parent")
|
|
218
|
+
warn("[RogueProperty] - Failed to get the baseValue to parent")
|
|
219
219
|
end
|
|
220
220
|
|
|
221
221
|
local multiplier = provider:Create(amount, source)
|
|
@@ -224,17 +224,15 @@ function RogueProperty:CreateAdditive(amount, source)
|
|
|
224
224
|
return multiplier
|
|
225
225
|
end
|
|
226
226
|
|
|
227
|
-
function RogueProperty:CreateSetter(
|
|
228
|
-
assert(type(amount) == "number", "Bad amount")
|
|
229
|
-
|
|
227
|
+
function RogueProperty:CreateSetter(value, source)
|
|
230
228
|
local provider = self._serviceBag:GetService(RogueSetterProvider)
|
|
231
229
|
local baseValue = self:GetBaseValueObject()
|
|
232
230
|
|
|
233
231
|
if not baseValue then
|
|
234
|
-
warn("Failed to get the baseValue to parent")
|
|
232
|
+
warn("[RogueProperty] - Failed to get the baseValue to parent")
|
|
235
233
|
end
|
|
236
234
|
|
|
237
|
-
local setter = provider:Create(
|
|
235
|
+
local setter = provider:Create(value, source)
|
|
238
236
|
setter.Parent = baseValue
|
|
239
237
|
|
|
240
238
|
return setter
|