warscript 0.0.1-dev.aaf0a9d → 0.0.1-dev.b530e1f
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.
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="warpack-types/warpack" />
|
|
2
2
|
/** @noSelfInFile */
|
|
3
|
+
import "../../internal/unit/ability";
|
|
3
4
|
import { TupleOf } from "../../../utility/types";
|
|
4
5
|
import { AnimationName } from "../auxiliary/animation-name";
|
|
5
6
|
import { AnimationQualifier } from "../auxiliary/animation-qualifier";
|
|
@@ -6,6 +6,7 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
|
6
6
|
local ____exports = {}
|
|
7
7
|
local ____unit = require("engine.internal.unit")
|
|
8
8
|
local Unit = ____unit.Unit
|
|
9
|
+
require("engine.internal.unit.ability")
|
|
9
10
|
local ____timer = require("core.types.timer")
|
|
10
11
|
local Timer = ____timer.Timer
|
|
11
12
|
local ____effect = require("core.types.effect")
|
package/engine/object-field.d.ts
CHANGED
|
@@ -9,7 +9,6 @@ export type ObjectFieldId = number & {
|
|
|
9
9
|
export type ObjectFieldConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (new (id: number) => T);
|
|
10
10
|
export type ObjectFieldAbstractConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (abstract new (id: number) => T);
|
|
11
11
|
declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEntry, InstanceType extends AnyNotNil, ValueType, NativeFieldType> {
|
|
12
|
-
protected readonly valueByInstance: LuaMap<InstanceType, ValueType>;
|
|
13
12
|
protected abstract readonly instanceClass: AbstractConstructor<InstanceType> | Function;
|
|
14
13
|
supports(instance: AnyNotNil): instance is InstanceType & {
|
|
15
14
|
readonly __oneSidedTypeGuard: unique symbol;
|
|
@@ -33,22 +32,22 @@ export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any
|
|
|
33
32
|
previousValue: ValueType,
|
|
34
33
|
newValue: ValueType
|
|
35
34
|
]> : never;
|
|
36
|
-
export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue">;
|
|
35
|
+
export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue" | "trySetValue">;
|
|
37
36
|
type ReadonlyObjectFieldConstructor<T extends ObjectField> = OmitConstructor<typeof ObjectField> & (abstract new (...args: any[]) => ReadonlyObjectFieldType<T>);
|
|
38
37
|
export declare abstract class ObjectField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType, NativeFieldType> {
|
|
39
38
|
protected abstract readonly defaultValue: ValueType;
|
|
40
|
-
accepts(value: unknown): value is ValueType;
|
|
41
39
|
protected abstract getNativeFieldValue(instance: InstanceType): ValueType;
|
|
42
40
|
protected abstract setNativeFieldValue(instance: InstanceType, value: ValueType): boolean;
|
|
43
41
|
getValue(entry: ObjectDataEntryType | InstanceType): ValueType;
|
|
44
42
|
setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
|
|
45
43
|
removeValue(entry: ObjectDataEntryType): boolean;
|
|
44
|
+
trySetValue(entry: ObjectDataEntryType | InstanceType, value: unknown): boolean;
|
|
46
45
|
private invokeValueChangeEvent;
|
|
47
46
|
private invokeValueChangeEventRecursive;
|
|
48
47
|
protected static getOrCreateValueChangeEvent<T extends ObjectField, R extends ReadonlyObjectFieldType<T>>(this: ReadonlyObjectFieldConstructor<T>): ObjectFieldValueChangeEvent<R>;
|
|
49
48
|
static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<ObjectField>>;
|
|
50
49
|
}
|
|
51
|
-
export type ReadonlyObjectLevelFieldType<T extends ObjectLevelField<any, any, any, any>> = Omit<T, "setValue">;
|
|
50
|
+
export type ReadonlyObjectLevelFieldType<T extends ObjectLevelField<any, any, any, any>> = Omit<T, "setValue" | "trySetValue">;
|
|
52
51
|
export type ObjectLevelFieldValueChangeEvent<T extends ObjectLevelField<any, any, any, any> | ReadonlyObjectLevelFieldType<ObjectLevelField<any, any, any, any>>> = T extends ObjectLevelField<any, infer InstanceType, infer ValueType, any, any> ? DispatchingEvent<[
|
|
53
52
|
instance: InstanceType,
|
|
54
53
|
field: T,
|
|
@@ -77,6 +76,7 @@ export declare abstract class ObjectLevelField<ObjectDataEntryType extends Objec
|
|
|
77
76
|
protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
|
|
78
77
|
getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
|
|
79
78
|
setValue(entry: ObjectDataEntryType | InstanceType, ...[levelOrValue, value]: [value: ObjectDataEntryLevelFieldValueSupplier<InputValueType, ValueType>] | [level: number, value: InputValueType]): boolean;
|
|
79
|
+
trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;
|
|
80
80
|
private invokeValueChangeEvent;
|
|
81
81
|
private invokeValueChangeEventRecursive;
|
|
82
82
|
protected static getOrCreateValueChangeEvent<T extends ObjectLevelField, R extends ReadonlyObjectLevelFieldType<T>>(this: ReadonlyObjectLevelFieldConstructor<T>): ObjectLevelFieldValueChangeEvent<R>;
|
package/engine/object-field.lua
CHANGED
|
@@ -71,9 +71,6 @@ ____exports.ObjectField = __TS__Class()
|
|
|
71
71
|
local ObjectField = ____exports.ObjectField
|
|
72
72
|
ObjectField.name = "ObjectField"
|
|
73
73
|
__TS__ClassExtends(ObjectField, ObjectFieldBase)
|
|
74
|
-
function ObjectField.prototype.accepts(self, value)
|
|
75
|
-
return __TS__TypeOf(value) == __TS__TypeOf(self.defaultValue)
|
|
76
|
-
end
|
|
77
74
|
function ObjectField.prototype.getValue(self, entry)
|
|
78
75
|
if __TS__InstanceOf(entry, ObjectDataEntry) then
|
|
79
76
|
local defaultValueByObjectDataEntryId = (warpack.compiletime and compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId or defaultValueByObjectDataEntryIdByObjectFieldId)[self.id]
|
|
@@ -159,6 +156,12 @@ function ObjectField.prototype.removeValue(self, entry)
|
|
|
159
156
|
end
|
|
160
157
|
return false
|
|
161
158
|
end
|
|
159
|
+
function ObjectField.prototype.trySetValue(self, entry, value)
|
|
160
|
+
if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
|
|
161
|
+
return false
|
|
162
|
+
end
|
|
163
|
+
return self:setValue(entry, value)
|
|
164
|
+
end
|
|
162
165
|
function ObjectField.prototype.invokeValueChangeEvent(self, ...)
|
|
163
166
|
self:invokeValueChangeEventRecursive(
|
|
164
167
|
getClass(self),
|
|
@@ -403,6 +406,21 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
|
|
|
403
406
|
end
|
|
404
407
|
return true
|
|
405
408
|
end
|
|
409
|
+
function ObjectLevelField.prototype.trySetValue(self, entry, levelOrValue, value)
|
|
410
|
+
if value ~= nil then
|
|
411
|
+
if __TS__TypeOf(value) ~= __TS__TypeOf(self.defaultValue) then
|
|
412
|
+
return false
|
|
413
|
+
end
|
|
414
|
+
if type(levelOrValue) ~= "number" then
|
|
415
|
+
return false
|
|
416
|
+
end
|
|
417
|
+
return self:setValue(entry, levelOrValue, value)
|
|
418
|
+
end
|
|
419
|
+
if __TS__TypeOf(levelOrValue) ~= __TS__TypeOf(self.defaultValue) then
|
|
420
|
+
return false
|
|
421
|
+
end
|
|
422
|
+
return self:setValue(entry, levelOrValue)
|
|
423
|
+
end
|
|
406
424
|
function ObjectLevelField.prototype.invokeValueChangeEvent(self, ...)
|
|
407
425
|
self:invokeValueChangeEventRecursive(
|
|
408
426
|
getClass(self),
|
package/package.json
CHANGED
package/utility/linked-set.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
|
|
|
44
44
|
sortBy<R>(selector: ((value: T) => R) | KeysOfType<T, R>): void;
|
|
45
45
|
protected __pairs(this: LinkedSet<T>): LuaIterator<T | undefined, IteratorState<T>>;
|
|
46
46
|
}
|
|
47
|
+
export declare const emptyLinkedSet: <T extends AnyNotNil>() => ReadonlyLinkedSet<T>;
|
|
47
48
|
export declare const linkedSetOf: <T extends AnyNotNil>(...elements: readonly T[]) => LinkedSet<T>;
|
|
48
49
|
export declare const linkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | null | undefined)[]) => LinkedSet<T>;
|
|
49
50
|
export {};
|
package/utility/linked-set.lua
CHANGED
|
@@ -2,9 +2,12 @@ local ____lualib = require("lualib_bundle")
|
|
|
2
2
|
local __TS__Class = ____lualib.__TS__Class
|
|
3
3
|
local __TS__New = ____lualib.__TS__New
|
|
4
4
|
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
5
6
|
local ____exports = {}
|
|
6
7
|
local ____arrays = require("utility.arrays")
|
|
7
8
|
local sortBy = ____arrays.sortBy
|
|
9
|
+
local ____exception = require("exception")
|
|
10
|
+
local UnsupportedOperationException = ____exception.UnsupportedOperationException
|
|
8
11
|
local function linkedSetNext(state)
|
|
9
12
|
local n = state.n
|
|
10
13
|
state.n = state.t[n]
|
|
@@ -161,6 +164,19 @@ __TS__SetDescriptor(
|
|
|
161
164
|
end},
|
|
162
165
|
true
|
|
163
166
|
)
|
|
167
|
+
local EmptyLinkedSet = __TS__Class()
|
|
168
|
+
EmptyLinkedSet.name = "EmptyLinkedSet"
|
|
169
|
+
__TS__ClassExtends(EmptyLinkedSet, ____exports.LinkedSet)
|
|
170
|
+
function EmptyLinkedSet.prototype.add(self)
|
|
171
|
+
error(
|
|
172
|
+
__TS__New(UnsupportedOperationException),
|
|
173
|
+
0
|
|
174
|
+
)
|
|
175
|
+
end
|
|
176
|
+
local EMPTY_LINKED_SET = __TS__New(EmptyLinkedSet)
|
|
177
|
+
____exports.emptyLinkedSet = function()
|
|
178
|
+
return EMPTY_LINKED_SET
|
|
179
|
+
end
|
|
164
180
|
____exports.linkedSetOf = function(...)
|
|
165
181
|
local linkedSet = __TS__New(____exports.LinkedSet)
|
|
166
182
|
for i = 1, select("#", ...) do
|