Skip to content

Commit

Permalink
hotfix broken undo history, adress #596, #597
Browse files Browse the repository at this point in the history
  • Loading branch information
Lurkars committed Jul 15, 2024
1 parent 350d57a commit 314f895
Show file tree
Hide file tree
Showing 10 changed files with 42 additions and 9 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "gloomhavensecretariat",
"version": "0.99.15",
"version": "0.99.16",
"license": "AGPL3",
"description": "Gloomhaven Secretariat is a Gloomhaven/Frosthaven Companion app.",
"homepage": "https://gloomhaven-secretariat.de",
Expand Down
2 changes: 1 addition & 1 deletion src/app/game/businesslogic/StorageManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -219,8 +219,8 @@ export class StorageManager {
for (let index = 0; index < objects.length; index++) {
const object = objects[index];
await this.write(store, undefined, object).catch(() => reject());
resolve();
};
resolve();
} else {
try {
localStorage.setItem("ghs-" + store, JSON.stringify(objects));
Expand Down
2 changes: 2 additions & 0 deletions src/app/ui/figures/character/character.html
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,8 @@
</div>

<div class="special-actions" *ngIf="character.specialActions">
<div class="entity-menu-container" ghs-pointer-input (singleClick)="openEntityMenu($event)"
(doubleClick)="compact && openCharacterSheet()"></div>
<ng-container *ngFor="let specialAction of character.specialActions">
<span *ngIf="character.tags.indexOf(specialAction.name) != -1" class="special-tag text-white"
[ghs-label]="'data.character.' + character.name + '.' + specialAction.name" ghs-pointer-input
Expand Down
10 changes: 10 additions & 0 deletions src/app/ui/figures/entity-menu/entity-menu-dialog.html
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,16 @@
</span>
</ng-container>

<div class="identities-container"
*ngIf="data.entity && gameManager.isCharacter(data.entity) && settingsManager.settings.characterIdentities && gameManager.toCharacter(data.entity).identities && gameManager.toCharacter(data.entity).identities.length > 1">
<a class="item" *ngFor="let identity of [] | ghsRange:gameManager.toCharacter(data.entity).identities.length"
(click)="setIdentity(identity)"
[ghs-tooltip]="'data.character.' + gameManager.toCharacter(data.entity).name + '.' + gameManager.toCharacter(data.entity).identities[identity]" [ngClass]="{'disabled': gameManager.toCharacter(data.entity).identity == identity}">
<img
[src]="gameManager.characterManager.characterIdentityIcon(gameManager.toCharacter(data.entity).name, identity)" />
</a>
</div>

<ng-container *ngIf="data.entity && gameManager.isSummon(data.entity)">
<span class="item" [ghs-label]="'game.dead'" [ghs-label-attribute]="'title'">
<a class="button" tabclick (click)="toggleDead()">
Expand Down
9 changes: 7 additions & 2 deletions src/app/ui/figures/entity-menu/entity-menu-dialog.scss
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,8 @@
}


.marker-container {
.marker-container,
.identities-container {
display: grid;
grid-template-columns: repeat(3, calc(var(--ghs-unit) * 7 * var(--ghs-dialog-factor)));
row-gap: calc(var(--ghs-unit) * 1 * var(--ghs-dialog-factor));
Expand All @@ -330,7 +331,6 @@
grid-column: 1 / span 3;

.item {

position: relative;
display: flex;
align-items: center;
Expand All @@ -349,6 +349,11 @@
border-radius: 100%;
}

&.disabled img {
filter: grayscale(0.7);
opacity: 0.7;
}

}
}

Expand Down
18 changes: 16 additions & 2 deletions src/app/ui/figures/entity-menu/entity-menu-dialog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { SettingsManager, settingsManager } from "src/app/game/businesslogic/Set
import { Character } from "src/app/game/model/Character";
import { Entity, EntityValueFunction } from "src/app/game/model/Entity";
import { Figure } from "src/app/game/model/Figure";
import { GameState } from "src/app/game/model/Game";
import { Monster } from "src/app/game/model/Monster";
import { MonsterEntity } from "src/app/game/model/MonsterEntity";
import { OBJECTIV_MARKERS, ObjectiveContainer } from "src/app/game/model/ObjectiveContainer";
Expand Down Expand Up @@ -837,9 +838,20 @@ export class EntityMenuDialogComponent {
this.titles[index] = event.target.value;
}

setIdentity(index: number) {
if (this.data.entity instanceof Character && index != this.data.entity.identity) {
let timeTokens = this.data.entity.tags.find((tag) => tag === 'time_tokens') && this.data.entity.primaryToken == 0;
if ((gameManager.game.state == GameState.next || gameManager.game.state == GameState.draw && this.data.entity.identity == 0 && this.data.entity.tokenValues[0] == 0) && timeTokens) {
return;
}

gameManager.stateManager.before("setIdentity", gameManager.characterManager.characterName(this.data.entity, false, false, false), this.data.entity.name, this.data.entity.identities[index]);
this.data.entity.identity = index;
gameManager.stateManager.after();
}
}

close(): void {
this.closeConditions();
this.closeAMs();
if (this.data.entity instanceof Character) {
this.closeCharacter();
} else if (this.data.figure instanceof Monster) {
Expand All @@ -851,6 +863,8 @@ export class EntityMenuDialogComponent {
} else if (this.data.figure instanceof ObjectiveContainer) {
this.closeObjectiveContainer();
}
this.closeAMs();
this.closeConditions();
}

closeCharacter(): void {
Expand Down
2 changes: 1 addition & 1 deletion src/app/ui/tools/error-handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export class GhsErrorHandler extends ErrorHandler {
window.document.body.classList.remove('server-sync');

const errorId = error.message + (error.stack ? error.stack.split('\n')[0] : '');
if (!FILTER_ERRORS.some((msg) => error.message.startsWith(msg)) && (!settingsManager.settings.feedbackErrorsIgnore || settingsManager.settings.feedbackErrorsIgnore.indexOf(errorId) == -1)) {
if (error.message && error.message.trim() && !FILTER_ERRORS.some((msg) => error.message.startsWith(msg)) && (!settingsManager.settings.feedbackErrorsIgnore || settingsManager.settings.feedbackErrorsIgnore.indexOf(errorId) == -1)) {
this.dialog.open(FeedbackDialogComponent, {
panelClass: ['dialog'],
data: error
Expand Down
1 change: 1 addition & 0 deletions src/assets/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -2476,6 +2476,7 @@
"setEntitySummonState": "Beschwörung {3} für {1} Aufsteller {2} von {0}",
"setExhausted": "{0} erschöpft",
"setGold": "Gold {1} für {0}",
"setIdentity": "Setze Form auf %data.character.{1}.{2}% für {0}",
"setInitiative": "Initiative {1} für {0}",
"setLevel": "Level {1} für {0}",
"setNotes": "Notizen \"{1}\" für {0} ",
Expand Down
1 change: 1 addition & 0 deletions src/assets/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -2686,6 +2686,7 @@
"setEntitySummonState": "Set summon {3} for {1} standee {2} of {0}",
"setExhausted": "{0} exhausted",
"setGold": "Gold {1} for {0}",
"setIdentity": "Set form of {0} to %data.character.{1}.{2}%",
"setInitiative": "Initiative {1} for {0}",
"setLevel": "Level {1} for {0}",
"setNotes": "Notes \"{1}\" for {0}",
Expand Down

0 comments on commit 314f895

Please sign in to comment.