valtech-components 4.0.429 → 4.0.431
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/esm2022/lib/components/organisms/mini-games/christianity-game.component.mjs +414 -162
- package/esm2022/lib/components/organisms/mini-games/mini-games.i18n.mjs +33 -1
- package/esm2022/lib/components/organisms/mini-games/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +446 -162
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/mini-games/chessimals-game.component.d.ts +1 -1
- package/lib/components/organisms/mini-games/christianity-game.component.d.ts +21 -2
- package/lib/components/organisms/mini-games/types.d.ts +3 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -58,7 +58,7 @@ import fixWebmDuration from 'fix-webm-duration';
|
|
|
58
58
|
* Current version of valtech-components.
|
|
59
59
|
* This is automatically updated during the publish process.
|
|
60
60
|
*/
|
|
61
|
-
const VERSION = '4.0.
|
|
61
|
+
const VERSION = '4.0.431';
|
|
62
62
|
|
|
63
63
|
// Control de estado de refresco (singleton a nivel de módulo)
|
|
64
64
|
let isRefreshing = false;
|
|
@@ -62464,6 +62464,7 @@ const MINI_GAMES_I18N = {
|
|
|
62464
62464
|
christianityHand: 'Mano',
|
|
62465
62465
|
christianityOpponentBattle: 'Zona de batalla rival',
|
|
62466
62466
|
christianityYourBattle: 'Tu zona de batalla',
|
|
62467
|
+
christianityOpponentHand: 'Mano rival',
|
|
62467
62468
|
christianitySharedZone: 'Zona compartida',
|
|
62468
62469
|
christianityHistory: 'Historia',
|
|
62469
62470
|
christianityDeck: 'Mazo',
|
|
@@ -62472,14 +62473,29 @@ const MINI_GAMES_I18N = {
|
|
|
62472
62473
|
christianityYourHand: 'Tu mano',
|
|
62473
62474
|
christianityCost: 'Coste',
|
|
62474
62475
|
christianityOfferingCard: 'Ofrenda',
|
|
62476
|
+
christianityCharacterCard: 'Personaje',
|
|
62477
|
+
christianityLeaderCard: 'Líder',
|
|
62478
|
+
christianityHiddenCard: 'Carta oculta',
|
|
62475
62479
|
christianityEndTurn: 'Terminar turno',
|
|
62476
62480
|
christianityPlayCard: 'Jugar carta',
|
|
62477
62481
|
christianityReset: 'Reiniciar mock',
|
|
62478
62482
|
christianityWaitTurn: 'Espera el turno rival.',
|
|
62479
62483
|
christianityChooseTarget: 'Elige un objetivo para atacar.',
|
|
62484
|
+
christianityChooseCharacterTarget: 'El rival tiene personajes: debes atacarlos antes que al líder.',
|
|
62480
62485
|
christianityReadyToPlay: 'Puedes jugar esta carta.',
|
|
62481
62486
|
christianityNeedOfferings: 'Necesitas más ofrendas para jugar esa carta.',
|
|
62482
62487
|
christianityChooseCard: 'Elige una carta o un personaje listo para actuar.',
|
|
62488
|
+
christianityLeaderProtected: 'No puedes atacar directamente al líder mientras tenga personajes en batalla.',
|
|
62489
|
+
christianityLeaderBody: 'Si su vida llega a 0, la partida termina.',
|
|
62490
|
+
christianityOfferingReady: 'Lista',
|
|
62491
|
+
christianityOfferingExhausted: 'Agotada',
|
|
62492
|
+
christianityOfferingBody: 'Se agota para pagar costes y vuelve a estar lista al comenzar tu turno.',
|
|
62493
|
+
christianityCharacterBody: 'Entra a batalla y debe esperar un turno para atacar.',
|
|
62494
|
+
christianityCharacterReady: 'Listo para atacar.',
|
|
62495
|
+
christianityCharacterExhausted: 'No puede atacar todavía.',
|
|
62496
|
+
christianityDeckBody: 'La primera carta de esta pila se roba automaticamente al comenzar cada turno.',
|
|
62497
|
+
christianityClosePreview: 'Cerrar previsualizacion de carta',
|
|
62498
|
+
christianityCloseHistory: 'Cerrar historia',
|
|
62483
62499
|
christianityHistoryEmpty: 'Todavía no hay cartas en historia.',
|
|
62484
62500
|
soonTitle: 'Próximamente',
|
|
62485
62501
|
openGame: 'Jugar',
|
|
@@ -62869,6 +62885,7 @@ const MINI_GAMES_I18N = {
|
|
|
62869
62885
|
christianityHand: 'Hand',
|
|
62870
62886
|
christianityOpponentBattle: 'Opponent battle zone',
|
|
62871
62887
|
christianityYourBattle: 'Your battle zone',
|
|
62888
|
+
christianityOpponentHand: 'Opponent hand',
|
|
62872
62889
|
christianitySharedZone: 'Shared zone',
|
|
62873
62890
|
christianityHistory: 'History',
|
|
62874
62891
|
christianityDeck: 'Deck',
|
|
@@ -62877,14 +62894,29 @@ const MINI_GAMES_I18N = {
|
|
|
62877
62894
|
christianityYourHand: 'Your hand',
|
|
62878
62895
|
christianityCost: 'Cost',
|
|
62879
62896
|
christianityOfferingCard: 'Offering',
|
|
62897
|
+
christianityCharacterCard: 'Character',
|
|
62898
|
+
christianityLeaderCard: 'Leader',
|
|
62899
|
+
christianityHiddenCard: 'Hidden card',
|
|
62880
62900
|
christianityEndTurn: 'End turn',
|
|
62881
62901
|
christianityPlayCard: 'Play card',
|
|
62882
62902
|
christianityReset: 'Reset mock',
|
|
62883
62903
|
christianityWaitTurn: 'Wait for the opponent turn.',
|
|
62884
62904
|
christianityChooseTarget: 'Choose a target to attack.',
|
|
62905
|
+
christianityChooseCharacterTarget: 'The opponent has characters: attack them before the leader.',
|
|
62885
62906
|
christianityReadyToPlay: 'You can play this card.',
|
|
62886
62907
|
christianityNeedOfferings: 'You need more offerings to play that card.',
|
|
62887
62908
|
christianityChooseCard: 'Choose a card or a ready character.',
|
|
62909
|
+
christianityLeaderProtected: 'You cannot attack the leader directly while they have characters in battle.',
|
|
62910
|
+
christianityLeaderBody: 'If this leader reaches 0 life, the game ends.',
|
|
62911
|
+
christianityOfferingReady: 'Ready',
|
|
62912
|
+
christianityOfferingExhausted: 'Exhausted',
|
|
62913
|
+
christianityOfferingBody: 'Exhaust it to pay costs. It readies again at the start of your turn.',
|
|
62914
|
+
christianityCharacterBody: 'Enters battle and must wait one turn before attacking.',
|
|
62915
|
+
christianityCharacterReady: 'Ready to attack.',
|
|
62916
|
+
christianityCharacterExhausted: 'Cannot attack yet.',
|
|
62917
|
+
christianityDeckBody: 'The top card in this pile is drawn automatically at the start of each turn.',
|
|
62918
|
+
christianityClosePreview: 'Close card preview',
|
|
62919
|
+
christianityCloseHistory: 'Close history',
|
|
62888
62920
|
christianityHistoryEmpty: 'There are no cards in history yet.',
|
|
62889
62921
|
soonTitle: 'Coming soon',
|
|
62890
62922
|
openGame: 'Play',
|
|
@@ -67891,6 +67923,26 @@ const STARTER_CARDS = {
|
|
|
67891
67923
|
p_elder: { id: 'p_elder', name: 'Elder', type: 'character', cost: 3, attack: 2, life: 4 },
|
|
67892
67924
|
p_champion: { id: 'p_champion', name: 'Champion', type: 'character', cost: 4, attack: 4, life: 4 },
|
|
67893
67925
|
};
|
|
67926
|
+
const STARTING_SHARED_DECK = [
|
|
67927
|
+
'o_simple',
|
|
67928
|
+
'p_scout',
|
|
67929
|
+
'o_simple',
|
|
67930
|
+
'p_guard',
|
|
67931
|
+
'p_warrior',
|
|
67932
|
+
'o_simple',
|
|
67933
|
+
'p_elder',
|
|
67934
|
+
'p_scout',
|
|
67935
|
+
'o_simple',
|
|
67936
|
+
'p_champion',
|
|
67937
|
+
'p_guard',
|
|
67938
|
+
'o_simple',
|
|
67939
|
+
'p_warrior',
|
|
67940
|
+
'p_scout',
|
|
67941
|
+
'o_simple',
|
|
67942
|
+
'p_elder',
|
|
67943
|
+
'p_guard',
|
|
67944
|
+
'o_simple',
|
|
67945
|
+
];
|
|
67894
67946
|
const STARTING_GAME = {
|
|
67895
67947
|
gameId: 'mock-christianity',
|
|
67896
67948
|
status: 'in_progress',
|
|
@@ -67898,12 +67950,14 @@ const STARTING_GAME = {
|
|
|
67898
67950
|
turnOwner: 'P1',
|
|
67899
67951
|
revision: 0,
|
|
67900
67952
|
turnCount: 1,
|
|
67901
|
-
|
|
67953
|
+
sharedDeck: STARTING_SHARED_DECK,
|
|
67902
67954
|
historyZone: [],
|
|
67903
67955
|
players: {
|
|
67904
67956
|
P1: {
|
|
67905
67957
|
seat: 'P1',
|
|
67906
67958
|
displayName: 'Jugador',
|
|
67959
|
+
avatar: 'J',
|
|
67960
|
+
avatarColor: '#2563eb',
|
|
67907
67961
|
leaderName: 'Adam',
|
|
67908
67962
|
leaderHp: 15,
|
|
67909
67963
|
leaderMaxHp: 15,
|
|
@@ -67915,6 +67969,8 @@ const STARTING_GAME = {
|
|
|
67915
67969
|
P2: {
|
|
67916
67970
|
seat: 'P2',
|
|
67917
67971
|
displayName: 'Rival',
|
|
67972
|
+
avatar: 'R',
|
|
67973
|
+
avatarColor: '#b45309',
|
|
67918
67974
|
leaderName: 'Noah',
|
|
67919
67975
|
leaderHp: 15,
|
|
67920
67976
|
leaderMaxHp: 15,
|
|
@@ -67944,11 +68000,13 @@ class ChristianityGameComponent {
|
|
|
67944
68000
|
this.game = signal(structuredClone(STARTING_GAME));
|
|
67945
68001
|
this.selectedHandCard = signal(null);
|
|
67946
68002
|
this.selectedAttacker = signal(null);
|
|
68003
|
+
this.selectedPreview = signal(null);
|
|
67947
68004
|
this.showHistory = signal(false);
|
|
67948
68005
|
this.player = computed(() => this.game().players.P1);
|
|
67949
68006
|
this.opponent = computed(() => this.game().players.P2);
|
|
67950
68007
|
this.currentPlayer = computed(() => this.game().players[this.game().turnOwner]);
|
|
67951
68008
|
this.isOwnTurn = computed(() => this.game().turnOwner === 'P1');
|
|
68009
|
+
this.hasOpponentGuards = computed(() => this.opponent().battleZone.length > 0);
|
|
67952
68010
|
this.opponentHandCount = computed(() => this.opponent().handCount ?? this.opponent().hand?.length ?? 0);
|
|
67953
68011
|
this.statusText = computed(() => {
|
|
67954
68012
|
const attacker = this.selectedAttacker();
|
|
@@ -67957,7 +68015,7 @@ class ChristianityGameComponent {
|
|
|
67957
68015
|
return this.t('christianityWaitTurn');
|
|
67958
68016
|
}
|
|
67959
68017
|
if (attacker) {
|
|
67960
|
-
return this.t('christianityChooseTarget');
|
|
68018
|
+
return this.hasOpponentGuards() ? this.t('christianityChooseCharacterTarget') : this.t('christianityChooseTarget');
|
|
67961
68019
|
}
|
|
67962
68020
|
if (handCard) {
|
|
67963
68021
|
const card = this.cardDefinition(handCard);
|
|
@@ -67976,11 +68034,24 @@ class ChristianityGameComponent {
|
|
|
67976
68034
|
}
|
|
67977
68035
|
battleSlots(seat) {
|
|
67978
68036
|
const cards = this.game().players[seat].battleZone;
|
|
67979
|
-
return Array.from({ length:
|
|
68037
|
+
return Array.from({ length: 4 }, (_, index) => ({
|
|
67980
68038
|
trackId: cards[index]?.instanceId ?? `${seat}-empty-${index}`,
|
|
67981
68039
|
card: cards[index],
|
|
67982
68040
|
}));
|
|
67983
68041
|
}
|
|
68042
|
+
hiddenHandCards(count) {
|
|
68043
|
+
return Array.from({ length: count });
|
|
68044
|
+
}
|
|
68045
|
+
fanTransform(index, total, opponent) {
|
|
68046
|
+
if (total <= 1)
|
|
68047
|
+
return opponent ? 'rotate(180deg)' : 'none';
|
|
68048
|
+
const center = (total - 1) / 2;
|
|
68049
|
+
const offset = index - center;
|
|
68050
|
+
const rotate = offset * 5;
|
|
68051
|
+
const lift = Math.abs(offset) * 0.25;
|
|
68052
|
+
const base = opponent ? 'rotate(180deg)' : '';
|
|
68053
|
+
return `${base} translateY(${lift}rem) rotate(${rotate}deg)`;
|
|
68054
|
+
}
|
|
67984
68055
|
readyOfferings(player) {
|
|
67985
68056
|
return player.offerings.reduce((total, offering) => total + (offering.ready ? offering.value : 0), 0);
|
|
67986
68057
|
}
|
|
@@ -67989,7 +68060,7 @@ class ChristianityGameComponent {
|
|
|
67989
68060
|
return false;
|
|
67990
68061
|
if (card.type === 'offering')
|
|
67991
68062
|
return !this.player().offeringPlayedThisTurn;
|
|
67992
|
-
return this.readyOfferings(this.player()) >= card.cost && this.player().battleZone.length <
|
|
68063
|
+
return this.readyOfferings(this.player()) >= card.cost && this.player().battleZone.length < 4;
|
|
67993
68064
|
}
|
|
67994
68065
|
canPlaySelected() {
|
|
67995
68066
|
const selected = this.selectedHandCard();
|
|
@@ -67998,6 +68069,7 @@ class ChristianityGameComponent {
|
|
|
67998
68069
|
selectHandCard(cardId) {
|
|
67999
68070
|
this.selectedAttacker.set(null);
|
|
68000
68071
|
this.selectedHandCard.set(this.selectedHandCard() === cardId ? null : cardId);
|
|
68072
|
+
this.inspectHandCard(cardId);
|
|
68001
68073
|
}
|
|
68002
68074
|
playSelectedCard() {
|
|
68003
68075
|
const cardId = this.selectedHandCard();
|
|
@@ -68049,14 +68121,36 @@ class ChristianityGameComponent {
|
|
|
68049
68121
|
}
|
|
68050
68122
|
selectAttacker(card) {
|
|
68051
68123
|
this.selectedHandCard.set(null);
|
|
68124
|
+
this.inspectCharacter(card);
|
|
68052
68125
|
if (!this.isOwnTurn() || !card.canAttack)
|
|
68053
68126
|
return;
|
|
68054
68127
|
this.selectedAttacker.set(this.selectedAttacker()?.instanceId === card.instanceId ? null : card);
|
|
68055
68128
|
}
|
|
68129
|
+
handleOpponentCharacter(card) {
|
|
68130
|
+
this.inspectCharacter(card);
|
|
68131
|
+
if (this.selectedAttacker()) {
|
|
68132
|
+
this.attackCharacter(card);
|
|
68133
|
+
}
|
|
68134
|
+
}
|
|
68135
|
+
handleOpponentLeader() {
|
|
68136
|
+
this.inspectLeader('P2');
|
|
68137
|
+
if (this.selectedAttacker() && !this.hasOpponentGuards()) {
|
|
68138
|
+
this.attackLeader();
|
|
68139
|
+
}
|
|
68140
|
+
}
|
|
68056
68141
|
attackLeader() {
|
|
68057
68142
|
const attacker = this.selectedAttacker();
|
|
68058
68143
|
if (!attacker)
|
|
68059
68144
|
return;
|
|
68145
|
+
if (this.hasOpponentGuards()) {
|
|
68146
|
+
this.selectedPreview.set({
|
|
68147
|
+
title: this.opponent().leaderName,
|
|
68148
|
+
eyebrow: this.t('christianityLeaderCard'),
|
|
68149
|
+
meta: `${this.opponent().leaderHp}/${this.opponent().leaderMaxHp}`,
|
|
68150
|
+
body: this.t('christianityLeaderProtected'),
|
|
68151
|
+
});
|
|
68152
|
+
return;
|
|
68153
|
+
}
|
|
68060
68154
|
this.game.update(game => {
|
|
68061
68155
|
const next = structuredClone(game);
|
|
68062
68156
|
const liveAttacker = next.players.P1.battleZone.find(card => card.instanceId === attacker.instanceId);
|
|
@@ -68094,6 +68188,7 @@ class ChristianityGameComponent {
|
|
|
68094
68188
|
endTurn() {
|
|
68095
68189
|
this.selectedHandCard.set(null);
|
|
68096
68190
|
this.selectedAttacker.set(null);
|
|
68191
|
+
this.selectedPreview.set(null);
|
|
68097
68192
|
this.game.update(game => {
|
|
68098
68193
|
const next = structuredClone(game);
|
|
68099
68194
|
next.turnOwner = next.turnOwner === 'P1' ? 'P2' : 'P1';
|
|
@@ -68102,8 +68197,21 @@ class ChristianityGameComponent {
|
|
|
68102
68197
|
current.offeringPlayedThisTurn = false;
|
|
68103
68198
|
current.offerings = current.offerings.map(offering => ({ ...offering, ready: true }));
|
|
68104
68199
|
current.battleZone = current.battleZone.map(card => ({ ...card, canAttack: true }));
|
|
68200
|
+
const drawnCard = next.sharedDeck.shift();
|
|
68201
|
+
if (drawnCard) {
|
|
68202
|
+
if (current.hand) {
|
|
68203
|
+
current.hand.push(drawnCard);
|
|
68204
|
+
}
|
|
68205
|
+
else {
|
|
68206
|
+
current.handCount = (current.handCount ?? 0) + 1;
|
|
68207
|
+
}
|
|
68208
|
+
}
|
|
68105
68209
|
next.revision++;
|
|
68106
|
-
next.log = [
|
|
68210
|
+
next.log = [
|
|
68211
|
+
drawnCard ? `${current.displayName} roba una carta.` : `El mazo esta vacio.`,
|
|
68212
|
+
`Turno de ${current.displayName}.`,
|
|
68213
|
+
...next.log,
|
|
68214
|
+
].slice(0, 4);
|
|
68107
68215
|
return next;
|
|
68108
68216
|
});
|
|
68109
68217
|
}
|
|
@@ -68111,11 +68219,11 @@ class ChristianityGameComponent {
|
|
|
68111
68219
|
this.game.set(structuredClone(STARTING_GAME));
|
|
68112
68220
|
this.selectedHandCard.set(null);
|
|
68113
68221
|
this.selectedAttacker.set(null);
|
|
68222
|
+
this.selectedPreview.set(null);
|
|
68223
|
+
this.showHistory.set(false);
|
|
68114
68224
|
}
|
|
68115
|
-
|
|
68116
|
-
|
|
68117
|
-
.historyZone.map(cardId => this.cardDefinition(cardId).name)
|
|
68118
|
-
.join(', ');
|
|
68225
|
+
closePreview() {
|
|
68226
|
+
this.selectedPreview.set(null);
|
|
68119
68227
|
}
|
|
68120
68228
|
cleanupDestroyed(player, game) {
|
|
68121
68229
|
const destroyed = player.battleZone.filter(card => card.currentHp <= 0);
|
|
@@ -68124,6 +68232,52 @@ class ChristianityGameComponent {
|
|
|
68124
68232
|
game.historyZone.push(...destroyed.map(card => card.cardId));
|
|
68125
68233
|
player.battleZone = player.battleZone.filter(card => card.currentHp > 0);
|
|
68126
68234
|
}
|
|
68235
|
+
inspectLeader(seat) {
|
|
68236
|
+
const player = this.game().players[seat];
|
|
68237
|
+
this.selectedPreview.set({
|
|
68238
|
+
title: player.leaderName,
|
|
68239
|
+
eyebrow: this.t('christianityLeaderCard'),
|
|
68240
|
+
meta: `${player.leaderHp}/${player.leaderMaxHp}`,
|
|
68241
|
+
body: seat === 'P2' && this.hasOpponentGuards() ? this.t('christianityLeaderProtected') : this.t('christianityLeaderBody'),
|
|
68242
|
+
});
|
|
68243
|
+
}
|
|
68244
|
+
inspectOffering(offering) {
|
|
68245
|
+
this.selectedPreview.set({
|
|
68246
|
+
title: offering.name,
|
|
68247
|
+
eyebrow: this.t('christianityOfferingCard'),
|
|
68248
|
+
meta: offering.ready ? this.t('christianityOfferingReady') : this.t('christianityOfferingExhausted'),
|
|
68249
|
+
body: this.t('christianityOfferingBody'),
|
|
68250
|
+
});
|
|
68251
|
+
}
|
|
68252
|
+
inspectDeck() {
|
|
68253
|
+
this.selectedPreview.set({
|
|
68254
|
+
title: this.t('christianityDeck'),
|
|
68255
|
+
eyebrow: this.t('christianitySharedZone'),
|
|
68256
|
+
meta: `${this.game().sharedDeck.length}`,
|
|
68257
|
+
body: this.t('christianityDeckBody'),
|
|
68258
|
+
});
|
|
68259
|
+
}
|
|
68260
|
+
inspectHandCard(cardId) {
|
|
68261
|
+
const card = this.cardDefinition(cardId);
|
|
68262
|
+
this.selectedPreview.set({
|
|
68263
|
+
title: card.name,
|
|
68264
|
+
eyebrow: card.type === 'offering' ? this.t('christianityOfferingCard') : this.t('christianityCharacterCard'),
|
|
68265
|
+
meta: card.type === 'offering' ? `+${card.life}` : `${this.t('christianityCost')} ${card.cost} · ${card.attack}/${card.life}`,
|
|
68266
|
+
body: card.type === 'offering' ? this.t('christianityOfferingBody') : this.t('christianityCharacterBody'),
|
|
68267
|
+
});
|
|
68268
|
+
}
|
|
68269
|
+
inspectHistoryCard(cardId) {
|
|
68270
|
+
this.showHistory.set(false);
|
|
68271
|
+
this.inspectHandCard(cardId);
|
|
68272
|
+
}
|
|
68273
|
+
inspectCharacter(card) {
|
|
68274
|
+
this.selectedPreview.set({
|
|
68275
|
+
title: card.name,
|
|
68276
|
+
eyebrow: this.t('christianityCharacterCard'),
|
|
68277
|
+
meta: `${card.attack}/${card.currentHp}`,
|
|
68278
|
+
body: card.canAttack ? this.t('christianityCharacterReady') : this.t('christianityCharacterExhausted'),
|
|
68279
|
+
});
|
|
68280
|
+
}
|
|
68127
68281
|
spendOfferings(player, cost) {
|
|
68128
68282
|
let remaining = cost;
|
|
68129
68283
|
player.offerings = player.offerings.map(offering => {
|
|
@@ -68147,94 +68301,129 @@ class ChristianityGameComponent {
|
|
|
68147
68301
|
</div>
|
|
68148
68302
|
</section>
|
|
68149
68303
|
|
|
68304
|
+
<section class="christianity-opponent-hand-area" [attr.aria-label]="t('christianityOpponentHand')">
|
|
68305
|
+
<div class="christianity-player-badge christianity-player-badge--opponent">
|
|
68306
|
+
<span class="christianity-avatar" [style.background]="opponent().avatarColor">{{ opponent().avatar }}</span>
|
|
68307
|
+
<strong>{{ opponent().displayName }}</strong>
|
|
68308
|
+
</div>
|
|
68309
|
+
<div class="christianity-hand-fan christianity-hand-fan--opponent">
|
|
68310
|
+
@for (_ of hiddenHandCards(opponentHandCount()); track $index) {
|
|
68311
|
+
<button
|
|
68312
|
+
type="button"
|
|
68313
|
+
class="christianity-card-preview-card christianity-card-preview-card--back"
|
|
68314
|
+
[style.transform]="fanTransform($index, opponentHandCount(), true)"
|
|
68315
|
+
[attr.aria-label]="t('christianityHiddenCard')"
|
|
68316
|
+
></button>
|
|
68317
|
+
}
|
|
68318
|
+
</div>
|
|
68319
|
+
</section>
|
|
68320
|
+
|
|
68150
68321
|
<section class="christianity-table" [attr.aria-label]="t('christianityTable')">
|
|
68151
|
-
<section class="christianity-player christianity-player--opponent">
|
|
68152
|
-
<div class="christianity-
|
|
68153
|
-
|
|
68154
|
-
<
|
|
68155
|
-
|
|
68156
|
-
|
|
68157
|
-
|
|
68158
|
-
|
|
68159
|
-
|
|
68160
|
-
|
|
68161
|
-
|
|
68162
|
-
|
|
68163
|
-
}
|
|
68164
|
-
</div>
|
|
68165
|
-
</div>
|
|
68166
|
-
<div class="christianity-hidden-hand">
|
|
68167
|
-
<span>{{ t('christianityHand') }}</span>
|
|
68168
|
-
<strong>{{ opponentHandCount() }}</strong>
|
|
68169
|
-
</div>
|
|
68170
|
-
</div>
|
|
68171
|
-
<div class="christianity-battle-zone" [attr.aria-label]="t('christianityOpponentBattle')">
|
|
68172
|
-
@for (slot of battleSlots('P2'); track slot.trackId) {
|
|
68173
|
-
@if (slot.card) {
|
|
68174
|
-
<button
|
|
68175
|
-
type="button"
|
|
68176
|
-
class="christianity-card christianity-card--battle"
|
|
68177
|
-
[class.is-target]="selectedAttacker()"
|
|
68178
|
-
(click)="attackCharacter(slot.card)"
|
|
68179
|
-
>
|
|
68180
|
-
<span>{{ slot.card.name }}</span>
|
|
68181
|
-
<strong>{{ slot.card.attack }} / {{ slot.card.currentHp }}</strong>
|
|
68182
|
-
</button>
|
|
68183
|
-
} @else {
|
|
68184
|
-
<span class="christianity-slot"></span>
|
|
68185
|
-
}
|
|
68322
|
+
<section class="christianity-player-rack christianity-player-rack--opponent">
|
|
68323
|
+
<div class="christianity-offerings-zone">
|
|
68324
|
+
@for (offering of opponent().offerings; track offering.instanceId) {
|
|
68325
|
+
<button
|
|
68326
|
+
type="button"
|
|
68327
|
+
class="christianity-card-mini christianity-card-mini--offering"
|
|
68328
|
+
[class.is-exhausted]="!offering.ready"
|
|
68329
|
+
(click)="inspectOffering(offering)"
|
|
68330
|
+
>
|
|
68331
|
+
<span>{{ t('christianityOfferingCard') }}</span>
|
|
68332
|
+
<strong>+{{ offering.value }}</strong>
|
|
68333
|
+
</button>
|
|
68186
68334
|
}
|
|
68187
68335
|
</div>
|
|
68336
|
+
<button type="button" class="christianity-leader-card" [class.is-target]="selectedAttacker() && !hasOpponentGuards()" (click)="handleOpponentLeader()">
|
|
68337
|
+
<span>{{ opponent().leaderName }}</span>
|
|
68338
|
+
<strong>{{ opponent().leaderHp }}/{{ opponent().leaderMaxHp }}</strong>
|
|
68339
|
+
</button>
|
|
68340
|
+
<div class="christianity-player-badge">
|
|
68341
|
+
<span class="christianity-avatar" [style.background]="opponent().avatarColor">{{ opponent().avatar }}</span>
|
|
68342
|
+
<strong>{{ opponent().displayName }}</strong>
|
|
68343
|
+
</div>
|
|
68344
|
+
</section>
|
|
68345
|
+
|
|
68346
|
+
<section class="christianity-battle-zone christianity-battle-zone--opponent" [attr.aria-label]="t('christianityOpponentBattle')">
|
|
68347
|
+
@for (slot of battleSlots('P2'); track slot.trackId) {
|
|
68348
|
+
@if (slot.card) {
|
|
68349
|
+
<button
|
|
68350
|
+
type="button"
|
|
68351
|
+
class="christianity-card-preview-card christianity-card-preview-card--battle"
|
|
68352
|
+
[class.is-target]="selectedAttacker()"
|
|
68353
|
+
(click)="handleOpponentCharacter(slot.card)"
|
|
68354
|
+
>
|
|
68355
|
+
<span>{{ slot.card.name }}</span>
|
|
68356
|
+
<strong>{{ slot.card.attack }} / {{ slot.card.currentHp }}</strong>
|
|
68357
|
+
</button>
|
|
68358
|
+
} @else {
|
|
68359
|
+
<span class="christianity-slot"></span>
|
|
68360
|
+
}
|
|
68361
|
+
}
|
|
68188
68362
|
</section>
|
|
68189
68363
|
|
|
68190
68364
|
<section class="christianity-shared-zone" [attr.aria-label]="t('christianitySharedZone')">
|
|
68191
|
-
<button type="button" class="christianity-pile" (click)="showHistory.set(
|
|
68365
|
+
<button type="button" class="christianity-zone-pile christianity-zone-pile--history" (click)="showHistory.set(true)">
|
|
68366
|
+
<i aria-hidden="true"></i>
|
|
68367
|
+
<i aria-hidden="true"></i>
|
|
68368
|
+
<i aria-hidden="true"></i>
|
|
68192
68369
|
<span>{{ t('christianityHistory') }}</span>
|
|
68193
68370
|
<strong>{{ game().historyZone.length }}</strong>
|
|
68194
68371
|
</button>
|
|
68195
|
-
<
|
|
68372
|
+
<button type="button" class="christianity-zone-pile christianity-zone-pile--deck" aria-live="polite" (click)="inspectDeck()">
|
|
68373
|
+
<i aria-hidden="true"></i>
|
|
68374
|
+
<i aria-hidden="true"></i>
|
|
68375
|
+
<i aria-hidden="true"></i>
|
|
68196
68376
|
<span>{{ t('christianityDeck') }}</span>
|
|
68197
|
-
<strong>{{ game().
|
|
68198
|
-
</
|
|
68199
|
-
<div class="christianity-
|
|
68377
|
+
<strong>{{ game().sharedDeck.length }}</strong>
|
|
68378
|
+
</button>
|
|
68379
|
+
<div class="christianity-zone-card">
|
|
68200
68380
|
<span>{{ t('christianityPlace') }}</span>
|
|
68201
68381
|
<strong>{{ t('christianityEmpty') }}</strong>
|
|
68202
68382
|
</div>
|
|
68203
68383
|
</section>
|
|
68204
68384
|
|
|
68205
|
-
<section class="christianity-
|
|
68206
|
-
|
|
68207
|
-
@
|
|
68208
|
-
|
|
68209
|
-
|
|
68210
|
-
|
|
68211
|
-
|
|
68212
|
-
|
|
68213
|
-
|
|
68214
|
-
|
|
68215
|
-
>
|
|
68216
|
-
|
|
68217
|
-
|
|
68218
|
-
|
|
68219
|
-
|
|
68220
|
-
|
|
68221
|
-
|
|
68385
|
+
<section class="christianity-battle-zone" [attr.aria-label]="t('christianityYourBattle')">
|
|
68386
|
+
@for (slot of battleSlots('P1'); track slot.trackId) {
|
|
68387
|
+
@if (slot.card) {
|
|
68388
|
+
<button
|
|
68389
|
+
type="button"
|
|
68390
|
+
class="christianity-card-preview-card christianity-card-preview-card--battle"
|
|
68391
|
+
[class.is-selected]="selectedAttacker()?.instanceId === slot.card.instanceId"
|
|
68392
|
+
[class.is-exhausted]="!slot.card.canAttack"
|
|
68393
|
+
(click)="selectAttacker(slot.card)"
|
|
68394
|
+
>
|
|
68395
|
+
<span>{{ slot.card.name }}</span>
|
|
68396
|
+
<strong>{{ slot.card.attack }} / {{ slot.card.currentHp }}</strong>
|
|
68397
|
+
</button>
|
|
68398
|
+
} @else {
|
|
68399
|
+
<span class="christianity-slot"></span>
|
|
68400
|
+
}
|
|
68401
|
+
}
|
|
68402
|
+
</section>
|
|
68403
|
+
|
|
68404
|
+
<section class="christianity-player-rack">
|
|
68405
|
+
<div class="christianity-offerings-zone">
|
|
68406
|
+
@for (offering of player().offerings; track offering.instanceId) {
|
|
68407
|
+
<button
|
|
68408
|
+
type="button"
|
|
68409
|
+
class="christianity-card-mini christianity-card-mini--offering"
|
|
68410
|
+
[class.is-exhausted]="!offering.ready"
|
|
68411
|
+
(click)="inspectOffering(offering)"
|
|
68412
|
+
>
|
|
68413
|
+
<span>{{ t('christianityOfferingCard') }}</span>
|
|
68414
|
+
<strong>+{{ offering.value }}</strong>
|
|
68415
|
+
</button>
|
|
68222
68416
|
}
|
|
68223
68417
|
</div>
|
|
68224
|
-
<
|
|
68225
|
-
<
|
|
68226
|
-
|
|
68227
|
-
|
|
68228
|
-
|
|
68229
|
-
|
|
68230
|
-
|
|
68231
|
-
|
|
68232
|
-
</div>
|
|
68418
|
+
<button type="button" class="christianity-leader-card" (click)="inspectLeader('P1')">
|
|
68419
|
+
<span>{{ player().leaderName }}</span>
|
|
68420
|
+
<strong>{{ player().leaderHp }}/{{ player().leaderMaxHp }}</strong>
|
|
68421
|
+
</button>
|
|
68422
|
+
<div class="christianity-player-command">
|
|
68423
|
+
<div class="christianity-player-badge">
|
|
68424
|
+
<span class="christianity-avatar" [style.background]="player().avatarColor">{{ player().avatar }}</span>
|
|
68425
|
+
<strong>{{ player().displayName }}</strong>
|
|
68233
68426
|
</div>
|
|
68234
|
-
<button type="button" class="christianity-leader christianity-leader--target" (click)="attackLeader()">
|
|
68235
|
-
<span>{{ player().leaderName }}</span>
|
|
68236
|
-
<strong>{{ player().leaderHp }}/{{ player().leaderMaxHp }}</strong>
|
|
68237
|
-
</button>
|
|
68238
68427
|
<button type="button" class="christianity-end-turn" (click)="endTurn()">
|
|
68239
68428
|
{{ t('christianityEndTurn') }}
|
|
68240
68429
|
</button>
|
|
@@ -68242,14 +68431,15 @@ class ChristianityGameComponent {
|
|
|
68242
68431
|
</section>
|
|
68243
68432
|
</section>
|
|
68244
68433
|
|
|
68245
|
-
<section class="christianity-hand" [attr.aria-label]="t('christianityYourHand')">
|
|
68434
|
+
<section class="christianity-hand-fan" [attr.aria-label]="t('christianityYourHand')">
|
|
68246
68435
|
@for (cardId of player().hand ?? []; track cardId + $index) {
|
|
68247
68436
|
@let card = cardDefinition(cardId);
|
|
68248
68437
|
<button
|
|
68249
68438
|
type="button"
|
|
68250
|
-
class="christianity-card christianity-card--hand"
|
|
68439
|
+
class="christianity-card-preview-card christianity-card-preview-card--hand"
|
|
68251
68440
|
[class.is-selected]="selectedHandCard() === cardId"
|
|
68252
68441
|
[class.is-disabled]="!canPlay(card)"
|
|
68442
|
+
[style.transform]="fanTransform($index, player().hand?.length ?? 0, false)"
|
|
68253
68443
|
(click)="selectHandCard(cardId)"
|
|
68254
68444
|
>
|
|
68255
68445
|
<small>
|
|
@@ -68271,6 +68461,16 @@ class ChristianityGameComponent {
|
|
|
68271
68461
|
}
|
|
68272
68462
|
</section>
|
|
68273
68463
|
|
|
68464
|
+
@if (selectedPreview()) {
|
|
68465
|
+
<button type="button" class="christianity-preview-backdrop" [attr.aria-label]="t('christianityClosePreview')" (click)="closePreview()"></button>
|
|
68466
|
+
<aside class="christianity-floating-card" aria-live="polite">
|
|
68467
|
+
<small>{{ selectedPreview()?.eyebrow }}</small>
|
|
68468
|
+
<strong>{{ selectedPreview()?.title }}</strong>
|
|
68469
|
+
<span>{{ selectedPreview()?.meta }}</span>
|
|
68470
|
+
<p>{{ selectedPreview()?.body }}</p>
|
|
68471
|
+
</aside>
|
|
68472
|
+
}
|
|
68473
|
+
|
|
68274
68474
|
<section class="christianity-actions" aria-live="polite">
|
|
68275
68475
|
<p>{{ statusText() }}</p>
|
|
68276
68476
|
<div>
|
|
@@ -68284,17 +68484,36 @@ class ChristianityGameComponent {
|
|
|
68284
68484
|
</section>
|
|
68285
68485
|
|
|
68286
68486
|
@if (showHistory()) {
|
|
68287
|
-
<
|
|
68288
|
-
|
|
68487
|
+
<button type="button" class="christianity-history-backdrop" [attr.aria-label]="t('christianityCloseHistory')" (click)="showHistory.set(false)"></button>
|
|
68488
|
+
<section class="christianity-history-drawer">
|
|
68489
|
+
<header>
|
|
68490
|
+
<h2>{{ t('christianityHistory') }}</h2>
|
|
68491
|
+
<span>{{ game().historyZone.length }}</span>
|
|
68492
|
+
</header>
|
|
68289
68493
|
@if (game().historyZone.length) {
|
|
68290
|
-
<
|
|
68494
|
+
<div class="christianity-history-grid">
|
|
68495
|
+
@for (cardId of game().historyZone; track cardId + $index) {
|
|
68496
|
+
@let card = cardDefinition(cardId);
|
|
68497
|
+
<button type="button" class="christianity-card-preview-card" (click)="inspectHistoryCard(cardId)">
|
|
68498
|
+
<small>{{ card.type === 'offering' ? t('christianityOfferingCard') : t('christianityCharacterCard') }}</small>
|
|
68499
|
+
<span>{{ card.name }}</span>
|
|
68500
|
+
<strong>
|
|
68501
|
+
@if (card.type === 'offering') {
|
|
68502
|
+
+{{ card.life }}
|
|
68503
|
+
} @else {
|
|
68504
|
+
{{ card.attack }} / {{ card.life }}
|
|
68505
|
+
}
|
|
68506
|
+
</strong>
|
|
68507
|
+
</button>
|
|
68508
|
+
}
|
|
68509
|
+
</div>
|
|
68291
68510
|
} @else {
|
|
68292
68511
|
<p>{{ t('christianityHistoryEmpty') }}</p>
|
|
68293
68512
|
}
|
|
68294
68513
|
</section>
|
|
68295
68514
|
}
|
|
68296
68515
|
</main>
|
|
68297
|
-
`, isInline: true, styles: [":host{display:block;color:var(--val-text-color, #1f2933)}.christianity-shell{display:grid;gap:.875rem;padding:.75rem .25rem;border:1px solid rgba(36,48,68,.12);border-radius:.75rem;background:#f6f8fb}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-header h1,.christianity-header p,.christianity-history h2,.christianity-actions p{margin:0}.christianity-header h1{font-size:1.35rem;line-height:1.1}.christianity-header p,.christianity-turn span,.christianity-offerings span,.christianity-hidden-hand span,.christianity-deck span,.christianity-place span,.christianity-pile span,.christianity-leader span{color:#1f2933a3;font-size:.75rem}.christianity-turn,.christianity-leader,.christianity-offerings,.christianity-hidden-hand,.christianity-pile,.christianity-deck,.christianity-place{display:grid;gap:.15rem;min-width:5.25rem;padding:.55rem .65rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#fff}.christianity-turn.is-own-turn{border-color:#12806c59;background:#ecfdf5}.christianity-table{display:grid;gap:.75rem;padding:.55rem .35rem;border-radius:.75rem;background:#dceafb}.christianity-player{display:grid;gap:.65rem}.christianity-battle-zone{display:grid;grid-template-columns:repeat(5,minmax(4.2rem,1fr));gap:.5rem;min-height:7rem;padding:.55rem .4rem;border-radius:.75rem;background:#ffffffc2}.christianity-shared-zone{padding:.55rem .4rem;border-radius:.75rem;background:#ffffffe6}.christianity-card,.christianity-end-turn,.christianity-actions button,.christianity-pile,.christianity-leader--target{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card{display:grid;align-content:space-between;min-height:5.8rem;padding:.5rem;text-align:left;box-shadow:0 .5rem 1.25rem #24304414}.christianity-card span{font-weight:700}.christianity-card strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-card.is-selected{border-color:#2563eb;box-shadow:0 0 0 .2rem #2563eb29}.christianity-card.is-disabled,.christianity-card.is-exhausted{opacity:.55}.christianity-card.is-target{border-color:#dc2626}.christianity-offering-cards{display:grid;grid-auto-flow:column;grid-auto-columns:.7rem;gap:.16rem;align-items:end;min-height:1.05rem}.christianity-offering-cards i{display:block;width:.65rem;height:.95rem;border:1px solid rgba(16,42,67,.22);border-radius:.18rem;background:#f8fafc}.christianity-offering-cards i.is-used{background:#cbd5e1;transform:rotate(90deg);transform-origin:center}.christianity-slot{min-height:5.8rem;border:1px dashed rgba(36,48,68,.22);border-radius:.5rem;background:#ffffff73}.christianity-hand{display:grid;grid-auto-columns:minmax(6rem,8rem);grid-auto-flow:column;gap:.55rem;overflow-x:auto;padding-bottom:.25rem}.christianity-actions{align-items:flex-start;padding:.75rem;border-radius:.75rem;background:#fff}.christianity-actions div{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.christianity-actions button,.christianity-end-turn{min-height:2.4rem;padding:0 .75rem;font-weight:700}.christianity-actions button:not(:disabled),.christianity-end-turn{background:#102a43;color:#fff}.christianity-history{padding:.75rem;border-radius:.75rem;background:#fff}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible{outline:.1875rem solid rgba(37,99,235,.24);outline-offset:.125rem}@media (max-width: 720px){.christianity-shell{padding:.55rem 0;border-right:0;border-left:0;border-radius:0}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{align-items:stretch;flex-direction:column}.christianity-battle-zone{grid-template-columns:repeat(
|
|
68516
|
+
`, isInline: true, styles: [":host{display:block;color:var(--val-text-color, #1f2933)}.christianity-shell{display:grid;gap:.875rem;padding:.75rem .25rem;border:1px solid rgba(36,48,68,.12);border-radius:.75rem;background:#f6f8fb}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-header h1,.christianity-header p,.christianity-history h2,.christianity-actions p{margin:0}.christianity-header h1{font-size:1.35rem;line-height:1.1}.christianity-header p,.christianity-turn span,.christianity-offerings span,.christianity-hidden-hand span,.christianity-deck span,.christianity-place span,.christianity-pile span,.christianity-leader span{color:#1f2933a3;font-size:.75rem}.christianity-turn,.christianity-leader,.christianity-offerings,.christianity-hidden-hand,.christianity-pile,.christianity-deck,.christianity-place{display:grid;gap:.15rem;min-width:5.25rem;padding:.55rem .65rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#fff}.christianity-turn.is-own-turn{border-color:#12806c59;background:#ecfdf5}.christianity-table{display:grid;gap:.75rem;padding:.55rem .35rem;border-radius:.75rem;background:#dceafb}.christianity-player{display:grid;gap:.65rem}.christianity-battle-zone{display:grid;grid-template-columns:repeat(5,minmax(4.2rem,1fr));gap:.5rem;min-height:7rem;padding:.55rem .4rem;border-radius:.75rem;background:#ffffffc2}.christianity-shared-zone{padding:.55rem .4rem;border-radius:.75rem;background:#ffffffe6}.christianity-card,.christianity-end-turn,.christianity-actions button,.christianity-pile,.christianity-leader--target{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card{display:grid;align-content:space-between;min-height:5.8rem;padding:.5rem;text-align:left;box-shadow:0 .5rem 1.25rem #24304414}.christianity-card span{font-weight:700}.christianity-card strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-card.is-selected{border-color:#2563eb;box-shadow:0 0 0 .2rem #2563eb29}.christianity-card.is-disabled,.christianity-card.is-exhausted{opacity:.55}.christianity-card.is-target{border-color:#dc2626}.christianity-offering-cards{display:grid;grid-auto-flow:column;grid-auto-columns:.7rem;gap:.16rem;align-items:end;min-height:1.05rem}.christianity-offering-cards i{display:block;width:.65rem;height:.95rem;border:1px solid rgba(16,42,67,.22);border-radius:.18rem;background:#f8fafc}.christianity-offering-cards i.is-used{background:#cbd5e1;transform:rotate(90deg);transform-origin:center}.christianity-slot{min-height:5.8rem;border:1px dashed rgba(36,48,68,.22);border-radius:.5rem;background:#ffffff73}.christianity-hand{display:grid;grid-auto-columns:minmax(6rem,8rem);grid-auto-flow:column;gap:.55rem;overflow-x:auto;padding-bottom:.25rem}.christianity-actions{align-items:flex-start;padding:.75rem;border-radius:.75rem;background:#fff}.christianity-actions div{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.christianity-actions button,.christianity-end-turn{min-height:2.4rem;padding:0 .75rem;font-weight:700}.christianity-actions button:not(:disabled),.christianity-end-turn{background:#102a43;color:#fff}.christianity-history{padding:.75rem;border-radius:.75rem;background:#fff}.christianity-hand-fan{position:relative;display:flex;justify-content:center;min-height:7.4rem;padding:0 .25rem;isolation:isolate}.christianity-hand-fan--opponent{min-height:5.2rem}.christianity-opponent-hand-area{display:grid;gap:.25rem;min-height:6.7rem;align-items:start;padding-bottom:.35rem}.christianity-card-preview-card,.christianity-card-mini,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile,.christianity-end-turn{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card-preview-card{display:grid;align-content:space-between;width:clamp(4.9rem,17vw,7.1rem);min-height:clamp(6.6rem,22vw,8.8rem);margin-inline:-.42rem;padding:.48rem;text-align:left;transform-origin:50% 115%;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;box-shadow:0 .5rem 1.25rem #2430441a}.christianity-card-preview-card--hand:hover,.christianity-card-preview-card--hand.is-selected{z-index:3;border-color:#2563eb;box-shadow:0 1rem 2rem #2563eb2e}.christianity-card-preview-card--back{min-height:4.8rem;background:linear-gradient(135deg,#102a431f,#102a4305),repeating-linear-gradient(45deg,#e2e8f0 0 .35rem,#f8fafc .35rem .7rem)}.christianity-card-preview-card--battle{width:100%;min-height:5.7rem;margin-inline:0}.christianity-card-preview-card span,.christianity-card-mini span,.christianity-leader-card span,.christianity-zone-card span,.christianity-zone-pile span{font-weight:700}.christianity-card-preview-card strong,.christianity-card-mini strong,.christianity-leader-card strong,.christianity-zone-card strong,.christianity-zone-pile strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-player-rack{display:grid;grid-template-columns:minmax(4.2rem,1fr) minmax(5rem,6.5rem) minmax(4.2rem,1fr);gap:.55rem;align-items:end;justify-items:center}.christianity-player-rack--opponent{align-items:start}.christianity-player-badge,.christianity-player-command{display:grid;gap:.35rem;justify-items:center;min-width:0}.christianity-player-badge{align-content:start;color:#1f2933c2;font-size:.74rem}.christianity-player-badge--opponent{justify-self:center;grid-auto-flow:column;align-items:center;justify-content:center}.christianity-player-badge strong{max-width:6.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.christianity-avatar{display:grid;place-items:center;width:1.85rem;height:1.85rem;border-radius:999px;color:#fff;font-size:.76rem;font-weight:800;box-shadow:0 .35rem .9rem #102a4329}.christianity-offerings-zone{display:flex;flex-wrap:wrap;gap:.25rem;justify-content:flex-end;width:100%}.christianity-card-mini,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile{display:grid;align-content:space-between;min-height:4.9rem;padding:.48rem;text-align:left}.christianity-card-mini{width:3.5rem}.christianity-leader-card{width:min(100%,6.5rem);min-height:5.8rem}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(4rem,1fr))}.christianity-shared-zone{display:grid;grid-template-columns:repeat(3,minmax(4.3rem,1fr));align-items:stretch}.christianity-zone-pile{position:relative;isolation:isolate;overflow:hidden;min-height:5.6rem;box-shadow:inset 0 0 0 999px #ffffff1f}.christianity-zone-pile i{position:absolute;inset:.62rem .72rem auto auto;z-index:-1;width:2.7rem;height:3.7rem;border:1px solid rgba(16,42,67,.18);border-radius:.35rem;background:#f8fafc;box-shadow:0 .35rem .85rem #102a431c;transform:rotate(4deg)}.christianity-zone-pile i:nth-child(2){transform:translate(-.28rem,.12rem) rotate(-3deg)}.christianity-zone-pile i:nth-child(3){background:linear-gradient(135deg,#102a4329,#102a4308),repeating-linear-gradient(45deg,#dbeafe 0 .33rem,#fff .33rem .66rem);transform:translate(-.54rem,.24rem) rotate(2deg)}.christianity-floating-card{position:fixed;top:50%;left:50%;z-index:21;display:grid;gap:.45rem;width:min(20rem,calc(100vw - 2rem));min-height:min(27rem,calc(100vh - 5rem));padding:1rem;border:1px solid rgba(36,48,68,.18);border-radius:.75rem;background:linear-gradient(180deg,#fffffff5,#f8fafcf5),radial-gradient(circle at 20% 0%,rgba(37,99,235,.12),transparent 45%);box-shadow:0 2.4rem 5rem #102a4357,inset 0 0 0 .35rem #ffffff8c;transform:translate(-50%,-50%) perspective(48rem) rotateX(5deg) rotateY(-5deg)}.christianity-preview-backdrop,.christianity-history-backdrop{position:fixed;inset:0;z-index:20;border:0;border-radius:0;background:#0f172a75}.christianity-floating-card small,.christianity-floating-card span{color:#1f2933a3}.christianity-floating-card strong{font-size:clamp(1.35rem,8vw,2rem);line-height:1.05}.christianity-floating-card p{margin:0;align-self:end;font-size:.95rem;line-height:1.35}.christianity-history-backdrop{z-index:22}.christianity-history-drawer{position:fixed;right:max(.5rem,env(safe-area-inset-right));bottom:max(.5rem,env(safe-area-inset-bottom));left:max(.5rem,env(safe-area-inset-left));z-index:23;display:grid;gap:.75rem;max-height:min(27rem,calc(100vh - 4rem));padding:.8rem;border:1px solid rgba(36,48,68,.16);border-radius:.75rem;background:#fffffffa;box-shadow:0 1.5rem 4rem #102a4347}.christianity-history-drawer header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-history-drawer h2,.christianity-history-drawer p{margin:0}.christianity-history-drawer header span{display:grid;place-items:center;min-width:1.85rem;height:1.85rem;border-radius:999px;background:#edf2f7;font-weight:800}.christianity-history-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.4rem,1fr));gap:.55rem;overflow-y:auto;padding:.1rem .1rem .25rem}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible{outline:.1875rem solid rgba(37,99,235,.24);outline-offset:.125rem}@media (max-width: 720px){.christianity-shell{padding:.55rem 0;border-right:0;border-left:0;border-radius:0}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{align-items:stretch;flex-direction:column}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(3.35rem,1fr));overflow-x:auto}.christianity-hand-fan{min-height:6.8rem;overflow-x:clip}.christianity-player-rack{grid-template-columns:minmax(3.6rem,1fr) minmax(4.8rem,5.6rem) minmax(3.6rem,1fr)}.christianity-shared-zone{grid-template-columns:repeat(3,minmax(3.7rem,1fr))}.christianity-card-preview-card{width:clamp(4.2rem,20vw,5.7rem);min-height:clamp(5.8rem,26vw,7.4rem)}.christianity-opponent-hand-area{min-height:6.2rem}}\n"] }); }
|
|
68298
68517
|
}
|
|
68299
68518
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChristianityGameComponent, decorators: [{
|
|
68300
68519
|
type: Component,
|
|
@@ -68311,94 +68530,129 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
68311
68530
|
</div>
|
|
68312
68531
|
</section>
|
|
68313
68532
|
|
|
68533
|
+
<section class="christianity-opponent-hand-area" [attr.aria-label]="t('christianityOpponentHand')">
|
|
68534
|
+
<div class="christianity-player-badge christianity-player-badge--opponent">
|
|
68535
|
+
<span class="christianity-avatar" [style.background]="opponent().avatarColor">{{ opponent().avatar }}</span>
|
|
68536
|
+
<strong>{{ opponent().displayName }}</strong>
|
|
68537
|
+
</div>
|
|
68538
|
+
<div class="christianity-hand-fan christianity-hand-fan--opponent">
|
|
68539
|
+
@for (_ of hiddenHandCards(opponentHandCount()); track $index) {
|
|
68540
|
+
<button
|
|
68541
|
+
type="button"
|
|
68542
|
+
class="christianity-card-preview-card christianity-card-preview-card--back"
|
|
68543
|
+
[style.transform]="fanTransform($index, opponentHandCount(), true)"
|
|
68544
|
+
[attr.aria-label]="t('christianityHiddenCard')"
|
|
68545
|
+
></button>
|
|
68546
|
+
}
|
|
68547
|
+
</div>
|
|
68548
|
+
</section>
|
|
68549
|
+
|
|
68314
68550
|
<section class="christianity-table" [attr.aria-label]="t('christianityTable')">
|
|
68315
|
-
<section class="christianity-player christianity-player--opponent">
|
|
68316
|
-
<div class="christianity-
|
|
68317
|
-
|
|
68318
|
-
<
|
|
68319
|
-
|
|
68320
|
-
|
|
68321
|
-
|
|
68322
|
-
|
|
68323
|
-
|
|
68324
|
-
|
|
68325
|
-
|
|
68326
|
-
|
|
68327
|
-
}
|
|
68328
|
-
</div>
|
|
68329
|
-
</div>
|
|
68330
|
-
<div class="christianity-hidden-hand">
|
|
68331
|
-
<span>{{ t('christianityHand') }}</span>
|
|
68332
|
-
<strong>{{ opponentHandCount() }}</strong>
|
|
68333
|
-
</div>
|
|
68334
|
-
</div>
|
|
68335
|
-
<div class="christianity-battle-zone" [attr.aria-label]="t('christianityOpponentBattle')">
|
|
68336
|
-
@for (slot of battleSlots('P2'); track slot.trackId) {
|
|
68337
|
-
@if (slot.card) {
|
|
68338
|
-
<button
|
|
68339
|
-
type="button"
|
|
68340
|
-
class="christianity-card christianity-card--battle"
|
|
68341
|
-
[class.is-target]="selectedAttacker()"
|
|
68342
|
-
(click)="attackCharacter(slot.card)"
|
|
68343
|
-
>
|
|
68344
|
-
<span>{{ slot.card.name }}</span>
|
|
68345
|
-
<strong>{{ slot.card.attack }} / {{ slot.card.currentHp }}</strong>
|
|
68346
|
-
</button>
|
|
68347
|
-
} @else {
|
|
68348
|
-
<span class="christianity-slot"></span>
|
|
68349
|
-
}
|
|
68551
|
+
<section class="christianity-player-rack christianity-player-rack--opponent">
|
|
68552
|
+
<div class="christianity-offerings-zone">
|
|
68553
|
+
@for (offering of opponent().offerings; track offering.instanceId) {
|
|
68554
|
+
<button
|
|
68555
|
+
type="button"
|
|
68556
|
+
class="christianity-card-mini christianity-card-mini--offering"
|
|
68557
|
+
[class.is-exhausted]="!offering.ready"
|
|
68558
|
+
(click)="inspectOffering(offering)"
|
|
68559
|
+
>
|
|
68560
|
+
<span>{{ t('christianityOfferingCard') }}</span>
|
|
68561
|
+
<strong>+{{ offering.value }}</strong>
|
|
68562
|
+
</button>
|
|
68350
68563
|
}
|
|
68351
68564
|
</div>
|
|
68565
|
+
<button type="button" class="christianity-leader-card" [class.is-target]="selectedAttacker() && !hasOpponentGuards()" (click)="handleOpponentLeader()">
|
|
68566
|
+
<span>{{ opponent().leaderName }}</span>
|
|
68567
|
+
<strong>{{ opponent().leaderHp }}/{{ opponent().leaderMaxHp }}</strong>
|
|
68568
|
+
</button>
|
|
68569
|
+
<div class="christianity-player-badge">
|
|
68570
|
+
<span class="christianity-avatar" [style.background]="opponent().avatarColor">{{ opponent().avatar }}</span>
|
|
68571
|
+
<strong>{{ opponent().displayName }}</strong>
|
|
68572
|
+
</div>
|
|
68573
|
+
</section>
|
|
68574
|
+
|
|
68575
|
+
<section class="christianity-battle-zone christianity-battle-zone--opponent" [attr.aria-label]="t('christianityOpponentBattle')">
|
|
68576
|
+
@for (slot of battleSlots('P2'); track slot.trackId) {
|
|
68577
|
+
@if (slot.card) {
|
|
68578
|
+
<button
|
|
68579
|
+
type="button"
|
|
68580
|
+
class="christianity-card-preview-card christianity-card-preview-card--battle"
|
|
68581
|
+
[class.is-target]="selectedAttacker()"
|
|
68582
|
+
(click)="handleOpponentCharacter(slot.card)"
|
|
68583
|
+
>
|
|
68584
|
+
<span>{{ slot.card.name }}</span>
|
|
68585
|
+
<strong>{{ slot.card.attack }} / {{ slot.card.currentHp }}</strong>
|
|
68586
|
+
</button>
|
|
68587
|
+
} @else {
|
|
68588
|
+
<span class="christianity-slot"></span>
|
|
68589
|
+
}
|
|
68590
|
+
}
|
|
68352
68591
|
</section>
|
|
68353
68592
|
|
|
68354
68593
|
<section class="christianity-shared-zone" [attr.aria-label]="t('christianitySharedZone')">
|
|
68355
|
-
<button type="button" class="christianity-pile" (click)="showHistory.set(
|
|
68594
|
+
<button type="button" class="christianity-zone-pile christianity-zone-pile--history" (click)="showHistory.set(true)">
|
|
68595
|
+
<i aria-hidden="true"></i>
|
|
68596
|
+
<i aria-hidden="true"></i>
|
|
68597
|
+
<i aria-hidden="true"></i>
|
|
68356
68598
|
<span>{{ t('christianityHistory') }}</span>
|
|
68357
68599
|
<strong>{{ game().historyZone.length }}</strong>
|
|
68358
68600
|
</button>
|
|
68359
|
-
<
|
|
68601
|
+
<button type="button" class="christianity-zone-pile christianity-zone-pile--deck" aria-live="polite" (click)="inspectDeck()">
|
|
68602
|
+
<i aria-hidden="true"></i>
|
|
68603
|
+
<i aria-hidden="true"></i>
|
|
68604
|
+
<i aria-hidden="true"></i>
|
|
68360
68605
|
<span>{{ t('christianityDeck') }}</span>
|
|
68361
|
-
<strong>{{ game().
|
|
68362
|
-
</
|
|
68363
|
-
<div class="christianity-
|
|
68606
|
+
<strong>{{ game().sharedDeck.length }}</strong>
|
|
68607
|
+
</button>
|
|
68608
|
+
<div class="christianity-zone-card">
|
|
68364
68609
|
<span>{{ t('christianityPlace') }}</span>
|
|
68365
68610
|
<strong>{{ t('christianityEmpty') }}</strong>
|
|
68366
68611
|
</div>
|
|
68367
68612
|
</section>
|
|
68368
68613
|
|
|
68369
|
-
<section class="christianity-
|
|
68370
|
-
|
|
68371
|
-
@
|
|
68372
|
-
|
|
68373
|
-
|
|
68374
|
-
|
|
68375
|
-
|
|
68376
|
-
|
|
68377
|
-
|
|
68378
|
-
|
|
68379
|
-
>
|
|
68380
|
-
|
|
68381
|
-
|
|
68382
|
-
|
|
68383
|
-
|
|
68384
|
-
|
|
68385
|
-
|
|
68614
|
+
<section class="christianity-battle-zone" [attr.aria-label]="t('christianityYourBattle')">
|
|
68615
|
+
@for (slot of battleSlots('P1'); track slot.trackId) {
|
|
68616
|
+
@if (slot.card) {
|
|
68617
|
+
<button
|
|
68618
|
+
type="button"
|
|
68619
|
+
class="christianity-card-preview-card christianity-card-preview-card--battle"
|
|
68620
|
+
[class.is-selected]="selectedAttacker()?.instanceId === slot.card.instanceId"
|
|
68621
|
+
[class.is-exhausted]="!slot.card.canAttack"
|
|
68622
|
+
(click)="selectAttacker(slot.card)"
|
|
68623
|
+
>
|
|
68624
|
+
<span>{{ slot.card.name }}</span>
|
|
68625
|
+
<strong>{{ slot.card.attack }} / {{ slot.card.currentHp }}</strong>
|
|
68626
|
+
</button>
|
|
68627
|
+
} @else {
|
|
68628
|
+
<span class="christianity-slot"></span>
|
|
68629
|
+
}
|
|
68630
|
+
}
|
|
68631
|
+
</section>
|
|
68632
|
+
|
|
68633
|
+
<section class="christianity-player-rack">
|
|
68634
|
+
<div class="christianity-offerings-zone">
|
|
68635
|
+
@for (offering of player().offerings; track offering.instanceId) {
|
|
68636
|
+
<button
|
|
68637
|
+
type="button"
|
|
68638
|
+
class="christianity-card-mini christianity-card-mini--offering"
|
|
68639
|
+
[class.is-exhausted]="!offering.ready"
|
|
68640
|
+
(click)="inspectOffering(offering)"
|
|
68641
|
+
>
|
|
68642
|
+
<span>{{ t('christianityOfferingCard') }}</span>
|
|
68643
|
+
<strong>+{{ offering.value }}</strong>
|
|
68644
|
+
</button>
|
|
68386
68645
|
}
|
|
68387
68646
|
</div>
|
|
68388
|
-
<
|
|
68389
|
-
<
|
|
68390
|
-
|
|
68391
|
-
|
|
68392
|
-
|
|
68393
|
-
|
|
68394
|
-
|
|
68395
|
-
|
|
68396
|
-
</div>
|
|
68647
|
+
<button type="button" class="christianity-leader-card" (click)="inspectLeader('P1')">
|
|
68648
|
+
<span>{{ player().leaderName }}</span>
|
|
68649
|
+
<strong>{{ player().leaderHp }}/{{ player().leaderMaxHp }}</strong>
|
|
68650
|
+
</button>
|
|
68651
|
+
<div class="christianity-player-command">
|
|
68652
|
+
<div class="christianity-player-badge">
|
|
68653
|
+
<span class="christianity-avatar" [style.background]="player().avatarColor">{{ player().avatar }}</span>
|
|
68654
|
+
<strong>{{ player().displayName }}</strong>
|
|
68397
68655
|
</div>
|
|
68398
|
-
<button type="button" class="christianity-leader christianity-leader--target" (click)="attackLeader()">
|
|
68399
|
-
<span>{{ player().leaderName }}</span>
|
|
68400
|
-
<strong>{{ player().leaderHp }}/{{ player().leaderMaxHp }}</strong>
|
|
68401
|
-
</button>
|
|
68402
68656
|
<button type="button" class="christianity-end-turn" (click)="endTurn()">
|
|
68403
68657
|
{{ t('christianityEndTurn') }}
|
|
68404
68658
|
</button>
|
|
@@ -68406,14 +68660,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
68406
68660
|
</section>
|
|
68407
68661
|
</section>
|
|
68408
68662
|
|
|
68409
|
-
<section class="christianity-hand" [attr.aria-label]="t('christianityYourHand')">
|
|
68663
|
+
<section class="christianity-hand-fan" [attr.aria-label]="t('christianityYourHand')">
|
|
68410
68664
|
@for (cardId of player().hand ?? []; track cardId + $index) {
|
|
68411
68665
|
@let card = cardDefinition(cardId);
|
|
68412
68666
|
<button
|
|
68413
68667
|
type="button"
|
|
68414
|
-
class="christianity-card christianity-card--hand"
|
|
68668
|
+
class="christianity-card-preview-card christianity-card-preview-card--hand"
|
|
68415
68669
|
[class.is-selected]="selectedHandCard() === cardId"
|
|
68416
68670
|
[class.is-disabled]="!canPlay(card)"
|
|
68671
|
+
[style.transform]="fanTransform($index, player().hand?.length ?? 0, false)"
|
|
68417
68672
|
(click)="selectHandCard(cardId)"
|
|
68418
68673
|
>
|
|
68419
68674
|
<small>
|
|
@@ -68435,6 +68690,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
68435
68690
|
}
|
|
68436
68691
|
</section>
|
|
68437
68692
|
|
|
68693
|
+
@if (selectedPreview()) {
|
|
68694
|
+
<button type="button" class="christianity-preview-backdrop" [attr.aria-label]="t('christianityClosePreview')" (click)="closePreview()"></button>
|
|
68695
|
+
<aside class="christianity-floating-card" aria-live="polite">
|
|
68696
|
+
<small>{{ selectedPreview()?.eyebrow }}</small>
|
|
68697
|
+
<strong>{{ selectedPreview()?.title }}</strong>
|
|
68698
|
+
<span>{{ selectedPreview()?.meta }}</span>
|
|
68699
|
+
<p>{{ selectedPreview()?.body }}</p>
|
|
68700
|
+
</aside>
|
|
68701
|
+
}
|
|
68702
|
+
|
|
68438
68703
|
<section class="christianity-actions" aria-live="polite">
|
|
68439
68704
|
<p>{{ statusText() }}</p>
|
|
68440
68705
|
<div>
|
|
@@ -68448,17 +68713,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
68448
68713
|
</section>
|
|
68449
68714
|
|
|
68450
68715
|
@if (showHistory()) {
|
|
68451
|
-
<
|
|
68452
|
-
|
|
68716
|
+
<button type="button" class="christianity-history-backdrop" [attr.aria-label]="t('christianityCloseHistory')" (click)="showHistory.set(false)"></button>
|
|
68717
|
+
<section class="christianity-history-drawer">
|
|
68718
|
+
<header>
|
|
68719
|
+
<h2>{{ t('christianityHistory') }}</h2>
|
|
68720
|
+
<span>{{ game().historyZone.length }}</span>
|
|
68721
|
+
</header>
|
|
68453
68722
|
@if (game().historyZone.length) {
|
|
68454
|
-
<
|
|
68723
|
+
<div class="christianity-history-grid">
|
|
68724
|
+
@for (cardId of game().historyZone; track cardId + $index) {
|
|
68725
|
+
@let card = cardDefinition(cardId);
|
|
68726
|
+
<button type="button" class="christianity-card-preview-card" (click)="inspectHistoryCard(cardId)">
|
|
68727
|
+
<small>{{ card.type === 'offering' ? t('christianityOfferingCard') : t('christianityCharacterCard') }}</small>
|
|
68728
|
+
<span>{{ card.name }}</span>
|
|
68729
|
+
<strong>
|
|
68730
|
+
@if (card.type === 'offering') {
|
|
68731
|
+
+{{ card.life }}
|
|
68732
|
+
} @else {
|
|
68733
|
+
{{ card.attack }} / {{ card.life }}
|
|
68734
|
+
}
|
|
68735
|
+
</strong>
|
|
68736
|
+
</button>
|
|
68737
|
+
}
|
|
68738
|
+
</div>
|
|
68455
68739
|
} @else {
|
|
68456
68740
|
<p>{{ t('christianityHistoryEmpty') }}</p>
|
|
68457
68741
|
}
|
|
68458
68742
|
</section>
|
|
68459
68743
|
}
|
|
68460
68744
|
</main>
|
|
68461
|
-
`, styles: [":host{display:block;color:var(--val-text-color, #1f2933)}.christianity-shell{display:grid;gap:.875rem;padding:.75rem .25rem;border:1px solid rgba(36,48,68,.12);border-radius:.75rem;background:#f6f8fb}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-header h1,.christianity-header p,.christianity-history h2,.christianity-actions p{margin:0}.christianity-header h1{font-size:1.35rem;line-height:1.1}.christianity-header p,.christianity-turn span,.christianity-offerings span,.christianity-hidden-hand span,.christianity-deck span,.christianity-place span,.christianity-pile span,.christianity-leader span{color:#1f2933a3;font-size:.75rem}.christianity-turn,.christianity-leader,.christianity-offerings,.christianity-hidden-hand,.christianity-pile,.christianity-deck,.christianity-place{display:grid;gap:.15rem;min-width:5.25rem;padding:.55rem .65rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#fff}.christianity-turn.is-own-turn{border-color:#12806c59;background:#ecfdf5}.christianity-table{display:grid;gap:.75rem;padding:.55rem .35rem;border-radius:.75rem;background:#dceafb}.christianity-player{display:grid;gap:.65rem}.christianity-battle-zone{display:grid;grid-template-columns:repeat(5,minmax(4.2rem,1fr));gap:.5rem;min-height:7rem;padding:.55rem .4rem;border-radius:.75rem;background:#ffffffc2}.christianity-shared-zone{padding:.55rem .4rem;border-radius:.75rem;background:#ffffffe6}.christianity-card,.christianity-end-turn,.christianity-actions button,.christianity-pile,.christianity-leader--target{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card{display:grid;align-content:space-between;min-height:5.8rem;padding:.5rem;text-align:left;box-shadow:0 .5rem 1.25rem #24304414}.christianity-card span{font-weight:700}.christianity-card strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-card.is-selected{border-color:#2563eb;box-shadow:0 0 0 .2rem #2563eb29}.christianity-card.is-disabled,.christianity-card.is-exhausted{opacity:.55}.christianity-card.is-target{border-color:#dc2626}.christianity-offering-cards{display:grid;grid-auto-flow:column;grid-auto-columns:.7rem;gap:.16rem;align-items:end;min-height:1.05rem}.christianity-offering-cards i{display:block;width:.65rem;height:.95rem;border:1px solid rgba(16,42,67,.22);border-radius:.18rem;background:#f8fafc}.christianity-offering-cards i.is-used{background:#cbd5e1;transform:rotate(90deg);transform-origin:center}.christianity-slot{min-height:5.8rem;border:1px dashed rgba(36,48,68,.22);border-radius:.5rem;background:#ffffff73}.christianity-hand{display:grid;grid-auto-columns:minmax(6rem,8rem);grid-auto-flow:column;gap:.55rem;overflow-x:auto;padding-bottom:.25rem}.christianity-actions{align-items:flex-start;padding:.75rem;border-radius:.75rem;background:#fff}.christianity-actions div{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.christianity-actions button,.christianity-end-turn{min-height:2.4rem;padding:0 .75rem;font-weight:700}.christianity-actions button:not(:disabled),.christianity-end-turn{background:#102a43;color:#fff}.christianity-history{padding:.75rem;border-radius:.75rem;background:#fff}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible{outline:.1875rem solid rgba(37,99,235,.24);outline-offset:.125rem}@media (max-width: 720px){.christianity-shell{padding:.55rem 0;border-right:0;border-left:0;border-radius:0}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{align-items:stretch;flex-direction:column}.christianity-battle-zone{grid-template-columns:repeat(
|
|
68745
|
+
`, styles: [":host{display:block;color:var(--val-text-color, #1f2933)}.christianity-shell{display:grid;gap:.875rem;padding:.75rem .25rem;border:1px solid rgba(36,48,68,.12);border-radius:.75rem;background:#f6f8fb}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-header h1,.christianity-header p,.christianity-history h2,.christianity-actions p{margin:0}.christianity-header h1{font-size:1.35rem;line-height:1.1}.christianity-header p,.christianity-turn span,.christianity-offerings span,.christianity-hidden-hand span,.christianity-deck span,.christianity-place span,.christianity-pile span,.christianity-leader span{color:#1f2933a3;font-size:.75rem}.christianity-turn,.christianity-leader,.christianity-offerings,.christianity-hidden-hand,.christianity-pile,.christianity-deck,.christianity-place{display:grid;gap:.15rem;min-width:5.25rem;padding:.55rem .65rem;border:1px solid rgba(36,48,68,.12);border-radius:.5rem;background:#fff}.christianity-turn.is-own-turn{border-color:#12806c59;background:#ecfdf5}.christianity-table{display:grid;gap:.75rem;padding:.55rem .35rem;border-radius:.75rem;background:#dceafb}.christianity-player{display:grid;gap:.65rem}.christianity-battle-zone{display:grid;grid-template-columns:repeat(5,minmax(4.2rem,1fr));gap:.5rem;min-height:7rem;padding:.55rem .4rem;border-radius:.75rem;background:#ffffffc2}.christianity-shared-zone{padding:.55rem .4rem;border-radius:.75rem;background:#ffffffe6}.christianity-card,.christianity-end-turn,.christianity-actions button,.christianity-pile,.christianity-leader--target{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card{display:grid;align-content:space-between;min-height:5.8rem;padding:.5rem;text-align:left;box-shadow:0 .5rem 1.25rem #24304414}.christianity-card span{font-weight:700}.christianity-card strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-card.is-selected{border-color:#2563eb;box-shadow:0 0 0 .2rem #2563eb29}.christianity-card.is-disabled,.christianity-card.is-exhausted{opacity:.55}.christianity-card.is-target{border-color:#dc2626}.christianity-offering-cards{display:grid;grid-auto-flow:column;grid-auto-columns:.7rem;gap:.16rem;align-items:end;min-height:1.05rem}.christianity-offering-cards i{display:block;width:.65rem;height:.95rem;border:1px solid rgba(16,42,67,.22);border-radius:.18rem;background:#f8fafc}.christianity-offering-cards i.is-used{background:#cbd5e1;transform:rotate(90deg);transform-origin:center}.christianity-slot{min-height:5.8rem;border:1px dashed rgba(36,48,68,.22);border-radius:.5rem;background:#ffffff73}.christianity-hand{display:grid;grid-auto-columns:minmax(6rem,8rem);grid-auto-flow:column;gap:.55rem;overflow-x:auto;padding-bottom:.25rem}.christianity-actions{align-items:flex-start;padding:.75rem;border-radius:.75rem;background:#fff}.christianity-actions div{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.christianity-actions button,.christianity-end-turn{min-height:2.4rem;padding:0 .75rem;font-weight:700}.christianity-actions button:not(:disabled),.christianity-end-turn{background:#102a43;color:#fff}.christianity-history{padding:.75rem;border-radius:.75rem;background:#fff}.christianity-hand-fan{position:relative;display:flex;justify-content:center;min-height:7.4rem;padding:0 .25rem;isolation:isolate}.christianity-hand-fan--opponent{min-height:5.2rem}.christianity-opponent-hand-area{display:grid;gap:.25rem;min-height:6.7rem;align-items:start;padding-bottom:.35rem}.christianity-card-preview-card,.christianity-card-mini,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile,.christianity-end-turn{border:1px solid rgba(36,48,68,.16);border-radius:.5rem;background:#fff;color:inherit;font:inherit}.christianity-card-preview-card{display:grid;align-content:space-between;width:clamp(4.9rem,17vw,7.1rem);min-height:clamp(6.6rem,22vw,8.8rem);margin-inline:-.42rem;padding:.48rem;text-align:left;transform-origin:50% 115%;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;box-shadow:0 .5rem 1.25rem #2430441a}.christianity-card-preview-card--hand:hover,.christianity-card-preview-card--hand.is-selected{z-index:3;border-color:#2563eb;box-shadow:0 1rem 2rem #2563eb2e}.christianity-card-preview-card--back{min-height:4.8rem;background:linear-gradient(135deg,#102a431f,#102a4305),repeating-linear-gradient(45deg,#e2e8f0 0 .35rem,#f8fafc .35rem .7rem)}.christianity-card-preview-card--battle{width:100%;min-height:5.7rem;margin-inline:0}.christianity-card-preview-card span,.christianity-card-mini span,.christianity-leader-card span,.christianity-zone-card span,.christianity-zone-pile span{font-weight:700}.christianity-card-preview-card strong,.christianity-card-mini strong,.christianity-leader-card strong,.christianity-zone-card strong,.christianity-zone-pile strong{justify-self:end;padding:.15rem .35rem;border-radius:999px;background:#edf2f7;font-size:.8rem}.christianity-player-rack{display:grid;grid-template-columns:minmax(4.2rem,1fr) minmax(5rem,6.5rem) minmax(4.2rem,1fr);gap:.55rem;align-items:end;justify-items:center}.christianity-player-rack--opponent{align-items:start}.christianity-player-badge,.christianity-player-command{display:grid;gap:.35rem;justify-items:center;min-width:0}.christianity-player-badge{align-content:start;color:#1f2933c2;font-size:.74rem}.christianity-player-badge--opponent{justify-self:center;grid-auto-flow:column;align-items:center;justify-content:center}.christianity-player-badge strong{max-width:6.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.christianity-avatar{display:grid;place-items:center;width:1.85rem;height:1.85rem;border-radius:999px;color:#fff;font-size:.76rem;font-weight:800;box-shadow:0 .35rem .9rem #102a4329}.christianity-offerings-zone{display:flex;flex-wrap:wrap;gap:.25rem;justify-content:flex-end;width:100%}.christianity-card-mini,.christianity-leader-card,.christianity-zone-card,.christianity-zone-pile{display:grid;align-content:space-between;min-height:4.9rem;padding:.48rem;text-align:left}.christianity-card-mini{width:3.5rem}.christianity-leader-card{width:min(100%,6.5rem);min-height:5.8rem}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(4rem,1fr))}.christianity-shared-zone{display:grid;grid-template-columns:repeat(3,minmax(4.3rem,1fr));align-items:stretch}.christianity-zone-pile{position:relative;isolation:isolate;overflow:hidden;min-height:5.6rem;box-shadow:inset 0 0 0 999px #ffffff1f}.christianity-zone-pile i{position:absolute;inset:.62rem .72rem auto auto;z-index:-1;width:2.7rem;height:3.7rem;border:1px solid rgba(16,42,67,.18);border-radius:.35rem;background:#f8fafc;box-shadow:0 .35rem .85rem #102a431c;transform:rotate(4deg)}.christianity-zone-pile i:nth-child(2){transform:translate(-.28rem,.12rem) rotate(-3deg)}.christianity-zone-pile i:nth-child(3){background:linear-gradient(135deg,#102a4329,#102a4308),repeating-linear-gradient(45deg,#dbeafe 0 .33rem,#fff .33rem .66rem);transform:translate(-.54rem,.24rem) rotate(2deg)}.christianity-floating-card{position:fixed;top:50%;left:50%;z-index:21;display:grid;gap:.45rem;width:min(20rem,calc(100vw - 2rem));min-height:min(27rem,calc(100vh - 5rem));padding:1rem;border:1px solid rgba(36,48,68,.18);border-radius:.75rem;background:linear-gradient(180deg,#fffffff5,#f8fafcf5),radial-gradient(circle at 20% 0%,rgba(37,99,235,.12),transparent 45%);box-shadow:0 2.4rem 5rem #102a4357,inset 0 0 0 .35rem #ffffff8c;transform:translate(-50%,-50%) perspective(48rem) rotateX(5deg) rotateY(-5deg)}.christianity-preview-backdrop,.christianity-history-backdrop{position:fixed;inset:0;z-index:20;border:0;border-radius:0;background:#0f172a75}.christianity-floating-card small,.christianity-floating-card span{color:#1f2933a3}.christianity-floating-card strong{font-size:clamp(1.35rem,8vw,2rem);line-height:1.05}.christianity-floating-card p{margin:0;align-self:end;font-size:.95rem;line-height:1.35}.christianity-history-backdrop{z-index:22}.christianity-history-drawer{position:fixed;right:max(.5rem,env(safe-area-inset-right));bottom:max(.5rem,env(safe-area-inset-bottom));left:max(.5rem,env(safe-area-inset-left));z-index:23;display:grid;gap:.75rem;max-height:min(27rem,calc(100vh - 4rem));padding:.8rem;border:1px solid rgba(36,48,68,.16);border-radius:.75rem;background:#fffffffa;box-shadow:0 1.5rem 4rem #102a4347}.christianity-history-drawer header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.christianity-history-drawer h2,.christianity-history-drawer p{margin:0}.christianity-history-drawer header span{display:grid;place-items:center;min-width:1.85rem;height:1.85rem;border-radius:999px;background:#edf2f7;font-weight:800}.christianity-history-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.4rem,1fr));gap:.55rem;overflow-y:auto;padding:.1rem .1rem .25rem}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible{outline:.1875rem solid rgba(37,99,235,.24);outline-offset:.125rem}@media (max-width: 720px){.christianity-shell{padding:.55rem 0;border-right:0;border-left:0;border-radius:0}.christianity-header,.christianity-player__summary,.christianity-shared-zone,.christianity-actions{align-items:stretch;flex-direction:column}.christianity-battle-zone{grid-template-columns:repeat(4,minmax(3.35rem,1fr));overflow-x:auto}.christianity-hand-fan{min-height:6.8rem;overflow-x:clip}.christianity-player-rack{grid-template-columns:minmax(3.6rem,1fr) minmax(4.8rem,5.6rem) minmax(3.6rem,1fr)}.christianity-shared-zone{grid-template-columns:repeat(3,minmax(3.7rem,1fr))}.christianity-card-preview-card{width:clamp(4.2rem,20vw,5.7rem);min-height:clamp(5.8rem,26vw,7.4rem)}.christianity-opponent-hand-area{min-height:6.2rem}}\n"] }]
|
|
68462
68746
|
}], ctorParameters: () => [] });
|
|
68463
68747
|
|
|
68464
68748
|
addIcons({ refreshOutline, sparklesOutline, trophyOutline });
|