@rpgjs/common 5.0.0-alpha.23 → 5.0.0-alpha.25
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/dist/index.js +214 -9
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/Player.ts +1 -1
- package/tests/physic.spec.ts +0 -453
package/dist/index.js
CHANGED
|
@@ -1721,7 +1721,7 @@ var trackDependency = /* @__PURE__ */ __name$1((signal2) => {
|
|
|
1721
1721
|
reactiveStore.currentDependencyTracker(signal2);
|
|
1722
1722
|
}
|
|
1723
1723
|
}, "trackDependency");
|
|
1724
|
-
function signal(defaultValue) {
|
|
1724
|
+
function signal(defaultValue, options) {
|
|
1725
1725
|
let subject;
|
|
1726
1726
|
if (Array.isArray(defaultValue)) {
|
|
1727
1727
|
subject = new ArraySubject(defaultValue);
|
|
@@ -1743,12 +1743,21 @@ function signal(defaultValue) {
|
|
|
1743
1743
|
return getValue();
|
|
1744
1744
|
}, "fn");
|
|
1745
1745
|
fn.set = (value) => {
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1746
|
+
const currentValue = getValue();
|
|
1747
|
+
let shouldEmit = true;
|
|
1748
|
+
if (options?.equal) {
|
|
1749
|
+
shouldEmit = !options.equal(currentValue, value);
|
|
1750
1750
|
} else {
|
|
1751
|
-
|
|
1751
|
+
shouldEmit = currentValue !== value;
|
|
1752
|
+
}
|
|
1753
|
+
if (shouldEmit) {
|
|
1754
|
+
if (subject instanceof ArraySubject) {
|
|
1755
|
+
subject.items = value;
|
|
1756
|
+
} else if (subject instanceof ObjectSubject) {
|
|
1757
|
+
subject.obj = value;
|
|
1758
|
+
} else {
|
|
1759
|
+
subject.next(value);
|
|
1760
|
+
}
|
|
1752
1761
|
}
|
|
1753
1762
|
};
|
|
1754
1763
|
fn._isFrozen = false;
|
|
@@ -1805,9 +1814,18 @@ function computed(computeFunction, disposableFn) {
|
|
|
1805
1814
|
disposableFn = lastComputedValue;
|
|
1806
1815
|
}
|
|
1807
1816
|
reactiveStore.currentDependencyTracker = previousTracker;
|
|
1808
|
-
const
|
|
1817
|
+
const observables = [
|
|
1809
1818
|
...dependencies
|
|
1810
|
-
].map((
|
|
1819
|
+
].map((dep) => {
|
|
1820
|
+
if (isComputed(dep) && "dependencies" in dep) {
|
|
1821
|
+
const computedDep = dep;
|
|
1822
|
+
if (computedDep.dependencies.size === 0) {
|
|
1823
|
+
return new BehaviorSubject(computedDep()).asObservable();
|
|
1824
|
+
}
|
|
1825
|
+
}
|
|
1826
|
+
return dep.observable;
|
|
1827
|
+
});
|
|
1828
|
+
const computedObservable = combineLatest(observables).pipe(filter(() => !init), map(() => computeFunction()), finalize(() => disposableFn?.()));
|
|
1811
1829
|
const fn = /* @__PURE__ */ __name$1(function() {
|
|
1812
1830
|
trackDependency(fn);
|
|
1813
1831
|
return lastComputedValue;
|
|
@@ -1822,6 +1840,193 @@ function computed(computeFunction, disposableFn) {
|
|
|
1822
1840
|
return fn;
|
|
1823
1841
|
}
|
|
1824
1842
|
__name$1(computed, "computed");
|
|
1843
|
+
function linkedSignal(computationOrOptions, simpleOptions) {
|
|
1844
|
+
const dependencies = /* @__PURE__ */ new Set();
|
|
1845
|
+
let init = true;
|
|
1846
|
+
let lastComputedValue;
|
|
1847
|
+
let computeFunction;
|
|
1848
|
+
let sourceSignal;
|
|
1849
|
+
let computationFn;
|
|
1850
|
+
let equalFn;
|
|
1851
|
+
let previousValue;
|
|
1852
|
+
let isOverridden = false;
|
|
1853
|
+
let overriddenValue;
|
|
1854
|
+
let depVersion = 0;
|
|
1855
|
+
let overrideDepVersion = null;
|
|
1856
|
+
if (typeof computationOrOptions === "function") {
|
|
1857
|
+
computeFunction = computationOrOptions;
|
|
1858
|
+
equalFn = simpleOptions?.equal;
|
|
1859
|
+
} else {
|
|
1860
|
+
const options = computationOrOptions;
|
|
1861
|
+
sourceSignal = options.source;
|
|
1862
|
+
computationFn = options.computation;
|
|
1863
|
+
equalFn = options.equal;
|
|
1864
|
+
if (typeof sourceSignal === "function" && !isSignal(sourceSignal)) {
|
|
1865
|
+
const sourceFn = sourceSignal;
|
|
1866
|
+
computeFunction = /* @__PURE__ */ __name$1(() => {
|
|
1867
|
+
const sourceValue = sourceFn();
|
|
1868
|
+
if (computationFn.length > 1) {
|
|
1869
|
+
const result = computationFn(sourceValue, previousValue);
|
|
1870
|
+
previousValue = {
|
|
1871
|
+
source: sourceValue,
|
|
1872
|
+
value: result
|
|
1873
|
+
};
|
|
1874
|
+
return result;
|
|
1875
|
+
} else {
|
|
1876
|
+
const result = computationFn(sourceValue);
|
|
1877
|
+
previousValue = {
|
|
1878
|
+
source: sourceValue,
|
|
1879
|
+
value: result
|
|
1880
|
+
};
|
|
1881
|
+
return result;
|
|
1882
|
+
}
|
|
1883
|
+
}, "computeFunction");
|
|
1884
|
+
} else {
|
|
1885
|
+
const source = typeof sourceSignal === "function" ? sourceSignal : sourceSignal;
|
|
1886
|
+
computeFunction = /* @__PURE__ */ __name$1(() => {
|
|
1887
|
+
const sourceValue = source();
|
|
1888
|
+
if (computationFn.length > 1) {
|
|
1889
|
+
const result = computationFn(sourceValue, previousValue);
|
|
1890
|
+
previousValue = {
|
|
1891
|
+
source: sourceValue,
|
|
1892
|
+
value: result
|
|
1893
|
+
};
|
|
1894
|
+
return result;
|
|
1895
|
+
} else {
|
|
1896
|
+
const result = computationFn(sourceValue);
|
|
1897
|
+
previousValue = {
|
|
1898
|
+
source: sourceValue,
|
|
1899
|
+
value: result
|
|
1900
|
+
};
|
|
1901
|
+
return result;
|
|
1902
|
+
}
|
|
1903
|
+
}, "computeFunction");
|
|
1904
|
+
}
|
|
1905
|
+
}
|
|
1906
|
+
const previousTracker = reactiveStore.currentDependencyTracker;
|
|
1907
|
+
reactiveStore.currentDependencyTracker = (signal2) => {
|
|
1908
|
+
dependencies.add(signal2);
|
|
1909
|
+
};
|
|
1910
|
+
if (sourceSignal && typeof sourceSignal === "function" && !isSignal(sourceSignal)) {
|
|
1911
|
+
lastComputedValue = computeFunction();
|
|
1912
|
+
} else if (sourceSignal && isSignal(sourceSignal)) {
|
|
1913
|
+
dependencies.add(sourceSignal);
|
|
1914
|
+
lastComputedValue = computeFunction();
|
|
1915
|
+
} else {
|
|
1916
|
+
lastComputedValue = computeFunction();
|
|
1917
|
+
}
|
|
1918
|
+
reactiveStore.currentDependencyTracker = previousTracker;
|
|
1919
|
+
const subject = new BehaviorSubject(lastComputedValue);
|
|
1920
|
+
const observables = [
|
|
1921
|
+
...dependencies
|
|
1922
|
+
].map((dep) => {
|
|
1923
|
+
if (isComputed(dep) && "dependencies" in dep) {
|
|
1924
|
+
const computedDep = dep;
|
|
1925
|
+
if (computedDep.dependencies.size === 0) {
|
|
1926
|
+
return new BehaviorSubject(computedDep()).asObservable();
|
|
1927
|
+
}
|
|
1928
|
+
}
|
|
1929
|
+
return dep.observable;
|
|
1930
|
+
});
|
|
1931
|
+
let linkedObservable;
|
|
1932
|
+
if (observables.length > 0) {
|
|
1933
|
+
linkedObservable = combineLatest(observables).pipe(filter(() => !init), map(() => {
|
|
1934
|
+
const computed2 = computeFunction();
|
|
1935
|
+
if (equalFn) {
|
|
1936
|
+
if (!equalFn(lastComputedValue, computed2)) {
|
|
1937
|
+
lastComputedValue = computed2;
|
|
1938
|
+
isOverridden = false;
|
|
1939
|
+
}
|
|
1940
|
+
} else {
|
|
1941
|
+
if (lastComputedValue !== computed2) {
|
|
1942
|
+
lastComputedValue = computed2;
|
|
1943
|
+
isOverridden = false;
|
|
1944
|
+
}
|
|
1945
|
+
}
|
|
1946
|
+
return lastComputedValue;
|
|
1947
|
+
}));
|
|
1948
|
+
} else {
|
|
1949
|
+
linkedObservable = subject.asObservable().pipe(filter(() => !init));
|
|
1950
|
+
}
|
|
1951
|
+
const fn = /* @__PURE__ */ __name$1(function() {
|
|
1952
|
+
trackDependency(fn);
|
|
1953
|
+
if (isOverridden && dependencies.size > 0) {
|
|
1954
|
+
if (overrideDepVersion !== depVersion) {
|
|
1955
|
+
const computed2 = computeFunction();
|
|
1956
|
+
isOverridden = false;
|
|
1957
|
+
overriddenValue = void 0;
|
|
1958
|
+
lastComputedValue = computed2;
|
|
1959
|
+
overrideDepVersion = null;
|
|
1960
|
+
return computed2;
|
|
1961
|
+
}
|
|
1962
|
+
return overriddenValue;
|
|
1963
|
+
}
|
|
1964
|
+
if (isOverridden) {
|
|
1965
|
+
return overriddenValue;
|
|
1966
|
+
}
|
|
1967
|
+
if (dependencies.size === 0) {
|
|
1968
|
+
const computed2 = computeFunction();
|
|
1969
|
+
lastComputedValue = computed2;
|
|
1970
|
+
}
|
|
1971
|
+
return lastComputedValue;
|
|
1972
|
+
}, "fn");
|
|
1973
|
+
fn.observable = new Observable((observer) => {
|
|
1974
|
+
const depSubscription = linkedObservable.subscribe((value) => {
|
|
1975
|
+
if (dependencies.size > 0) {
|
|
1976
|
+
depVersion++;
|
|
1977
|
+
isOverridden = false;
|
|
1978
|
+
overrideDepVersion = null;
|
|
1979
|
+
lastComputedValue = value;
|
|
1980
|
+
} else {
|
|
1981
|
+
lastComputedValue = value;
|
|
1982
|
+
}
|
|
1983
|
+
observer.next(value);
|
|
1984
|
+
});
|
|
1985
|
+
let subjectSubscription;
|
|
1986
|
+
if (dependencies.size === 0) {
|
|
1987
|
+
subjectSubscription = subject.pipe(filter(() => !init)).subscribe((value) => {
|
|
1988
|
+
observer.next(value);
|
|
1989
|
+
});
|
|
1990
|
+
}
|
|
1991
|
+
observer.next(lastComputedValue);
|
|
1992
|
+
return () => {
|
|
1993
|
+
depSubscription.unsubscribe();
|
|
1994
|
+
if (subjectSubscription) {
|
|
1995
|
+
subjectSubscription.unsubscribe();
|
|
1996
|
+
}
|
|
1997
|
+
};
|
|
1998
|
+
});
|
|
1999
|
+
fn.subscription = fn.observable.subscribe(() => {
|
|
2000
|
+
});
|
|
2001
|
+
fn.dependencies = dependencies;
|
|
2002
|
+
fn._subject = subject;
|
|
2003
|
+
fn.set = (value) => {
|
|
2004
|
+
if (!isOverridden) {
|
|
2005
|
+
overrideDepVersion = depVersion;
|
|
2006
|
+
if (computationFn && sourceSignal) {
|
|
2007
|
+
const sourceValue = untracked(() => {
|
|
2008
|
+
if (typeof sourceSignal === "function") {
|
|
2009
|
+
const source = sourceSignal;
|
|
2010
|
+
return isSignal(source) ? source() : sourceSignal();
|
|
2011
|
+
}
|
|
2012
|
+
return sourceSignal();
|
|
2013
|
+
});
|
|
2014
|
+
previousValue = {
|
|
2015
|
+
source: sourceValue,
|
|
2016
|
+
value
|
|
2017
|
+
};
|
|
2018
|
+
}
|
|
2019
|
+
}
|
|
2020
|
+
isOverridden = true;
|
|
2021
|
+
overriddenValue = value;
|
|
2022
|
+
lastComputedValue = value;
|
|
2023
|
+
subject.next(value);
|
|
2024
|
+
};
|
|
2025
|
+
reactiveStore.currentSubscriptionsTracker?.(fn.subscription);
|
|
2026
|
+
init = false;
|
|
2027
|
+
return fn;
|
|
2028
|
+
}
|
|
2029
|
+
__name$1(linkedSignal, "linkedSignal");
|
|
1825
2030
|
function untracked(fn) {
|
|
1826
2031
|
const prevDepTracker = reactiveStore.currentDependencyTracker;
|
|
1827
2032
|
const prevSubTracker = reactiveStore.currentSubscriptionsTracker;
|
|
@@ -2317,7 +2522,7 @@ class RpgCommonPlayer {
|
|
|
2317
2522
|
this.hpSignal = signal(0);
|
|
2318
2523
|
this.spSignal = signal(0);
|
|
2319
2524
|
this._exp = signal(0);
|
|
2320
|
-
this._level = signal(
|
|
2525
|
+
this._level = signal(1);
|
|
2321
2526
|
this._class = signal({});
|
|
2322
2527
|
this.items = signal([]);
|
|
2323
2528
|
this.equipments = signal([]);
|