@quenty/rogue-properties 4.23.0 → 4.24.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 +11 -0
- package/package.json +10 -10
- package/src/Shared/Modifiers/Additive/RogueAdditiveProvider.lua +14 -0
- package/src/Shared/Modifiers/Multiplier/RogueMultiplierProvider.lua +14 -0
- package/src/Shared/Modifiers/Setter/RogueSetterProvider.lua +5 -0
- package/src/Shared/Property/RogueProperty.lua +32 -2
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.24.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/rogue-properties@4.23.0...@quenty/rogue-properties@4.24.0) (2023-07-15)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Add support for setting values in RoguePropertyValue ([df5cdc4](https://github.com/Quenty/NevermoreEngine/commit/df5cdc42d57756cf269fb887113a28e9feb50095))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [4.23.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/rogue-properties@4.22.2...@quenty/rogue-properties@4.23.0) (2023-07-10)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @quenty/rogue-properties
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/rogue-properties",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.24.0",
|
|
4
4
|
"description": "Roguelike properties which can be modified by external provides",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -25,24 +25,24 @@
|
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@quenty/baseobject": "^6.2.1",
|
|
28
|
-
"@quenty/binder": "^8.
|
|
29
|
-
"@quenty/brio": "^8.
|
|
30
|
-
"@quenty/instanceutils": "^7.
|
|
28
|
+
"@quenty/binder": "^8.21.0",
|
|
29
|
+
"@quenty/brio": "^8.15.0",
|
|
30
|
+
"@quenty/instanceutils": "^7.17.0",
|
|
31
31
|
"@quenty/jsonutils": "^6.6.0",
|
|
32
|
-
"@quenty/linkutils": "^7.
|
|
32
|
+
"@quenty/linkutils": "^7.17.0",
|
|
33
33
|
"@quenty/loader": "^6.2.1",
|
|
34
34
|
"@quenty/maid": "^2.5.0",
|
|
35
|
-
"@quenty/rx": "^7.
|
|
36
|
-
"@quenty/rxbinderutils": "^8.
|
|
35
|
+
"@quenty/rx": "^7.13.0",
|
|
36
|
+
"@quenty/rxbinderutils": "^8.22.0",
|
|
37
37
|
"@quenty/servicebag": "^6.8.0",
|
|
38
38
|
"@quenty/signal": "^2.4.0",
|
|
39
39
|
"@quenty/table": "^3.2.0",
|
|
40
|
-
"@quenty/valuebaseutils": "^7.
|
|
41
|
-
"@quenty/valueobject": "^7.
|
|
40
|
+
"@quenty/valuebaseutils": "^7.17.0",
|
|
41
|
+
"@quenty/valueobject": "^7.18.0",
|
|
42
42
|
"@quentystudios/t": "^3.0.0"
|
|
43
43
|
},
|
|
44
44
|
"publishConfig": {
|
|
45
45
|
"access": "public"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "af7a623f58fe7ec96b47c80e385b71f820fd4cb8"
|
|
48
48
|
}
|
|
@@ -53,6 +53,20 @@ function RogueAdditiveProvider:Create(additive, source)
|
|
|
53
53
|
return obj
|
|
54
54
|
end
|
|
55
55
|
|
|
56
|
+
function RogueAdditiveProvider:GetInvertedVersion(propObj, rogueProperty, baseValue)
|
|
57
|
+
if rogueProperty:GetDefinition():GetValueType() == "number" then
|
|
58
|
+
local value = baseValue
|
|
59
|
+
|
|
60
|
+
for _, item in pairs(self:_getAdditives(propObj)) do
|
|
61
|
+
value = value - item:GetAdditive()
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
return value
|
|
65
|
+
else
|
|
66
|
+
return baseValue
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
56
70
|
function RogueAdditiveProvider:GetModifiedVersion(propObj, rogueProperty, baseValue)
|
|
57
71
|
if rogueProperty:GetDefinition():GetValueType() == "number" then
|
|
58
72
|
local value = baseValue
|
|
@@ -53,6 +53,20 @@ function RogueMultiplierProvider:Create(multiplier, source)
|
|
|
53
53
|
return obj
|
|
54
54
|
end
|
|
55
55
|
|
|
56
|
+
function RogueMultiplierProvider:GetInvertedVersion(propObj, rogueProperty, baseValue)
|
|
57
|
+
if rogueProperty:GetDefinition():GetValueType() == "number" then
|
|
58
|
+
local multiplier = 1
|
|
59
|
+
|
|
60
|
+
for _, item in pairs(self:_getMultipliers(propObj)) do
|
|
61
|
+
multiplier = multiplier*item:GetMultiplier()
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
return baseValue/multiplier
|
|
65
|
+
else
|
|
66
|
+
return baseValue
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
56
70
|
function RogueMultiplierProvider:GetModifiedVersion(propObj, rogueProperty, baseValue)
|
|
57
71
|
if rogueProperty:GetDefinition():GetValueType() == "number" then
|
|
58
72
|
local multiplier = 1
|
|
@@ -47,6 +47,11 @@ function RogueSetterProvider:Create(value, source)
|
|
|
47
47
|
return obj
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
+
function RogueSetterProvider:GetInvertedVersion(_propObj, _rogueProperty, baseValue)
|
|
51
|
+
-- TODO: discard previous value chain
|
|
52
|
+
return baseValue
|
|
53
|
+
end
|
|
54
|
+
|
|
50
55
|
function RogueSetterProvider:GetModifiedVersion(propObj, rogueProperty, baseValue)
|
|
51
56
|
-- TODO: Support more than just the base value type
|
|
52
57
|
if rogueProperty:GetDefinition():GetValueType() == "number" then
|
|
@@ -25,7 +25,7 @@ RogueProperty.ClassName = "RogueProperty"
|
|
|
25
25
|
RogueProperty.__index = RogueProperty
|
|
26
26
|
|
|
27
27
|
function RogueProperty.new(adornee, serviceBag, definition)
|
|
28
|
-
local self =
|
|
28
|
+
local self = {}
|
|
29
29
|
|
|
30
30
|
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
31
31
|
self._roguePropertyBinderGroups = self._serviceBag:GetService(RoguePropertyBinderGroups)
|
|
@@ -34,6 +34,8 @@ function RogueProperty.new(adornee, serviceBag, definition)
|
|
|
34
34
|
self._adornee = assert(adornee, "Bad adornee")
|
|
35
35
|
self._definition = assert(definition, "Bad definition")
|
|
36
36
|
|
|
37
|
+
self = setmetatable(self, RogueProperty)
|
|
38
|
+
|
|
37
39
|
if self._roguePropertyService:CanInitializeProperties() then
|
|
38
40
|
self:GetBaseValueObject()
|
|
39
41
|
end
|
|
@@ -91,6 +93,22 @@ function RogueProperty:SetBaseValue(value)
|
|
|
91
93
|
end
|
|
92
94
|
end
|
|
93
95
|
|
|
96
|
+
function RogueProperty:SetValue(value)
|
|
97
|
+
local baseValue = self:GetBaseValueObject()
|
|
98
|
+
if not baseValue then
|
|
99
|
+
warn("Failed to get the baseValue to parent")
|
|
100
|
+
return
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
local current = value
|
|
104
|
+
-- TODO: Consider applying inverted chain here
|
|
105
|
+
for _, item in pairs(self._roguePropertyService:GetProviders()) do
|
|
106
|
+
current = item:GetInvertedVersion(baseValue, self, current)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
baseValue.Value = self:_encodeValue(current)
|
|
110
|
+
end
|
|
111
|
+
|
|
94
112
|
function RogueProperty:GetBaseValue()
|
|
95
113
|
local baseValue = self:GetBaseValueObject()
|
|
96
114
|
if baseValue then
|
|
@@ -100,7 +118,6 @@ function RogueProperty:GetBaseValue()
|
|
|
100
118
|
end
|
|
101
119
|
end
|
|
102
120
|
|
|
103
|
-
|
|
104
121
|
function RogueProperty:GetValue()
|
|
105
122
|
local propObj = self:GetBaseValueObject()
|
|
106
123
|
if not propObj then
|
|
@@ -239,6 +256,19 @@ function RogueProperty:__index(index)
|
|
|
239
256
|
end
|
|
240
257
|
end
|
|
241
258
|
|
|
259
|
+
function RogueProperty:__newindex(index, value)
|
|
260
|
+
if index == "Value" then
|
|
261
|
+
self:SetValue(value)
|
|
262
|
+
elseif index == "Changed" then
|
|
263
|
+
error("Cannot set .Changed event")
|
|
264
|
+
elseif RogueProperty[index] then
|
|
265
|
+
return RogueProperty[index]
|
|
266
|
+
else
|
|
267
|
+
error(("Bad index %q"):format(tostring(index)))
|
|
268
|
+
end
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
|
|
242
272
|
function RogueProperty:_decodeValue(current)
|
|
243
273
|
return RoguePropertyUtils.decodeProperty(self._definition, current)
|
|
244
274
|
end
|