@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.
@@ -10,6 +10,5 @@ jobs:
10
10
  - uses: actions/setup-node@v1
11
11
  with:
12
12
  node-version: 12
13
- - run: yarn install
14
- - run: yarn prettier:check
15
- # - run: yarn test
13
+ - run: npm install
14
+ - run: npm run prettier:check
package/PlayerTreasury.js CHANGED
@@ -1,18 +1,16 @@
1
1
  "use strict";
2
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {
3
- if (!privateMap.has(receiver)) {
4
- throw new TypeError("attempted to set private field on non-instance");
5
- }
6
- privateMap.set(receiver, value);
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, privateMap) {
10
- if (!privateMap.has(receiver)) {
11
- throw new TypeError("attempted to get private field on non-instance");
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 _player, _ruleRegistry, _cityBuildRegistry;
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
- _player.set(this, void 0);
26
- _ruleRegistry.set(this, void 0);
27
- _cityBuildRegistry.set(this, void 0);
28
- __classPrivateFieldSet(this, _player, player);
29
- __classPrivateFieldSet(this, _ruleRegistry, ruleRegistry);
30
- __classPrivateFieldSet(this, _cityBuildRegistry, cityBuildRegistry);
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, _cityBuildRegistry).getByCity(city), cost = this.cost(city);
34
- if (city.player() !== __classPrivateFieldGet(this, _player) || this.value() < cost.value()) {
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, _cityBuildRegistry).getByCity(city),
43
- // TODO: do this via Rules and then use Gold
44
- cost = new Yield_1.default();
45
- __classPrivateFieldGet(this, _ruleRegistry).process(Spend_1.Spend, cityBuild, cost);
46
- return cost;
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, _player);
49
+ return __classPrivateFieldGet(this, _PlayerTreasury_player, "f");
50
50
  }
51
51
  }
52
52
  exports.PlayerTreasury = PlayerTreasury;
53
- _player = new WeakMap(), _ruleRegistry = new WeakMap(), _cityBuildRegistry = new WeakMap();
53
+ _PlayerTreasury_player = new WeakMap(), _PlayerTreasury_ruleRegistry = new WeakMap(), _PlayerTreasury_cityBuildRegistry = new WeakMap();
54
54
  exports.default = PlayerTreasury;
55
55
  //# sourceMappingURL=PlayerTreasury.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlayerTreasury.js","sourceRoot":"","sources":["PlayerTreasury.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oFAGsD;AACtD,oEAG2C;AAC3C,yCAAsD;AAGtD,uDAAgD;AAQhD,MAAa,cAAe,SAAQ,eAAK;IAKvC,YACE,MAAc,EACd,oBAAuC,4BAAyB,EAChE,eAA6B,uBAAoB;QAEjD,KAAK,EAAE,CAAC;QATV,0BAAgB;QAChB,gCAA4B;QAC5B,qCAAsC;QASpC,uBAAA,IAAI,WAAW,MAAM,EAAC;QACtB,uBAAA,IAAI,iBAAiB,YAAY,EAAC;QAClC,uBAAA,IAAI,sBAAsB,iBAAiB,EAAC;IAC9C,CAAC;IAED,GAAG,CAAC,IAAU;QACZ,MAAM,SAAS,GAAG,iDAAwB,SAAS,CAAC,IAAI,CAAC,EACvD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,EAAE,0CAAiB,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,iDAAwB,SAAS,CAAC,IAAI,CAAC;QACvD,4CAA4C;QAC5C,IAAI,GAAG,IAAI,eAAK,EAAE,CAAC;QACpB,2CAAqC,CAAC,OAAO,CAAC,aAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAEvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,6CAAoB;IACtB,CAAC;CACF;AA1CD,wCA0CC;;AAED,kBAAe,cAAc,CAAC"}
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 cost;
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;IAEtC;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;AAhBD,wDAgBC;AAEY,QAAA,QAAQ,GAA2B,IAAI,sBAAsB,EAAE,CAAC;AAE7E,kBAAe,sBAAsB,CAAC"}
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
- This is a template repo.
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 type SpendArgs = [CityBuild, Yield];
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> {}
@@ -1 +1 @@
1
- {"version":3,"file":"Spend.js","sourceRoot":"","sources":["Spend.ts"],"names":[],"mappings":";;;AAEA,oDAA6C;AAK7C,MAAa,KAAM,SAAQ,cAAsB;CAAG;AAApD,sBAAoD;AAEpD,kBAAe,KAAK,CAAC"}
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
- type SpendArgs = [CityBuild, Yield];
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> {}
@@ -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 type UpdatedArgs = [PlayerTreasury, City];
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> {}
@@ -1 +1 @@
1
- {"version":3,"file":"Updated.js","sourceRoot":"","sources":["Updated.ts"],"names":[],"mappings":";;;AAGA,oDAA6C;AAI7C,MAAa,OAAQ,SAAQ,cAAuB;CAAG;AAAvD,0BAAuD;AAEvD,kBAAe,OAAO,CAAC"}
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
- type UpdatedArgs = [PlayerTreasury, City];
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@civ-clone/core-treasury",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "main": "index.js",
5
5
  "repository": "git@github.com:civ-clone/core-treasury.git",
6
6
  "keywords": [
@@ -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,EAAE,CAAC,CAAC"}
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"}
package/tsconfig.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "compilerOptions": {
3
3
  "declaration": true,
4
4
  "lib": [
5
- "es2019"
5
+ "es2020"
6
6
  ],
7
7
  "module": "commonjs",
8
8
  "sourceMap": true,
@@ -13,4 +13,4 @@
13
13
  "node_modules",
14
14
  "tests/*.test.ts"
15
15
  ]
16
- }
16
+ }