@quenty/rogue-properties 11.22.3 → 11.22.4-canary.559.339cfa7.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 +25 -25
- package/src/Shared/Array/RoguePropertyArrayConstants.lua +2 -2
- package/src/Shared/Array/RoguePropertyArrayUtils.lua +2 -2
- package/src/Shared/Cache/RoguePropertyCache.lua +0 -1
- package/src/Shared/Cache/RoguePropertyCacheService.lua +4 -4
- package/src/Shared/Definition/RoguePropertyDefinition.lua +18 -12
- package/src/Shared/Definition/RoguePropertyDefinitionArrayHelper.lua +1 -1
- package/src/Shared/Definition/RoguePropertyTableDefinition.lua +4 -4
- package/src/Shared/Implementation/RogueProperty.lua +69 -28
- package/src/Shared/Implementation/RoguePropertyArrayHelper.lua +5 -3
- package/src/Shared/Implementation/RoguePropertyTable.lua +3 -2
- package/src/Shared/Implementation/RoguePropertyUtils.lua +1 -1
- package/src/Shared/Modifiers/Implementations/RogueAdditive.lua +8 -8
- package/src/Shared/Modifiers/Implementations/RogueModifierBase.lua +2 -2
- package/src/Shared/Modifiers/Implementations/RogueMultiplier.lua +8 -8
- package/src/Shared/Modifiers/Implementations/RogueSetter.lua +4 -4
- package/src/Shared/Modifiers/RogueModifierInterface.lua +6 -6
- package/src/Shared/Modifiers/RoguePropertyModifierData.lua +3 -3
- package/src/Shared/RoguePropertyService.lua +3 -3
- package/test/scripts/Client/ClientMain.client.lua +1 -1
- package/test/scripts/Server/ServerMain.server.lua +37 -38
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
|
+
## [11.22.4-canary.559.339cfa7.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/rogue-properties@11.22.3...@quenty/rogue-properties@11.22.4-canary.559.339cfa7.0) (2025-05-10)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* Additional type checking updates ([05ba29a](https://github.com/Quenty/NevermoreEngine/commit/05ba29a03efc9f3feed74b34f1d9dfb237496214))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [11.22.3](https://github.com/Quenty/NevermoreEngine/compare/@quenty/rogue-properties@11.22.2...@quenty/rogue-properties@11.22.3) (2025-04-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": "11.22.
|
|
3
|
+
"version": "11.22.4-canary.559.339cfa7.0",
|
|
4
4
|
"description": "Roguelike properties which can be modified by external provides",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Roblox",
|
|
@@ -24,33 +24,33 @@
|
|
|
24
24
|
"Quenty"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@quenty/adorneedata": "
|
|
28
|
-
"@quenty/baseobject": "
|
|
29
|
-
"@quenty/binder": "
|
|
30
|
-
"@quenty/brio": "
|
|
31
|
-
"@quenty/defaultvalueutils": "
|
|
32
|
-
"@quenty/ducktype": "
|
|
33
|
-
"@quenty/instanceutils": "
|
|
34
|
-
"@quenty/jsonutils": "
|
|
35
|
-
"@quenty/linkutils": "
|
|
36
|
-
"@quenty/loader": "
|
|
37
|
-
"@quenty/maid": "
|
|
38
|
-
"@quenty/observablecollection": "
|
|
39
|
-
"@quenty/rx": "
|
|
40
|
-
"@quenty/rxbinderutils": "
|
|
41
|
-
"@quenty/rxsignal": "
|
|
42
|
-
"@quenty/servicebag": "
|
|
43
|
-
"@quenty/signal": "
|
|
44
|
-
"@quenty/spring": "
|
|
45
|
-
"@quenty/string": "
|
|
46
|
-
"@quenty/table": "
|
|
47
|
-
"@quenty/tie": "
|
|
48
|
-
"@quenty/valuebaseutils": "
|
|
49
|
-
"@quenty/valueobject": "
|
|
27
|
+
"@quenty/adorneedata": "7.18.4-canary.559.339cfa7.0",
|
|
28
|
+
"@quenty/baseobject": "10.8.4-canary.559.339cfa7.0",
|
|
29
|
+
"@quenty/binder": "14.19.4-canary.559.339cfa7.0",
|
|
30
|
+
"@quenty/brio": "14.17.4-canary.559.339cfa7.0",
|
|
31
|
+
"@quenty/defaultvalueutils": "1.2.2",
|
|
32
|
+
"@quenty/ducktype": "5.8.5-canary.559.339cfa7.0",
|
|
33
|
+
"@quenty/instanceutils": "13.17.4-canary.559.339cfa7.0",
|
|
34
|
+
"@quenty/jsonutils": "10.10.5-canary.559.339cfa7.0",
|
|
35
|
+
"@quenty/linkutils": "13.17.4-canary.559.339cfa7.0",
|
|
36
|
+
"@quenty/loader": "10.8.4-canary.559.339cfa7.0",
|
|
37
|
+
"@quenty/maid": "3.4.4-canary.559.339cfa7.0",
|
|
38
|
+
"@quenty/observablecollection": "12.20.4-canary.559.339cfa7.0",
|
|
39
|
+
"@quenty/rx": "13.17.4-canary.559.339cfa7.0",
|
|
40
|
+
"@quenty/rxbinderutils": "14.19.4-canary.559.339cfa7.0",
|
|
41
|
+
"@quenty/rxsignal": "7.17.4-canary.559.339cfa7.0",
|
|
42
|
+
"@quenty/servicebag": "11.11.5-canary.559.339cfa7.0",
|
|
43
|
+
"@quenty/signal": "7.10.4-canary.559.339cfa7.0",
|
|
44
|
+
"@quenty/spring": "10.8.5-canary.559.339cfa7.0",
|
|
45
|
+
"@quenty/string": "3.3.3",
|
|
46
|
+
"@quenty/table": "3.7.5-canary.559.339cfa7.0",
|
|
47
|
+
"@quenty/tie": "10.20.4-canary.559.339cfa7.0",
|
|
48
|
+
"@quenty/valuebaseutils": "13.17.4-canary.559.339cfa7.0",
|
|
49
|
+
"@quenty/valueobject": "13.17.4-canary.559.339cfa7.0",
|
|
50
50
|
"@quentystudios/t": "^3.0.0"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "339cfa778736f08768ed7305041f6221faa35bfc"
|
|
56
56
|
}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
+
local DefaultValueUtils = require("DefaultValueUtils")
|
|
7
8
|
local RoguePropertyArrayConstants = require("RoguePropertyArrayConstants")
|
|
8
9
|
local String = require("String")
|
|
9
|
-
local DefaultValueUtils = require("DefaultValueUtils")
|
|
10
10
|
|
|
11
11
|
local RoguePropertyArrayUtils = {}
|
|
12
12
|
|
|
@@ -160,4 +160,4 @@ function RoguePropertyArrayUtils.createDefinitionsFromArrayData(arrayData, prope
|
|
|
160
160
|
return definitions
|
|
161
161
|
end
|
|
162
162
|
|
|
163
|
-
return RoguePropertyArrayUtils
|
|
163
|
+
return RoguePropertyArrayUtils
|
|
@@ -9,16 +9,16 @@ local require = require(script.Parent.loader).load(script)
|
|
|
9
9
|
local RunService = game:GetService("RunService")
|
|
10
10
|
|
|
11
11
|
local RoguePropertyCache = require("RoguePropertyCache")
|
|
12
|
-
local
|
|
12
|
+
local ServiceBag = require("ServiceBag")
|
|
13
13
|
|
|
14
14
|
local RoguePropertyCacheService = {}
|
|
15
15
|
RoguePropertyCacheService.ServiceName = "RoguePropertyCacheService"
|
|
16
16
|
|
|
17
|
-
function RoguePropertyCacheService:Init(serviceBag:
|
|
17
|
+
function RoguePropertyCacheService:Init(serviceBag: ServiceBag.ServiceBag)
|
|
18
18
|
assert(not self._serviceBag, "Already initialized")
|
|
19
19
|
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
20
20
|
|
|
21
|
-
self._cache = setmetatable({}, {__mode = "k"})
|
|
21
|
+
self._cache = setmetatable({}, { __mode = "k" })
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
function RoguePropertyCacheService:GetCache(roguePropertyDefinition)
|
|
@@ -37,4 +37,4 @@ function RoguePropertyCacheService:GetCache(roguePropertyDefinition)
|
|
|
37
37
|
return cache
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
return RoguePropertyCacheService
|
|
40
|
+
return RoguePropertyCacheService
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
+
local DuckTypeUtils = require("DuckTypeUtils")
|
|
7
8
|
local RogueProperty = require("RogueProperty")
|
|
8
|
-
local
|
|
9
|
+
local RoguePropertyCacheService = require("RoguePropertyCacheService")
|
|
9
10
|
local RoguePropertyUtils = require("RoguePropertyUtils")
|
|
10
|
-
local
|
|
11
|
+
local ServiceBag = require("ServiceBag")
|
|
11
12
|
local ValueBaseUtils = require("ValueBaseUtils")
|
|
12
|
-
local RoguePropertyCacheService = require("RoguePropertyCacheService")
|
|
13
13
|
|
|
14
14
|
local RoguePropertyDefinition = {}
|
|
15
15
|
RoguePropertyDefinition.ClassName = "RoguePropertyDefinition"
|
|
@@ -41,7 +41,7 @@ end
|
|
|
41
41
|
@param adornee Instance
|
|
42
42
|
@return RogueProperty
|
|
43
43
|
]=]
|
|
44
|
-
function RoguePropertyDefinition:Get(serviceBag, adornee)
|
|
44
|
+
function RoguePropertyDefinition:Get(serviceBag: ServiceBag.ServiceBag, adornee: Instance)
|
|
45
45
|
assert(ServiceBag.isServiceBag(serviceBag), "Bad serviceBag")
|
|
46
46
|
assert(typeof(adornee) == "Instance", "Bad adornee")
|
|
47
47
|
|
|
@@ -58,14 +58,15 @@ function RoguePropertyDefinition:Get(serviceBag, adornee)
|
|
|
58
58
|
return rogueProperty
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
function RoguePropertyDefinition:GetOrCreateInstance(parent)
|
|
61
|
+
function RoguePropertyDefinition:GetOrCreateInstance(parent: Instance)
|
|
62
62
|
assert(typeof(parent) == "Instance", "Bad parent")
|
|
63
63
|
|
|
64
64
|
return ValueBaseUtils.getOrCreateValue(
|
|
65
65
|
parent,
|
|
66
66
|
self:GetStorageInstanceType(),
|
|
67
67
|
self:GetName(),
|
|
68
|
-
self:GetEncodedDefaultValue()
|
|
68
|
+
self:GetEncodedDefaultValue()
|
|
69
|
+
)
|
|
69
70
|
end
|
|
70
71
|
|
|
71
72
|
function RoguePropertyDefinition:SetParentPropertyTableDefinition(parentPropertyTableDefinition)
|
|
@@ -76,15 +77,21 @@ function RoguePropertyDefinition:GetParentPropertyDefinition()
|
|
|
76
77
|
return self._parentPropertyTableDefinition
|
|
77
78
|
end
|
|
78
79
|
|
|
79
|
-
function RoguePropertyDefinition:CanAssign(value, _strict)
|
|
80
|
+
function RoguePropertyDefinition:CanAssign(value, _strict): (boolean, string?)
|
|
80
81
|
if self._valueType == typeof(value) then
|
|
81
82
|
return true
|
|
82
83
|
else
|
|
83
|
-
return false,
|
|
84
|
+
return false,
|
|
85
|
+
string.format(
|
|
86
|
+
"got %q, expected %q when assigning to %q",
|
|
87
|
+
self._valueType,
|
|
88
|
+
typeof(value),
|
|
89
|
+
self:GetFullName()
|
|
90
|
+
)
|
|
84
91
|
end
|
|
85
92
|
end
|
|
86
93
|
|
|
87
|
-
function RoguePropertyDefinition:SetName(name: string)
|
|
94
|
+
function RoguePropertyDefinition:SetName(name: string): ()
|
|
88
95
|
assert(type(name) == "string", "Bad name")
|
|
89
96
|
|
|
90
97
|
self._name = name
|
|
@@ -122,7 +129,7 @@ function RoguePropertyDefinition:GetValueType()
|
|
|
122
129
|
return self._valueType
|
|
123
130
|
end
|
|
124
131
|
|
|
125
|
-
function RoguePropertyDefinition:GetStorageInstanceType()
|
|
132
|
+
function RoguePropertyDefinition:GetStorageInstanceType(): string
|
|
126
133
|
return self._storageType
|
|
127
134
|
end
|
|
128
135
|
|
|
@@ -152,5 +159,4 @@ function RoguePropertyDefinition:_computeStorageInstanceType()
|
|
|
152
159
|
end
|
|
153
160
|
end
|
|
154
161
|
|
|
155
|
-
|
|
156
|
-
return RoguePropertyDefinition
|
|
162
|
+
return RoguePropertyDefinition
|
|
@@ -16,13 +16,13 @@ local RxBrioUtils = require("RxBrioUtils")
|
|
|
16
16
|
local RxInstanceUtils = require("RxInstanceUtils")
|
|
17
17
|
local ServiceBag = require("ServiceBag")
|
|
18
18
|
local Set = require("Set")
|
|
19
|
-
local
|
|
19
|
+
local Table = require("Table")
|
|
20
20
|
|
|
21
21
|
local RoguePropertyTableDefinition = {} -- Inherits from RoguePropertyDefinition
|
|
22
22
|
RoguePropertyTableDefinition.ClassName = "RoguePropertyTableDefinition"
|
|
23
23
|
RoguePropertyTableDefinition.__index = RoguePropertyTableDefinition
|
|
24
24
|
|
|
25
|
-
function RoguePropertyTableDefinition.new(tableName: string?, defaultValueTable:
|
|
25
|
+
function RoguePropertyTableDefinition.new(tableName: string?, defaultValueTable: Table.Map<string, any>?)
|
|
26
26
|
local self = setmetatable(RoguePropertyDefinition.new(), RoguePropertyTableDefinition)
|
|
27
27
|
|
|
28
28
|
if tableName then
|
|
@@ -40,7 +40,7 @@ function RoguePropertyTableDefinition.isRoguePropertyTableDefinition(value): boo
|
|
|
40
40
|
return DuckTypeUtils.isImplementation(RoguePropertyTableDefinition, value)
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
function RoguePropertyTableDefinition:SetDefaultValue(defaultValueTable:
|
|
43
|
+
function RoguePropertyTableDefinition:SetDefaultValue(defaultValueTable: Table.Map<string, any>?)
|
|
44
44
|
assert(type(defaultValueTable) == "table", "Bad defaultValueTable")
|
|
45
45
|
|
|
46
46
|
RoguePropertyDefinition.SetDefaultValue(self, defaultValueTable)
|
|
@@ -196,7 +196,7 @@ end
|
|
|
196
196
|
@param adornee Instance
|
|
197
197
|
@return RoguePropertyTable
|
|
198
198
|
]=]
|
|
199
|
-
function RoguePropertyTableDefinition:Get(serviceBag, adornee: Instance)
|
|
199
|
+
function RoguePropertyTableDefinition:Get(serviceBag: ServiceBag.ServiceBag, adornee: Instance)
|
|
200
200
|
assert(ServiceBag.isServiceBag(serviceBag), "Bad serviceBag")
|
|
201
201
|
assert(typeof(adornee) == "Instance", "Bad adornee")
|
|
202
202
|
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
+
local Maid = require("Maid")
|
|
8
|
+
local Observable = require("Observable")
|
|
9
|
+
local ObservableSortedList = require("ObservableSortedList")
|
|
7
10
|
local RogueAdditive = require("RogueAdditive")
|
|
8
11
|
local RogueModifierInterface = require("RogueModifierInterface")
|
|
9
12
|
local RogueMultiplier = require("RogueMultiplier")
|
|
@@ -14,16 +17,14 @@ local Rx = require("Rx")
|
|
|
14
17
|
local RxBrioUtils = require("RxBrioUtils")
|
|
15
18
|
local RxInstanceUtils = require("RxInstanceUtils")
|
|
16
19
|
local RxSignal = require("RxSignal")
|
|
20
|
+
local ServiceBag = require("ServiceBag")
|
|
17
21
|
local ValueBaseUtils = require("ValueBaseUtils")
|
|
18
|
-
local Maid = require("Maid")
|
|
19
|
-
local Observable = require("Observable")
|
|
20
|
-
local ObservableSortedList = require("ObservableSortedList")
|
|
21
22
|
|
|
22
23
|
local RogueProperty = {}
|
|
23
24
|
RogueProperty.ClassName = "RogueProperty"
|
|
24
25
|
RogueProperty.__index = RogueProperty
|
|
25
26
|
|
|
26
|
-
function RogueProperty.new(adornee, serviceBag, definition)
|
|
27
|
+
function RogueProperty.new(adornee: Instance, serviceBag: ServiceBag.ServiceBag, definition)
|
|
27
28
|
local self = {}
|
|
28
29
|
|
|
29
30
|
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
@@ -93,17 +94,21 @@ end
|
|
|
93
94
|
function RogueProperty:_observeBaseValueBrio()
|
|
94
95
|
local parentDefinition = self._definition:GetParentPropertyDefinition()
|
|
95
96
|
if parentDefinition then
|
|
96
|
-
return parentDefinition:ObserveContainerBrio(self._adornee, self:CanInitialize())
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
97
|
+
return parentDefinition:ObserveContainerBrio(self._adornee, self:CanInitialize()):Pipe({
|
|
98
|
+
RxBrioUtils.switchMapBrio(function(container)
|
|
99
|
+
return RxInstanceUtils.observeLastNamedChildBrio(
|
|
100
|
+
container,
|
|
101
|
+
self._definition:GetStorageInstanceType(),
|
|
102
|
+
self._definition:GetName()
|
|
103
|
+
)
|
|
104
|
+
end),
|
|
105
|
+
})
|
|
105
106
|
else
|
|
106
|
-
return RxInstanceUtils.observeLastNamedChildBrio(
|
|
107
|
+
return RxInstanceUtils.observeLastNamedChildBrio(
|
|
108
|
+
self._adornee,
|
|
109
|
+
self._definition:GetStorageInstanceType(),
|
|
110
|
+
self._definition:GetName()
|
|
111
|
+
)
|
|
107
112
|
end
|
|
108
113
|
end
|
|
109
114
|
|
|
@@ -114,7 +119,13 @@ function RogueProperty:SetBaseValue(value)
|
|
|
114
119
|
if baseValue then
|
|
115
120
|
baseValue.Value = self:_encodeValue(value)
|
|
116
121
|
else
|
|
117
|
-
warn(
|
|
122
|
+
warn(
|
|
123
|
+
string.format(
|
|
124
|
+
"[RogueProperty.SetBaseValue] - Failed to get the baseValue for %q on %q",
|
|
125
|
+
self._definition:GetFullName(),
|
|
126
|
+
self._adornee:GetFullName()
|
|
127
|
+
)
|
|
128
|
+
)
|
|
118
129
|
end
|
|
119
130
|
end
|
|
120
131
|
|
|
@@ -123,14 +134,20 @@ function RogueProperty:SetValue(value)
|
|
|
123
134
|
|
|
124
135
|
local baseValue = self:GetBaseValueObject()
|
|
125
136
|
if not baseValue then
|
|
126
|
-
warn(
|
|
137
|
+
warn(
|
|
138
|
+
string.format(
|
|
139
|
+
"[RogueProperty.SetValue] - Failed to get the baseValue for %q on %q",
|
|
140
|
+
self._definition:GetFullName(),
|
|
141
|
+
self._adornee:GetFullName()
|
|
142
|
+
)
|
|
143
|
+
)
|
|
127
144
|
return
|
|
128
145
|
end
|
|
129
146
|
|
|
130
147
|
local current = value
|
|
131
148
|
|
|
132
149
|
local modifiers = self:GetRogueModifiers()
|
|
133
|
-
for i
|
|
150
|
+
for i = #modifiers, 1, -1 do
|
|
134
151
|
current = modifiers[i]:GetInvertedVersion(current, value)
|
|
135
152
|
end
|
|
136
153
|
|
|
@@ -224,21 +241,21 @@ function RogueProperty:Observe()
|
|
|
224
241
|
|
|
225
242
|
return self:_observeModifierSortedList():Pipe({
|
|
226
243
|
Rx.switchMap(function(sortedList)
|
|
227
|
-
|
|
228
|
-
end)
|
|
244
|
+
return sortedList:Observe()
|
|
245
|
+
end),
|
|
229
246
|
Rx.switchMap(function(rogueModifierList)
|
|
230
|
-
|
|
247
|
+
local current = observeInitialValue
|
|
231
248
|
for _, rogueModifier in rogueModifierList do
|
|
232
249
|
current = rogueModifier:ObserveModifiedVersion(current)
|
|
233
250
|
end
|
|
234
251
|
return current
|
|
235
|
-
end)
|
|
252
|
+
end),
|
|
236
253
|
})
|
|
237
254
|
end
|
|
238
255
|
|
|
239
256
|
function RogueProperty:ObserveBrio(predicate)
|
|
240
257
|
return self:Observe():Pipe({
|
|
241
|
-
RxBrioUtils.switchToBrio(predicate)
|
|
258
|
+
RxBrioUtils.switchToBrio(predicate),
|
|
242
259
|
})
|
|
243
260
|
end
|
|
244
261
|
|
|
@@ -247,7 +264,13 @@ function RogueProperty:CreateMultiplier(amount, source)
|
|
|
247
264
|
|
|
248
265
|
local baseValue = self:GetBaseValueObject()
|
|
249
266
|
if not baseValue then
|
|
250
|
-
warn(
|
|
267
|
+
warn(
|
|
268
|
+
string.format(
|
|
269
|
+
"[RogueProperty.CreateMultiplier] - Failed to get the baseValue for %q on %q",
|
|
270
|
+
self._definition:GetFullName(),
|
|
271
|
+
self._adornee:GetFullName()
|
|
272
|
+
)
|
|
273
|
+
)
|
|
251
274
|
end
|
|
252
275
|
|
|
253
276
|
local className = ValueBaseUtils.getClassNameFromType(typeof(amount))
|
|
@@ -276,7 +299,13 @@ function RogueProperty:CreateAdditive(amount: number, source)
|
|
|
276
299
|
|
|
277
300
|
local baseValue = self:GetBaseValueObject()
|
|
278
301
|
if not baseValue then
|
|
279
|
-
warn(
|
|
302
|
+
warn(
|
|
303
|
+
string.format(
|
|
304
|
+
"[RogueProperty.CreateAdditive] - Failed to get the baseValue for %q on %q",
|
|
305
|
+
self._definition:GetFullName(),
|
|
306
|
+
self._adornee:GetFullName()
|
|
307
|
+
)
|
|
308
|
+
)
|
|
280
309
|
return nil
|
|
281
310
|
end
|
|
282
311
|
|
|
@@ -304,7 +333,13 @@ end
|
|
|
304
333
|
function RogueProperty:GetNamedAdditive(name, source)
|
|
305
334
|
local baseValue = self:GetBaseValueObject()
|
|
306
335
|
if not baseValue then
|
|
307
|
-
warn(
|
|
336
|
+
warn(
|
|
337
|
+
string.format(
|
|
338
|
+
"[RogueProperty.GetNamedAdditive] - Failed to get the baseValue for %q on %q",
|
|
339
|
+
self._definition:GetFullName(),
|
|
340
|
+
self._adornee:GetFullName()
|
|
341
|
+
)
|
|
342
|
+
)
|
|
308
343
|
return nil
|
|
309
344
|
end
|
|
310
345
|
|
|
@@ -323,7 +358,13 @@ end
|
|
|
323
358
|
function RogueProperty:CreateSetter(value, source)
|
|
324
359
|
local baseValue = self:GetBaseValueObject()
|
|
325
360
|
if not baseValue then
|
|
326
|
-
warn(
|
|
361
|
+
warn(
|
|
362
|
+
string.format(
|
|
363
|
+
"[RogueProperty.CreateSetter] - Failed to get the baseValue for %q on %q",
|
|
364
|
+
self._definition:GetFullName(),
|
|
365
|
+
self._adornee:GetFullName()
|
|
366
|
+
)
|
|
367
|
+
)
|
|
327
368
|
return nil
|
|
328
369
|
end
|
|
329
370
|
|
|
@@ -382,8 +423,8 @@ end
|
|
|
382
423
|
|
|
383
424
|
function RogueProperty:GetChangedEvent()
|
|
384
425
|
return RxSignal.new(self:Observe():Pipe({
|
|
385
|
-
Rx.skip(1)
|
|
426
|
+
Rx.skip(1),
|
|
386
427
|
}))
|
|
387
428
|
end
|
|
388
429
|
|
|
389
|
-
return RogueProperty
|
|
430
|
+
return RogueProperty
|
|
@@ -61,8 +61,10 @@ function RoguePropertyArrayHelper:GetArrayRogueProperties()
|
|
|
61
61
|
|
|
62
62
|
local adornee = self._roguePropertyTable:GetAdornee()
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
local definitions = RoguePropertyArrayUtils.createDefinitionsFromContainer(
|
|
65
|
+
container,
|
|
66
|
+
self._arrayDefinitionHelper:GetPropertyTableDefinition()
|
|
67
|
+
)
|
|
66
68
|
local rogueProperties = {}
|
|
67
69
|
|
|
68
70
|
for index, definition in definitions do
|
|
@@ -198,4 +200,4 @@ function RoguePropertyArrayHelper:ObserveArrayValues()
|
|
|
198
200
|
return Rx.combineLatest(observables)
|
|
199
201
|
end
|
|
200
202
|
|
|
201
|
-
return RoguePropertyArrayHelper
|
|
203
|
+
return RoguePropertyArrayHelper
|
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
7
|
local RogueProperty = require("RogueProperty")
|
|
8
|
-
local Rx = require("Rx")
|
|
9
8
|
local RoguePropertyArrayHelper = require("RoguePropertyArrayHelper")
|
|
9
|
+
local Rx = require("Rx")
|
|
10
|
+
local ServiceBag = require("ServiceBag")
|
|
10
11
|
|
|
11
12
|
local RoguePropertyTable = {} -- inherits from RogueProperty
|
|
12
13
|
RoguePropertyTable.ClassName = "RoguePropertyTable"
|
|
13
14
|
RoguePropertyTable.__index = RoguePropertyTable
|
|
14
15
|
|
|
15
|
-
function RoguePropertyTable.new(adornee: Instance, serviceBag, roguePropertyTableDefinition)
|
|
16
|
+
function RoguePropertyTable.new(adornee: Instance, serviceBag: ServiceBag.ServiceBag, roguePropertyTableDefinition)
|
|
16
17
|
local self = setmetatable(RogueProperty.new(adornee, serviceBag, roguePropertyTableDefinition), RoguePropertyTable)
|
|
17
18
|
|
|
18
19
|
rawset(self, "_properties", {})
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
-
local RogueModifierBase = require("RogueModifierBase")
|
|
8
|
-
local RxInstanceUtils = require("RxInstanceUtils")
|
|
9
7
|
local Binder = require("Binder")
|
|
10
|
-
local Rx = require("Rx")
|
|
11
8
|
local LinearValue = require("LinearValue")
|
|
9
|
+
local RogueModifierBase = require("RogueModifierBase")
|
|
12
10
|
local RogueModifierInterface = require("RogueModifierInterface")
|
|
11
|
+
local Rx = require("Rx")
|
|
12
|
+
local RxInstanceUtils = require("RxInstanceUtils")
|
|
13
13
|
|
|
14
14
|
local RogueAdditive = setmetatable({}, RogueModifierBase)
|
|
15
15
|
RogueAdditive.ClassName = "RogueAdditive"
|
|
@@ -39,8 +39,8 @@ end
|
|
|
39
39
|
|
|
40
40
|
function RogueAdditive:ObserveModifiedVersion(inputValue)
|
|
41
41
|
return Rx.combineLatest({
|
|
42
|
-
inputValue = inputValue
|
|
43
|
-
additive = RxInstanceUtils.observeProperty(self._obj, "Value")
|
|
42
|
+
inputValue = inputValue,
|
|
43
|
+
additive = RxInstanceUtils.observeProperty(self._obj, "Value"),
|
|
44
44
|
}):Pipe({
|
|
45
45
|
Rx.map(function(state)
|
|
46
46
|
if state.inputValue and type(state.inputValue) == type(state.additive) then
|
|
@@ -51,9 +51,9 @@ function RogueAdditive:ObserveModifiedVersion(inputValue)
|
|
|
51
51
|
else
|
|
52
52
|
return state.inputValue
|
|
53
53
|
end
|
|
54
|
-
end)
|
|
55
|
-
Rx.distinct()
|
|
54
|
+
end),
|
|
55
|
+
Rx.distinct(),
|
|
56
56
|
})
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
return Binder.new("RogueAdditive", RogueAdditive)
|
|
59
|
+
return Binder.new("RogueAdditive", RogueAdditive)
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
7
|
local BaseObject = require("BaseObject")
|
|
8
|
-
local TieRealmService = require("TieRealmService")
|
|
9
8
|
local RoguePropertyModifierData = require("RoguePropertyModifierData")
|
|
9
|
+
local TieRealmService = require("TieRealmService")
|
|
10
10
|
|
|
11
11
|
local RogueModifierBase = setmetatable({}, BaseObject)
|
|
12
12
|
RogueModifierBase.ClassName = "RogueModifierBase"
|
|
@@ -34,4 +34,4 @@ function RogueModifierBase:ObserveModifiedVersion(_value)
|
|
|
34
34
|
error("Not implemented")
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
return RogueModifierBase
|
|
37
|
+
return RogueModifierBase
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
-
local RogueModifierBase = require("RogueModifierBase")
|
|
8
7
|
local Binder = require("Binder")
|
|
9
|
-
local Rx = require("Rx")
|
|
10
|
-
local RxInstanceUtils = require("RxInstanceUtils")
|
|
11
8
|
local LinearValue = require("LinearValue")
|
|
9
|
+
local RogueModifierBase = require("RogueModifierBase")
|
|
12
10
|
local RogueModifierInterface = require("RogueModifierInterface")
|
|
11
|
+
local Rx = require("Rx")
|
|
12
|
+
local RxInstanceUtils = require("RxInstanceUtils")
|
|
13
13
|
|
|
14
14
|
local RogueMultiplier = setmetatable({}, RogueModifierBase)
|
|
15
15
|
RogueMultiplier.ClassName = "RogueMultiplier"
|
|
@@ -39,8 +39,8 @@ end
|
|
|
39
39
|
|
|
40
40
|
function RogueMultiplier:ObserveModifiedVersion(inputValue)
|
|
41
41
|
return Rx.combineLatest({
|
|
42
|
-
inputValue = inputValue
|
|
43
|
-
multiplier = RxInstanceUtils.observeProperty(self._obj, "Value")
|
|
42
|
+
inputValue = inputValue,
|
|
43
|
+
multiplier = RxInstanceUtils.observeProperty(self._obj, "Value"),
|
|
44
44
|
}):Pipe({
|
|
45
45
|
Rx.map(function(state)
|
|
46
46
|
if state.inputValue and type(state.inputValue) == type(state.multiplier) then
|
|
@@ -51,9 +51,9 @@ function RogueMultiplier:ObserveModifiedVersion(inputValue)
|
|
|
51
51
|
else
|
|
52
52
|
return state.inputValue
|
|
53
53
|
end
|
|
54
|
-
end)
|
|
55
|
-
Rx.distinct()
|
|
54
|
+
end),
|
|
55
|
+
Rx.distinct(),
|
|
56
56
|
})
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
return Binder.new("RogueMultiplier", RogueMultiplier)
|
|
59
|
+
return Binder.new("RogueMultiplier", RogueMultiplier)
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
local require = require(script.Parent.loader).load(script)
|
|
6
6
|
|
|
7
|
-
local RogueModifierBase = require("RogueModifierBase")
|
|
8
7
|
local Binder = require("Binder")
|
|
9
|
-
local
|
|
8
|
+
local RogueModifierBase = require("RogueModifierBase")
|
|
10
9
|
local RogueModifierInterface = require("RogueModifierInterface")
|
|
10
|
+
local RxValueBaseUtils = require("RxValueBaseUtils")
|
|
11
11
|
|
|
12
|
-
local RogueSetter = setmetatable(
|
|
12
|
+
local RogueSetter = setmetatable({}, RogueModifierBase)
|
|
13
13
|
RogueSetter.ClassName = "RogueSetter"
|
|
14
14
|
RogueSetter.__index = RogueSetter
|
|
15
15
|
|
|
@@ -33,4 +33,4 @@ function RogueSetter:GetInvertedVersion(_, initialValue)
|
|
|
33
33
|
return initialValue
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
return Binder.new("RogueSetter", RogueSetter)
|
|
36
|
+
return Binder.new("RogueSetter", RogueSetter)
|
|
@@ -7,11 +7,11 @@ local require = require(script.Parent.loader).load(script)
|
|
|
7
7
|
local TieDefinition = require("TieDefinition")
|
|
8
8
|
|
|
9
9
|
return TieDefinition.new("RogueModifier", {
|
|
10
|
-
Order = TieDefinition.Types.PROPERTY
|
|
11
|
-
Source = TieDefinition.Types.PROPERTY
|
|
10
|
+
Order = TieDefinition.Types.PROPERTY,
|
|
11
|
+
Source = TieDefinition.Types.PROPERTY,
|
|
12
12
|
|
|
13
13
|
--
|
|
14
|
-
GetModifiedVersion = TieDefinition.Types.METHOD
|
|
15
|
-
ObserveModifiedVersion = TieDefinition.Types.METHOD
|
|
16
|
-
GetInvertedVersion = TieDefinition.Types.METHOD
|
|
17
|
-
})
|
|
14
|
+
GetModifiedVersion = TieDefinition.Types.METHOD,
|
|
15
|
+
ObserveModifiedVersion = TieDefinition.Types.METHOD,
|
|
16
|
+
GetInvertedVersion = TieDefinition.Types.METHOD,
|
|
17
|
+
})
|
|
@@ -10,8 +10,8 @@ local ValueBaseValue = require("ValueBaseValue")
|
|
|
10
10
|
local t = require("t")
|
|
11
11
|
|
|
12
12
|
return AdorneeData.new({
|
|
13
|
-
Order = 0
|
|
13
|
+
Order = 0,
|
|
14
14
|
RoguePropertySourceLink = AdorneeDataEntry.new(t.optional(t.Instance), function(adornee)
|
|
15
15
|
return ValueBaseValue.new(adornee, "ObjectValue", "RoguePropertySourceLink", nil)
|
|
16
|
-
end)
|
|
17
|
-
})
|
|
16
|
+
end),
|
|
17
|
+
})
|
|
@@ -10,12 +10,12 @@ local require = require(script.Parent.loader).load(script)
|
|
|
10
10
|
local RunService = game:GetService("RunService")
|
|
11
11
|
|
|
12
12
|
local Maid = require("Maid")
|
|
13
|
-
local
|
|
13
|
+
local ServiceBag = require("ServiceBag")
|
|
14
14
|
|
|
15
15
|
local RoguePropertyService = {}
|
|
16
16
|
RoguePropertyService.ServiceName = "RoguePropertyService"
|
|
17
17
|
|
|
18
|
-
function RoguePropertyService:Init(serviceBag:
|
|
18
|
+
function RoguePropertyService:Init(serviceBag: ServiceBag.ServiceBag)
|
|
19
19
|
assert(not self._serviceBag, "Already initialized")
|
|
20
20
|
self._serviceBag = assert(serviceBag, "No serviceBag")
|
|
21
21
|
|
|
@@ -39,4 +39,4 @@ function RoguePropertyService:Destroy()
|
|
|
39
39
|
self._maid:DoCleaning()
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
return RoguePropertyService
|
|
42
|
+
return RoguePropertyService
|
|
@@ -14,41 +14,41 @@ serviceBag:Start()
|
|
|
14
14
|
local RoguePropertyTableDefinition = require("RoguePropertyTableDefinition")
|
|
15
15
|
|
|
16
16
|
local propertyDefinition = RoguePropertyTableDefinition.new("CombatStats", {
|
|
17
|
-
Health = 100
|
|
17
|
+
Health = 100,
|
|
18
18
|
|
|
19
19
|
Ultimate = {
|
|
20
|
-
AttackDamage = 30
|
|
21
|
-
AbilityPower = 30
|
|
20
|
+
AttackDamage = 30,
|
|
21
|
+
AbilityPower = 30,
|
|
22
22
|
|
|
23
23
|
Sequence = {
|
|
24
24
|
{
|
|
25
|
-
Name = "Ultimate 1"
|
|
26
|
-
AnimationId = "rbxassetid://1"
|
|
27
|
-
}
|
|
25
|
+
Name = "Ultimate 1",
|
|
26
|
+
AnimationId = "rbxassetid://1",
|
|
27
|
+
},
|
|
28
28
|
{
|
|
29
|
-
Name = "Ultimate 2"
|
|
30
|
-
AnimationId = "rbxassetid://2"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
29
|
+
Name = "Ultimate 2",
|
|
30
|
+
AnimationId = "rbxassetid://2",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
34
|
|
|
35
35
|
HeavyPunch = {
|
|
36
|
-
AttackDamage = 45
|
|
37
|
-
AbilityPower = 100
|
|
36
|
+
AttackDamage = 45,
|
|
37
|
+
AbilityPower = 100,
|
|
38
38
|
|
|
39
39
|
Sequence = {
|
|
40
40
|
{
|
|
41
|
-
Name = "HeavyPunch 1"
|
|
42
|
-
AnimationId = "rbxassetid://1"
|
|
43
|
-
}
|
|
41
|
+
Name = "HeavyPunch 1",
|
|
42
|
+
AnimationId = "rbxassetid://1",
|
|
43
|
+
},
|
|
44
44
|
{
|
|
45
|
-
Name = "HeavyPunch 2"
|
|
46
|
-
AnimationId = "rbxassetid://2"
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
45
|
+
Name = "HeavyPunch 2",
|
|
46
|
+
AnimationId = "rbxassetid://2",
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
50
|
|
|
51
|
-
ReticleHairRotationsDegree = { 0, 120, 240 }
|
|
51
|
+
ReticleHairRotationsDegree = { 0, 120, 240 },
|
|
52
52
|
})
|
|
53
53
|
|
|
54
54
|
local properties = propertyDefinition:GetPropertyTable(serviceBag, workspace)
|
|
@@ -70,24 +70,24 @@ properties.Changed:Connect(function()
|
|
|
70
70
|
end)
|
|
71
71
|
|
|
72
72
|
properties:SetBaseValue({
|
|
73
|
-
Health = 5
|
|
73
|
+
Health = 5,
|
|
74
74
|
|
|
75
75
|
Ultimate = {
|
|
76
|
-
AttackDamage = 2
|
|
77
|
-
AbilityPower = 2
|
|
78
|
-
}
|
|
76
|
+
AttackDamage = 2,
|
|
77
|
+
AbilityPower = 2,
|
|
78
|
+
},
|
|
79
79
|
|
|
80
80
|
HeavyPunch = {
|
|
81
|
-
AttackDamage = 5
|
|
82
|
-
AbilityPower = 9
|
|
83
|
-
}
|
|
81
|
+
AttackDamage = 5,
|
|
82
|
+
AbilityPower = 9,
|
|
83
|
+
},
|
|
84
84
|
|
|
85
|
-
ReticleHairRotationsDegree = { 1, 25, 135, 325, 500 }
|
|
85
|
+
ReticleHairRotationsDegree = { 1, 25, 135, 325, 500 },
|
|
86
86
|
})
|
|
87
87
|
|
|
88
88
|
-- print("ReticleHairRotationsDegree", properties.ReticleHairRotationsDegree.Value)
|
|
89
89
|
|
|
90
|
-
properties.ReticleHairRotationsDegree.Value = { 2, 5}
|
|
90
|
+
properties.ReticleHairRotationsDegree.Value = { 2, 5 }
|
|
91
91
|
|
|
92
92
|
-- print("ReticleHairRotationsDegree", properties.ReticleHairRotationsDegree.Value)
|
|
93
93
|
|
|
@@ -97,17 +97,16 @@ properties.Health.Value = 25
|
|
|
97
97
|
|
|
98
98
|
properties.Ultimate.Sequence.Value = {
|
|
99
99
|
{
|
|
100
|
-
Name = "Another value 3"
|
|
101
|
-
AnimationId = "rbxassetid://3"
|
|
102
|
-
}
|
|
100
|
+
Name = "Another value 3",
|
|
101
|
+
AnimationId = "rbxassetid://3",
|
|
102
|
+
},
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
-- print("properties.Ultimate.Sequence", properties.Ultimate.Sequence.Value)
|
|
106
106
|
|
|
107
107
|
properties.Value = {
|
|
108
|
-
Health = 25000
|
|
109
|
-
}
|
|
110
|
-
|
|
108
|
+
Health = 25000,
|
|
109
|
+
}
|
|
111
110
|
|
|
112
111
|
local multiplier = ultAttackDamage:CreateMultiplier(2, workspace)
|
|
113
112
|
-- ultAttackDamage:CreateAdditive(100, workspace)
|
|
@@ -118,4 +117,4 @@ local multiplier = ultAttackDamage:CreateMultiplier(2, workspace)
|
|
|
118
117
|
-- print(value:GetValue())
|
|
119
118
|
-- end)
|
|
120
119
|
|
|
121
|
-
multiplier:Destroy()
|
|
120
|
+
multiplier:Destroy()
|