powergrid-viewer 1.11.0 → 1.11.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powergrid-viewer",
3
- "version": "1.11.0",
3
+ "version": "1.11.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/boardgamers/powergrid.git",
@@ -18,7 +18,7 @@
18
18
  "vue": "^2.6.11",
19
19
  "vue-class-component": "^7.2.3",
20
20
  "vue-property-decorator": "^8.4.2",
21
- "powergrid-engine": "1.14.1"
21
+ "powergrid-engine": "1.15.2"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/assert": "^1.4.7",
@@ -1118,12 +1118,9 @@ export default class Game extends Vue {
1118
1118
  playerHasUsedFreeJump(playerIndex: number): boolean {
1119
1119
  const player = this.G?.players[playerIndex];
1120
1120
  if (!player) return false;
1121
- // Primary: trust the engine flag (set for all new games).
1122
1121
  if (player.usedFreeJump) return true;
1123
- // Fallback: detect from network topology for game states where
1124
- // usedFreeJump wasn't tracked (games started before that field existed).
1125
1122
  if (player.cities.length >= 2) {
1126
- return countNetworks(this.G!.map.connections, player.cities.map(c => c.name)) >= 2;
1123
+ if (countNetworks(this.G!.map.connections, player.cities.map(c => c.name)) >= 2) return true;
1127
1124
  }
1128
1125
  return false;
1129
1126
  }
@@ -123,8 +123,8 @@
123
123
  {{ resourceResupply[2] }}
124
124
  </text>
125
125
  <Garbage :pieceId="-1" :targetState="{ x: 382, y: 11 }" :canClick="false" :transparent="false" />
126
- <!-- Australia has no main-market uranium row, so its resupply indicator omits uranium. -->
127
- <template v-if="!isAustraliaMarket">
126
+ <!-- Australia and Bremen have no main-market uranium row, so their resupply indicators omit uranium. -->
127
+ <template v-if="!isAustraliaMarket && !isBremenMarket">
128
128
  <text x="414" y="20" font-weight="600" fill="black" style="font-size: 24px">
129
129
  {{ resourceResupply[3] }}
130
130
  </text>
@@ -164,7 +164,10 @@
164
164
  >
165
165
  {{ index }}
166
166
  </text>
167
- <g :key="'lines' + index" v-if="!isIndiaResourceMarket && !isNinePriceMarket && !isAustraliaMarket">
167
+ <g
168
+ :key="'lines' + index"
169
+ v-if="!isIndiaResourceMarket && !isNinePriceMarket && !isAustraliaMarket && !isBremenMarket"
170
+ >
168
171
  <line :x1="25 + 85 * (index - 1)" y1="68" :x2="95 + 85 * (index - 1)" y2="68" stroke="goldenrod" />
169
172
  <line :x1="25 + 85 * (index - 1)" y1="92" :x2="95 + 85 * (index - 1)" y2="92" stroke="goldenrod" />
170
173
 
@@ -216,7 +219,7 @@
216
219
  </g>
217
220
  </template>
218
221
 
219
- <template v-if="!isIndiaResourceMarket && !isNinePriceMarket && !isAustraliaMarket">
222
+ <template v-if="!isIndiaResourceMarket && !isNinePriceMarket && !isAustraliaMarket && !isBremenMarket">
220
223
  <rect width="30" height="30" x="705" y="45" rx="2" fill="darkgoldenrod" />
221
224
  <circle r="10" cx="732" cy="48" fill="yellow" />
222
225
  <text
@@ -453,6 +456,9 @@ export default class Resources extends Vue {
453
456
  // Australia: coal/oil/garbage-only market that can reach $10 after the Step 3
454
457
  // CO2 tax. co2TaxActive closes the $1/$2 columns once that shift has happened.
455
458
  isAustraliaMarket: boolean = false;
459
+ // Bremen: coal/oil/garbage-only market (no uranium row, like Korea's North
460
+ // table) where the $7/$8 spaces hold two cubes each.
461
+ isBremenMarket: boolean = false;
456
462
  co2TaxActive: boolean = false;
457
463
  coalsNorth: Piece[] = [];
458
464
  oilsNorth: Piece[] = [];
@@ -507,6 +513,7 @@ export default class Resources extends Vue {
507
513
 
508
514
  this.isAustraliaMarket = gameState.map?.name === 'Australia';
509
515
  this.co2TaxActive = this.isAustraliaMarket && gameState.step >= 3;
516
+ this.isBremenMarket = gameState.map?.name === 'Bremen';
510
517
 
511
518
  const isKorea = gameState.coalMarketNorth !== undefined;
512
519
  this.isKorea = isKorea;
@@ -606,6 +613,20 @@ export default class Resources extends Vue {
606
613
  return;
607
614
  }
608
615
 
616
+ // Bremen: three-resource market rendered like Korea's North table — no
617
+ // uranium row or $10–$16 corner. Slot counts per price space come from
618
+ // the price arrays ($7/$8 hold two cubes each).
619
+ if (this.isBremenMarket) {
620
+ this.coals = this.buildMainRowPieces(gameState.coalPrices!, gameState.coalMarket, 'coal', 48);
621
+ this.oils = this.buildMainRowPieces(gameState.oilPrices!, gameState.oilMarket, 'oil', 70);
622
+ this.garbages = this.buildMainRowPieces(gameState.garbagePrices!, gameState.garbageMarket, 'garbage', 94);
623
+ this.uraniums = [];
624
+ this.coalsNorth = [];
625
+ this.oilsNorth = [];
626
+ this.garbagesNorth = [];
627
+ return;
628
+ }
629
+
609
630
  this.isNinePriceMarket = false;
610
631
 
611
632
  // Non-Korea: original logic below (unchanged).