@civ-clone/core-treasury 0.1.1 → 0.1.3
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/.github/workflows/build-on-push.yml +2 -3
- package/PlayerTreasury.js +27 -27
- package/PlayerTreasury.js.map +1 -1
- package/PlayerTreasury.ts +9 -4
- package/PlayerTreasuryRegistry.d.ts +2 -1
- package/PlayerTreasuryRegistry.js.map +1 -1
- package/PlayerTreasuryRegistry.ts +2 -1
- package/README.md +8 -1
- package/Rules/Spend.d.ts +1 -5
- package/Rules/Spend.js.map +1 -1
- package/Rules/Spend.ts +1 -7
- package/Rules/Updated.d.ts +1 -5
- package/Rules/Updated.js.map +1 -1
- package/Rules/Updated.ts +1 -7
- package/package.json +1 -1
- package/registerAdditionalData.js +1 -1
- package/registerAdditionalData.js.map +1 -1
- package/tsconfig.json +2 -2
package/PlayerTreasury.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver,
|
|
3
|
-
if (
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return value;
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
8
7
|
};
|
|
9
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver,
|
|
10
|
-
if (!
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return privateMap.get(receiver);
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
14
12
|
};
|
|
15
|
-
var
|
|
13
|
+
var _PlayerTreasury_player, _PlayerTreasury_ruleRegistry, _PlayerTreasury_cityBuildRegistry;
|
|
16
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
15
|
exports.PlayerTreasury = void 0;
|
|
18
16
|
const CityBuildRegistry_1 = require("@civ-clone/core-city-build/CityBuildRegistry");
|
|
@@ -22,16 +20,16 @@ const Yield_1 = require("@civ-clone/core-yield/Yield");
|
|
|
22
20
|
class PlayerTreasury extends Yield_1.default {
|
|
23
21
|
constructor(player, cityBuildRegistry = CityBuildRegistry_1.instance, ruleRegistry = RuleRegistry_1.instance) {
|
|
24
22
|
super();
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
__classPrivateFieldSet(this,
|
|
29
|
-
__classPrivateFieldSet(this,
|
|
30
|
-
__classPrivateFieldSet(this,
|
|
23
|
+
_PlayerTreasury_player.set(this, void 0);
|
|
24
|
+
_PlayerTreasury_ruleRegistry.set(this, void 0);
|
|
25
|
+
_PlayerTreasury_cityBuildRegistry.set(this, void 0);
|
|
26
|
+
__classPrivateFieldSet(this, _PlayerTreasury_player, player, "f");
|
|
27
|
+
__classPrivateFieldSet(this, _PlayerTreasury_ruleRegistry, ruleRegistry, "f");
|
|
28
|
+
__classPrivateFieldSet(this, _PlayerTreasury_cityBuildRegistry, cityBuildRegistry, "f");
|
|
31
29
|
}
|
|
32
30
|
buy(city) {
|
|
33
|
-
const cityBuild = __classPrivateFieldGet(this,
|
|
34
|
-
if (city.player() !== __classPrivateFieldGet(this,
|
|
31
|
+
const cityBuild = __classPrivateFieldGet(this, _PlayerTreasury_cityBuildRegistry, "f").getByCity(city), cost = this.cost(city);
|
|
32
|
+
if (city.player() !== __classPrivateFieldGet(this, _PlayerTreasury_player, "f") || this.value() < cost.value()) {
|
|
35
33
|
return;
|
|
36
34
|
}
|
|
37
35
|
// TODO: do this via Rules and then use Production
|
|
@@ -39,17 +37,19 @@ class PlayerTreasury extends Yield_1.default {
|
|
|
39
37
|
this.subtract(cost.value());
|
|
40
38
|
}
|
|
41
39
|
cost(city) {
|
|
42
|
-
const cityBuild = __classPrivateFieldGet(this,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
const cityBuild = __classPrivateFieldGet(this, _PlayerTreasury_cityBuildRegistry, "f").getByCity(city), cost = new Yield_1.default();
|
|
41
|
+
return __classPrivateFieldGet(this, _PlayerTreasury_ruleRegistry, "f")
|
|
42
|
+
.process(Spend_1.default, cityBuild, cost)
|
|
43
|
+
.reduce((totalYield, currentYield) => {
|
|
44
|
+
totalYield.add(currentYield);
|
|
45
|
+
return totalYield;
|
|
46
|
+
});
|
|
47
47
|
}
|
|
48
48
|
player() {
|
|
49
|
-
return __classPrivateFieldGet(this,
|
|
49
|
+
return __classPrivateFieldGet(this, _PlayerTreasury_player, "f");
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
exports.PlayerTreasury = PlayerTreasury;
|
|
53
|
-
|
|
53
|
+
_PlayerTreasury_player = new WeakMap(), _PlayerTreasury_ruleRegistry = new WeakMap(), _PlayerTreasury_cityBuildRegistry = new WeakMap();
|
|
54
54
|
exports.default = PlayerTreasury;
|
|
55
55
|
//# sourceMappingURL=PlayerTreasury.js.map
|
package/PlayerTreasury.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerTreasury.js","sourceRoot":"","sources":["PlayerTreasury.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PlayerTreasury.js","sourceRoot":"","sources":["PlayerTreasury.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oFAGsD;AACtD,oEAG2C;AAG3C,yCAAkC;AAClC,uDAAgD;AAQhD,MAAa,cAAe,SAAQ,eAAK;IAKvC,YACE,MAAc,EACd,oBAAuC,4BAAyB,EAChE,eAA6B,uBAAoB;QAEjD,KAAK,EAAE,CAAC;QATV,yCAAgB;QAChB,+CAA4B;QAC5B,oDAAsC;QASpC,uBAAA,IAAI,0BAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,gCAAiB,YAAY,MAAA,CAAC;QAClC,uBAAA,IAAI,qCAAsB,iBAAiB,MAAA,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,IAAU;QACZ,MAAM,SAAS,GAAG,uBAAA,IAAI,yCAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EACvD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,uBAAA,IAAI,8BAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE;YACjE,OAAO;SACR;QAED,kDAAkD;QAClD,SAAS,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEhD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,IAAU;QACb,MAAM,SAAS,GAAG,uBAAA,IAAI,yCAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EACvD,IAAI,GAAG,IAAI,eAAK,EAAE,CAAC;QAErB,OAAO,uBAAA,IAAI,oCAAc;aACtB,OAAO,CAAC,eAAK,EAAE,SAAS,EAAE,IAAI,CAAC;aAC/B,MAAM,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE;YACnC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAE7B,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM;QACJ,OAAO,uBAAA,IAAI,8BAAQ,CAAC;IACtB,CAAC;CACF;AA/CD,wCA+CC;;AAED,kBAAe,cAAc,CAAC"}
|
package/PlayerTreasury.ts
CHANGED
|
@@ -6,9 +6,9 @@ import {
|
|
|
6
6
|
RuleRegistry,
|
|
7
7
|
instance as ruleRegistryInstance,
|
|
8
8
|
} from '@civ-clone/core-rule/RuleRegistry';
|
|
9
|
-
import { Spend, ISpendRegistry } from './Rules/Spend';
|
|
10
9
|
import City from '@civ-clone/core-city/City';
|
|
11
10
|
import Player from '@civ-clone/core-player/Player';
|
|
11
|
+
import Spend from './Rules/Spend';
|
|
12
12
|
import Yield from '@civ-clone/core-yield/Yield';
|
|
13
13
|
|
|
14
14
|
export interface IPlayerTreasury {
|
|
@@ -37,6 +37,7 @@ export class PlayerTreasury extends Yield implements IPlayerTreasury {
|
|
|
37
37
|
buy(city: City): void {
|
|
38
38
|
const cityBuild = this.#cityBuildRegistry.getByCity(city),
|
|
39
39
|
cost = this.cost(city);
|
|
40
|
+
|
|
40
41
|
if (city.player() !== this.#player || this.value() < cost.value()) {
|
|
41
42
|
return;
|
|
42
43
|
}
|
|
@@ -49,11 +50,15 @@ export class PlayerTreasury extends Yield implements IPlayerTreasury {
|
|
|
49
50
|
|
|
50
51
|
cost(city: City): Yield {
|
|
51
52
|
const cityBuild = this.#cityBuildRegistry.getByCity(city),
|
|
52
|
-
// TODO: do this via Rules and then use Gold
|
|
53
53
|
cost = new Yield();
|
|
54
|
-
(this.#ruleRegistry as ISpendRegistry).process(Spend, cityBuild, cost);
|
|
55
54
|
|
|
56
|
-
return
|
|
55
|
+
return this.#ruleRegistry
|
|
56
|
+
.process(Spend, cityBuild, cost)
|
|
57
|
+
.reduce((totalYield, currentYield) => {
|
|
58
|
+
totalYield.add(currentYield);
|
|
59
|
+
|
|
60
|
+
return totalYield;
|
|
61
|
+
});
|
|
57
62
|
}
|
|
58
63
|
|
|
59
64
|
player(): Player {
|
|
@@ -9,7 +9,8 @@ interface IPlayerTreasuryRegistry extends IEntityRegistry<PlayerTreasury> {
|
|
|
9
9
|
}
|
|
10
10
|
export declare class PlayerTreasuryRegistry
|
|
11
11
|
extends EntityRegistry<PlayerTreasury>
|
|
12
|
-
implements IPlayerTreasuryRegistry
|
|
12
|
+
implements IPlayerTreasuryRegistry
|
|
13
|
+
{
|
|
13
14
|
constructor();
|
|
14
15
|
getByPlayer(player: Player): PlayerTreasury;
|
|
15
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerTreasuryRegistry.js","sourceRoot":"","sources":["PlayerTreasuryRegistry.ts"],"names":[],"mappings":";;;AAAA,4EAGiD;AAEjD,qDAA8C;AAM9C,MAAa,sBACX,SAAQ,+BAA8B;
|
|
1
|
+
{"version":3,"file":"PlayerTreasuryRegistry.js","sourceRoot":"","sources":["PlayerTreasuryRegistry.ts"],"names":[],"mappings":";;;AAAA,4EAGiD;AAEjD,qDAA8C;AAM9C,MAAa,sBACX,SAAQ,+BAA8B;IAGtC;QACE,KAAK,CAAC,wBAAc,CAAC,CAAC;IACxB,CAAC;IAED,WAAW,CAAC,MAAc;QACxB,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEtD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;SACrE;QAED,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;CACF;AAjBD,wDAiBC;AAEY,QAAA,QAAQ,GAA2B,IAAI,sBAAsB,EAAE,CAAC;AAE7E,kBAAe,sBAAsB,CAAC"}
|
|
@@ -11,7 +11,8 @@ interface IPlayerTreasuryRegistry extends IEntityRegistry<PlayerTreasury> {
|
|
|
11
11
|
|
|
12
12
|
export class PlayerTreasuryRegistry
|
|
13
13
|
extends EntityRegistry<PlayerTreasury>
|
|
14
|
-
implements IPlayerTreasuryRegistry
|
|
14
|
+
implements IPlayerTreasuryRegistry
|
|
15
|
+
{
|
|
15
16
|
constructor() {
|
|
16
17
|
super(PlayerTreasury);
|
|
17
18
|
}
|
package/README.md
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
# core-treasury
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Classes related to the concept of a `Player` having a treasury of a `Yield`.
|
|
4
4
|
|
|
5
|
+
This could probably benefit from a bit of a rewrite having multiple stores of `Yield`s (`Gold`, `Faith`, etc) that can
|
|
6
|
+
be spent.
|
|
7
|
+
|
|
8
|
+
It would also be nice to separate out the concepts of "buy" and "rush". This would also enable the (Civ 2?) concept of
|
|
9
|
+
sacrificing population to build items quickly.
|
|
10
|
+
|
|
11
|
+
Would be nice to add some core unit tests here too.
|
package/Rules/Spend.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import CityBuild from '@civ-clone/core-city-build/CityBuild';
|
|
2
|
-
import { IRuleRegistry } from '@civ-clone/core-rule/RuleRegistry';
|
|
3
2
|
import Rule from '@civ-clone/core-rule/Rule';
|
|
4
3
|
import Yield from '@civ-clone/core-yield/Yield';
|
|
5
|
-
declare
|
|
6
|
-
export declare class Spend extends Rule<SpendArgs, Yield> {}
|
|
4
|
+
export declare class Spend extends Rule<[CityBuild, Yield], Yield> {}
|
|
7
5
|
export default Spend;
|
|
8
|
-
export interface ISpendRegistry
|
|
9
|
-
extends IRuleRegistry<Spend, SpendArgs, Yield> {}
|
package/Rules/Spend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spend.js","sourceRoot":"","sources":["Spend.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Spend.js","sourceRoot":"","sources":["Spend.ts"],"names":[],"mappings":";;;AACA,oDAA6C;AAG7C,MAAa,KAAM,SAAQ,cAA+B;CAAG;AAA7D,sBAA6D;AAE7D,kBAAe,KAAK,CAAC"}
|
package/Rules/Spend.ts
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import CityBuild from '@civ-clone/core-city-build/CityBuild';
|
|
2
|
-
import { IRuleRegistry } from '@civ-clone/core-rule/RuleRegistry';
|
|
3
2
|
import Rule from '@civ-clone/core-rule/Rule';
|
|
4
3
|
import Yield from '@civ-clone/core-yield/Yield';
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export class Spend extends Rule<SpendArgs, Yield> {}
|
|
5
|
+
export class Spend extends Rule<[CityBuild, Yield], Yield> {}
|
|
9
6
|
|
|
10
7
|
export default Spend;
|
|
11
|
-
|
|
12
|
-
export interface ISpendRegistry
|
|
13
|
-
extends IRuleRegistry<Spend, SpendArgs, Yield> {}
|
package/Rules/Updated.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import City from '@civ-clone/core-city/City';
|
|
2
|
-
import { IRuleRegistry } from '@civ-clone/core-rule/RuleRegistry';
|
|
3
2
|
import PlayerTreasury from '../PlayerTreasury';
|
|
4
3
|
import Rule from '@civ-clone/core-rule/Rule';
|
|
5
|
-
declare
|
|
6
|
-
export declare class Updated extends Rule<UpdatedArgs, void> {}
|
|
4
|
+
export declare class Updated extends Rule<[PlayerTreasury, City], void> {}
|
|
7
5
|
export default Updated;
|
|
8
|
-
export interface IUpdatedRegistry
|
|
9
|
-
extends IRuleRegistry<Updated, UpdatedArgs, void> {}
|
package/Rules/Updated.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Updated.js","sourceRoot":"","sources":["Updated.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Updated.js","sourceRoot":"","sources":["Updated.ts"],"names":[],"mappings":";;;AAEA,oDAA6C;AAE7C,MAAa,OAAQ,SAAQ,cAAkC;CAAG;AAAlE,0BAAkE;AAElE,kBAAe,OAAO,CAAC"}
|
package/Rules/Updated.ts
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import City from '@civ-clone/core-city/City';
|
|
2
|
-
import { IRuleRegistry } from '@civ-clone/core-rule/RuleRegistry';
|
|
3
2
|
import PlayerTreasury from '../PlayerTreasury';
|
|
4
3
|
import Rule from '@civ-clone/core-rule/Rule';
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export class Updated extends Rule<UpdatedArgs, void> {}
|
|
5
|
+
export class Updated extends Rule<[PlayerTreasury, City], void> {}
|
|
9
6
|
|
|
10
7
|
export default Updated;
|
|
11
|
-
|
|
12
|
-
export interface IUpdatedRegistry
|
|
13
|
-
extends IRuleRegistry<Updated, UpdatedArgs, void> {}
|
package/package.json
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const AdditionalDataRegistry_1 = require("@civ-clone/core-data-object/AdditionalDataRegistry");
|
|
4
4
|
const treasury_1 = require("./AdditionalData/treasury");
|
|
5
|
-
AdditionalDataRegistry_1.instance.register(...treasury_1.default());
|
|
5
|
+
AdditionalDataRegistry_1.instance.register(...(0, treasury_1.default)());
|
|
6
6
|
//# sourceMappingURL=registerAdditionalData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerAdditionalData.js","sourceRoot":"","sources":["registerAdditionalData.ts"],"names":[],"mappings":";;AAAA,+FAAgH;AAChH,wDAAiD;AAEjD,iCAA8B,CAAC,QAAQ,CAAC,GAAG,kBAAQ,
|
|
1
|
+
{"version":3,"file":"registerAdditionalData.js","sourceRoot":"","sources":["registerAdditionalData.ts"],"names":[],"mappings":";;AAAA,+FAAgH;AAChH,wDAAiD;AAEjD,iCAA8B,CAAC,QAAQ,CAAC,GAAG,IAAA,kBAAQ,GAAE,CAAC,CAAC"}
|