From 9a6167900396129c3b5cb326e8302c09c7be74c3 Mon Sep 17 00:00:00 2001 From: TalyaNeppe Date: Thu, 6 Jun 2024 15:17:03 +0300 Subject: [PATCH 1/3] add showBubble to settings --- package.json | 7 ++++++- src/extension/extension.ts | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index f6fa0066..f9a307b8 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ { "type": "webview", "id": "petsView", - "name": "VS Code Pets", + "name": "VS Code Petssss", "when": "vscode-pets.position == 'explorer'", "icon": "media/dog.svg" } @@ -234,6 +234,11 @@ "type": "boolean", "default": false, "description": "Throw ball with mouse" + }, + "vscode-pets.showBubble": { + "type": "boolean", + "default": "false", + "description": "Show speech bubble on pet interactions" } } } diff --git a/src/extension/extension.ts b/src/extension/extension.ts index 63196d9d..40249499 100644 --- a/src/extension/extension.ts +++ b/src/extension/extension.ts @@ -85,6 +85,12 @@ function getThrowWithMouseConfiguration(): boolean { .get('throwBallWithMouse', true); } +function getShowBubble(): boolean { + return vscode.workspace + .getConfiguration('vscode-pets') + .get('showBubble', false); +} + function updatePanelThrowWithMouse(): void { const panel = getPetPanel(); if (panel !== undefined) { From 27f029b686695745bb145eee56d3c3cc61229e42 Mon Sep 17 00:00:00 2001 From: TalyaNeppe Date: Mon, 28 Oct 2024 13:57:15 +0200 Subject: [PATCH 2/3] feat: use configuration to determine whether to show speech bubble --- package.json | 2 +- src/extension/extension.ts | 59 +++++++++++++++++++++++++++++++++--- src/panel/basepettype.ts | 6 ++++ src/panel/main.ts | 9 +++++- src/panel/pets.ts | 15 ++++++++- src/panel/pets/horse.ts | 2 ++ src/test/suite/panel.test.ts | 4 +++ 7 files changed, 89 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 6b62bd52..4c2ec5f3 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ { "type": "webview", "id": "petsView", - "name": "VS Code Petssss", + "name": "VS Code Pets", "when": "vscode-pets.position == 'explorer'", "icon": "media/dog.svg" } diff --git a/src/extension/extension.ts b/src/extension/extension.ts index 8d5c775e..5d77d8be 100644 --- a/src/extension/extension.ts +++ b/src/extension/extension.ts @@ -85,7 +85,7 @@ function getThrowWithMouseConfiguration(): boolean { .get('throwBallWithMouse', true); } -function getShowBubble(): boolean { +function getConfiguredShowBubble(): boolean { return vscode.workspace .getConfiguration('vscode-pets') .get('showBubble', false); @@ -110,12 +110,20 @@ export class PetSpecification { color: PetColor; type: PetType; size: PetSize; + showBubble: boolean; name: string; - constructor(color: PetColor, type: PetType, size: PetSize, name?: string) { + constructor( + color: PetColor, + type: PetType, + size: PetSize, + showBubble: boolean, + name?: string, + ) { this.color = color; this.type = type; this.size = size; + this.showBubble = showBubble; if (!name) { this.name = randomName(type); } else { @@ -137,12 +145,18 @@ export class PetSpecification { type = DEFAULT_PET_TYPE; } - return new PetSpecification(color, type, getConfiguredSize()); + return new PetSpecification( + color, + type, + getConfiguredSize(), + getConfiguredShowBubble(), + ); } static collectionFromMemento( context: vscode.ExtensionContext, size: PetSize, + showBubble: boolean, ): PetSpecification[] { var contextTypes = context.globalState.get( EXTRA_PETS_KEY_TYPES, @@ -163,6 +177,7 @@ export class PetSpecification { contextColors?.[index] ?? DEFAULT_COLOR, contextTypes[index], size, + showBubble, contextNames[index], ), ); @@ -255,6 +270,7 @@ async function handleRemovePetMessage( item.color, item.type, PetSize.medium, + getConfiguredShowBubble(), item.name, ); }); @@ -306,12 +322,14 @@ export function activate(context: vscode.ExtensionContext) { getConfiguredTheme(), getConfiguredThemeKind(), getThrowWithMouseConfiguration(), + getConfiguredShowBubble(), ); if (PetPanel.currentPanel) { var collection = PetSpecification.collectionFromMemento( context, getConfiguredSize(), + getConfiguredShowBubble(), ); collection.forEach((item) => { PetPanel.currentPanel?.spawnPet(item); @@ -352,6 +370,7 @@ export function activate(context: vscode.ExtensionContext) { getConfiguredTheme(), getConfiguredThemeKind(), getThrowWithMouseConfiguration(), + getConfiguredShowBubble(), ); updateExtensionPositionContext().catch((e) => { console.error(e); @@ -406,6 +425,7 @@ export function activate(context: vscode.ExtensionContext) { const pets = PetSpecification.collectionFromMemento( context, getConfiguredSize(), + getConfiguredShowBubble(), ); const petJson = JSON.stringify(pets, null, 2); const fileName = `pets-${Date.now()}.json`; @@ -473,6 +493,7 @@ export function activate(context: vscode.ExtensionContext) { var collection = PetSpecification.collectionFromMemento( context, getConfiguredSize(), + getConfiguredShowBubble(), ); // fetch just the pet types const panel = getPetPanel(); @@ -564,6 +585,7 @@ export function activate(context: vscode.ExtensionContext) { petColor, selectedPetType.value, getConfiguredSize(), + getConfiguredShowBubble(), name, ); if (!spec.type || !spec.color || !spec.size) { @@ -576,6 +598,7 @@ export function activate(context: vscode.ExtensionContext) { var collection = PetSpecification.collectionFromMemento( context, getConfiguredSize(), + getConfiguredShowBubble(), ); collection.push(spec); await storeCollectionAsMemento(context, collection); @@ -619,6 +642,7 @@ export function activate(context: vscode.ExtensionContext) { e.affectsConfiguration('vscode-pets.petType') || e.affectsConfiguration('vscode-pets.petSize') || e.affectsConfiguration('vscode-pets.theme') || + e.affectsConfiguration('vscode-pets.showBubble') || e.affectsConfiguration('workbench.colorTheme') ) { const spec = PetSpecification.fromConfiguration(); @@ -631,6 +655,7 @@ export function activate(context: vscode.ExtensionContext) { getConfiguredTheme(), getConfiguredThemeKind(), ); + panel.updateShowBubble(spec.showBubble); panel.update(); } } @@ -664,6 +689,7 @@ export function activate(context: vscode.ExtensionContext) { getConfiguredTheme(), getConfiguredThemeKind(), getThrowWithMouseConfiguration(), + getConfiguredShowBubble(), ); }, }); @@ -706,6 +732,7 @@ interface IPetPanel { updateTheme(newTheme: Theme, themeKind: vscode.ColorThemeKind): void; update(): void; setThrowWithMouse(newThrowWithMouse: boolean): void; + updateShowBubble(showBubble: boolean): void; } class PetWebviewContainer implements IPetPanel { @@ -717,6 +744,7 @@ class PetWebviewContainer implements IPetPanel { protected _theme: Theme; protected _themeKind: vscode.ColorThemeKind; protected _throwBallWithMouse: boolean; + protected _showBubble: boolean; constructor( extensionUri: vscode.Uri, @@ -726,6 +754,7 @@ class PetWebviewContainer implements IPetPanel { theme: Theme, themeKind: ColorThemeKind, throwBallWithMouse: boolean, + showBubble: boolean, ) { this._extensionUri = extensionUri; this._petColor = color; @@ -734,6 +763,7 @@ class PetWebviewContainer implements IPetPanel { this._theme = theme; this._themeKind = themeKind; this._throwBallWithMouse = throwBallWithMouse; + this._showBubble = showBubble; } public petColor(): PetColor { @@ -760,6 +790,10 @@ class PetWebviewContainer implements IPetPanel { return this._throwBallWithMouse; } + public showBubble(): boolean { + return this._showBubble; + } + public updatePetColor(newColor: PetColor) { this._petColor = newColor; } @@ -772,6 +806,10 @@ class PetWebviewContainer implements IPetPanel { this._petSize = newSize; } + public updateShowBubble(showBubble: boolean) { + this._showBubble = showBubble; + } + public updateTheme(newTheme: Theme, themeKind: vscode.ColorThemeKind) { this._theme = newTheme; this._themeKind = themeKind; @@ -908,7 +946,7 @@ class PetWebviewContainer implements IPetPanel {
- + `; } @@ -946,6 +984,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { theme: Theme, themeKind: ColorThemeKind, throwBallWithMouse: boolean, + showBubble: boolean, ) { const column = vscode.window.activeTextEditor ? vscode.window.activeTextEditor.viewColumn @@ -955,7 +994,8 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { if ( petColor === PetPanel.currentPanel.petColor() && petType === PetPanel.currentPanel.petType() && - petSize === PetPanel.currentPanel.petSize() + petSize === PetPanel.currentPanel.petSize() && + showBubble === PetPanel.currentPanel.showBubble() ) { PetPanel.currentPanel._panel.reveal(column); return; @@ -963,6 +1003,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { PetPanel.currentPanel.updatePetColor(petColor); PetPanel.currentPanel.updatePetType(petType); PetPanel.currentPanel.updatePetSize(petSize); + PetPanel.currentPanel.updateShowBubble(showBubble); PetPanel.currentPanel.update(); } } @@ -984,6 +1025,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { theme, themeKind, throwBallWithMouse, + showBubble, ); } @@ -1015,6 +1057,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { theme: Theme, themeKind: ColorThemeKind, throwBallWithMouse: boolean, + showBubble: boolean, ) { PetPanel.currentPanel = new PetPanel( panel, @@ -1025,6 +1068,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { theme, themeKind, throwBallWithMouse, + showBubble, ); } @@ -1037,6 +1081,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { theme: Theme, themeKind: ColorThemeKind, throwBallWithMouse: boolean, + showBubble: boolean, ) { super( extensionUri, @@ -1046,6 +1091,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { theme, themeKind, throwBallWithMouse, + showBubble, ); this._panel = panel; @@ -1154,11 +1200,13 @@ async function createPetPlayground(context: vscode.ExtensionContext) { getConfiguredTheme(), getConfiguredThemeKind(), getThrowWithMouseConfiguration(), + getConfiguredShowBubble(), ); if (PetPanel.currentPanel) { var collection = PetSpecification.collectionFromMemento( context, getConfiguredSize(), + getConfiguredShowBubble(), ); collection.forEach((item) => { PetPanel.currentPanel?.spawnPet(item); @@ -1168,6 +1216,7 @@ async function createPetPlayground(context: vscode.ExtensionContext) { var collection = PetSpecification.collectionFromMemento( context, getConfiguredSize(), + getConfiguredShowBubble(), ); collection.push(spec); await storeCollectionAsMemento(context, collection); diff --git a/src/panel/basepettype.ts b/src/panel/basepettype.ts index 732bca92..c6db1a40 100644 --- a/src/panel/basepettype.ts +++ b/src/panel/basepettype.ts @@ -47,6 +47,7 @@ export abstract class BasePetType implements IPetType { private _name: string; private _speed: number; private _size: PetSize; + private _showBubble: boolean; constructor( spriteElement: HTMLImageElement, @@ -58,6 +59,7 @@ export abstract class BasePetType implements IPetType { petRoot: string, floor: number, name: string, + showBubble: boolean, speed: number, ) { this.el = spriteElement; @@ -70,6 +72,7 @@ export abstract class BasePetType implements IPetType { this.initSprite(size, left, bottom); this.currentStateEnum = this.sequence.startingState; this.currentState = resolveState(this.currentStateEnum, this); + this._showBubble = showBubble; this._name = name; this._size = size; @@ -199,6 +202,9 @@ export abstract class BasePetType implements IPetType { } showSpeechBubble(message: string, duration: number = 3000) { + if (!this._showBubble) { + return; + } this.speech.innerHTML = message; this.speech.style.display = 'block'; setTimeout(() => { diff --git a/src/panel/main.ts b/src/panel/main.ts index c3c75d15..3ffddd9f 100644 --- a/src/panel/main.ts +++ b/src/panel/main.ts @@ -132,6 +132,7 @@ function addPetToPanel( bottom: number, floor: number, name: string, + showBubble: boolean, stateApi?: VscodeStateApi, ): PetElement { var petSpriteElement: HTMLImageElement = document.createElement('img'); @@ -170,6 +171,7 @@ function addPetToPanel( root, floor, name, + showBubble, ); petCounter++; startAnimations(collisionElement, newPet, stateApi); @@ -216,6 +218,7 @@ export function saveState(stateApi?: VscodeStateApi) { function recoverState( basePetUri: string, petSize: PetSize, + showBubble: boolean, floor: number, stateApi?: VscodeStateApi, ) { @@ -250,6 +253,7 @@ function recoverState( parseInt(p.elBottom ?? '0'), floor, p.petName ?? randomName(p.petType ?? PetType.cat), + showBubble, stateApi, ); allPets.push(newPet); @@ -307,6 +311,7 @@ export function petPanelApp( petSize: PetSize, petType: PetType, throwBallWithMouse: boolean, + showBubble: boolean, stateApi?: VscodeStateApi, ) { const ballRadius: number = calculateBallRadius(petSize); @@ -499,13 +504,14 @@ export function petPanelApp( floor, floor, randomName(petType), + showBubble, stateApi, ), ); saveState(stateApi); } else { console.log('Recovering state - ', state); - recoverState(basePetUri, petSize, floor, stateApi); + recoverState(basePetUri, petSize, showBubble, floor, stateApi); } initCanvas(); @@ -547,6 +553,7 @@ export function petPanelApp( floor, floor, message.name ?? randomName(message.type), + showBubble, stateApi, ), ); diff --git a/src/panel/pets.ts b/src/panel/pets.ts index c32e9f7c..b5c6b59a 100644 --- a/src/panel/pets.ts +++ b/src/panel/pets.ts @@ -159,6 +159,7 @@ export function createPet( petRoot: string, floor: number, name: string, + showBubble: boolean, ): IPetType { if (name === undefined || name === null || name === '') { throw new InvalidPetException('name is undefined'); @@ -174,7 +175,19 @@ export function createPet( string, number, string, - ] = [el, collision, speech, size, left, bottom, petRoot, floor, name]; + boolean, + ] = [ + el, + collision, + speech, + size, + left, + bottom, + petRoot, + floor, + name, + showBubble, + ]; switch (petType) { case PetType.cat: diff --git a/src/panel/pets/horse.ts b/src/panel/pets/horse.ts index 75e59e04..b66d1b1c 100644 --- a/src/panel/pets/horse.ts +++ b/src/panel/pets/horse.ts @@ -18,6 +18,7 @@ export class Horse extends BasePetType { petRoot: string, floor: number, name: string, + showBubble: boolean, speed: number, ) { // Replace spaces with underscores @@ -33,6 +34,7 @@ export class Horse extends BasePetType { petRootClean, floor, name, + showBubble, speed, ); } diff --git a/src/test/suite/panel.test.ts b/src/test/suite/panel.test.ts index 53f551dc..655a4845 100644 --- a/src/test/suite/panel.test.ts +++ b/src/test/suite/panel.test.ts @@ -92,6 +92,7 @@ suite('Pets Test Suite', () => { 'testPet', 0, 'Jerry', + true, ); assert.ok(testPet instanceof Cat); assert.equal(testPet.emoji, '🐱'); @@ -133,6 +134,7 @@ suite('Pets Test Suite', () => { PetSize.large, petType, false, + true, mockState, ); @@ -179,6 +181,7 @@ suite('Pets Test Suite', () => { PetSize.large, PetType.cat, false, + true, mockState, ); @@ -201,6 +204,7 @@ suite('Pets Test Suite', () => { PetSize.large, PetType.cat, false, + true, mockState, ); From 911eed680a522295171ca5c48e15a87c8ce8d11b Mon Sep 17 00:00:00 2001 From: TalyaNeppe Date: Thu, 6 Feb 2025 13:07:19 +0200 Subject: [PATCH 3/3] rename to disableBubble --- package.json | 4 +- package.nls.cs.json | 3 +- package.nls.de.json | 3 +- package.nls.en.json | 3 +- package.nls.es.json | 3 +- package.nls.fr.json | 3 +- package.nls.hu.json | 3 +- package.nls.it.json | 3 +- package.nls.json | 62 ++++++++++++++-------------- package.nls.ko.json | 3 +- package.nls.pl.json | 3 +- package.nls.ru.json | 3 +- package.nls.tr.json | 3 +- package.nls.zh-cn.json | 3 +- package.nls.zh-tw.json | 3 +- src/extension/extension.ts | 78 ++++++++++++++++++------------------ src/panel/basepettype.ts | 8 ++-- src/panel/main.ts | 16 ++++---- src/panel/pets.ts | 4 +- src/panel/pets/horse.ts | 4 +- src/test/suite/panel.test.ts | 8 ++-- 21 files changed, 118 insertions(+), 105 deletions(-) diff --git a/package.json b/package.json index 7f18baf6..af8142f6 100644 --- a/package.json +++ b/package.json @@ -302,10 +302,10 @@ "default": false, "description": "%vscode-pets.disableEffects.description%" }, - "vscode-pets.showBubble": { + "vscode-pets.disableBubble": { "type": "boolean", "default": false, - "description": "%vscode-pets.showBubble.description%" + "description": "%vscode-pets.disableBubble.description%" } } } diff --git a/package.nls.cs.json b/package.nls.cs.json index a62a3ebc..1363777d 100644 --- a/package.nls.cs.json +++ b/package.nls.cs.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "Černá", "vscode-pets.petColor.lightbrown": "Světle hnědá", "vscode-pets.petColor.brown": "Hnědá", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.de.json b/package.nls.de.json index 0018c5ad..47e2978e 100644 --- a/package.nls.de.json +++ b/package.nls.de.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "Schwarz", "vscode-pets.petColor.lightbrown": "Hellbraun", "vscode-pets.petColor.brown": "Braun", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.en.json b/package.nls.en.json index 486ba92d..5beaa49d 100644 --- a/package.nls.en.json +++ b/package.nls.en.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "Black", "vscode-pets.petColor.lightbrown": "Light Brown", "vscode-pets.petColor.brown": "Brown", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.es.json b/package.nls.es.json index 55489abf..ead12ac9 100644 --- a/package.nls.es.json +++ b/package.nls.es.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "Negro", "vscode-pets.petColor.lightbrown": "Marrón claro", "vscode-pets.petColor.brown": "Marrón", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.fr.json b/package.nls.fr.json index c13c43d7..71a9e385 100644 --- a/package.nls.fr.json +++ b/package.nls.fr.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "Noir", "vscode-pets.petColor.lightbrown": "Brun clair", "vscode-pets.petColor.brown": "Brun", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.hu.json b/package.nls.hu.json index 016e953f..d6e5706b 100644 --- a/package.nls.hu.json +++ b/package.nls.hu.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "Fekete", "vscode-pets.petColor.lightbrown": "Világosbarna", "vscode-pets.petColor.brown": "Barna", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.it.json b/package.nls.it.json index 565d61e3..627953c5 100644 --- a/package.nls.it.json +++ b/package.nls.it.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "Nero", "vscode-pets.petColor.lightbrown": "Marrone Chiaro", "vscode-pets.petColor.brown": "Marrone", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.json b/package.nls.json index e64038e9..f67dbcc3 100644 --- a/package.nls.json +++ b/package.nls.json @@ -17,26 +17,26 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", - - "vscode-pets.petColor.black" : "Black", - "vscode-pets.petColor.lightbrown" : "Light Brown", - "vscode-pets.petColor.brown" : "Brown", - "vscode-pets.petColor.green" : "Green", - "vscode-pets.petColor.yellow" : "Yellow", - "vscode-pets.petColor.gray" : "Gray", - "vscode-pets.petColor.purple" : "Purple", - "vscode-pets.petColor.red" : "Red", - "vscode-pets.petColor.white" : "White", - "vscode-pets.petColor.orange" : "Orange", - "vscode-pets.petColor.akita" : "Akita", - "vscode-pets.petColor.socks black" : "Black Socks", - "vscode-pets.petColor.socks beige" : "Beige Socks", - "vscode-pets.petColor.socks brown" : "Brown Socks", - "vscode-pets.petColor.paint beige" : "Beige Paint", - "vscode-pets.petColor.paint black" : "Black Paint", - "vscode-pets.petColor.paint brown" : "Brown Paint", - "vscode-pets.petColor.magical" : "Magical", - "vscode-pets.petColor.warrior" : "Warrior", + "vscode-pets.disableBubble.description": "Disable speech bubble", + "vscode-pets.petColor.black": "Black", + "vscode-pets.petColor.lightbrown": "Light Brown", + "vscode-pets.petColor.brown": "Brown", + "vscode-pets.petColor.green": "Green", + "vscode-pets.petColor.yellow": "Yellow", + "vscode-pets.petColor.gray": "Gray", + "vscode-pets.petColor.purple": "Purple", + "vscode-pets.petColor.red": "Red", + "vscode-pets.petColor.white": "White", + "vscode-pets.petColor.orange": "Orange", + "vscode-pets.petColor.akita": "Akita", + "vscode-pets.petColor.socks black": "Black Socks", + "vscode-pets.petColor.socks beige": "Beige Socks", + "vscode-pets.petColor.socks brown": "Brown Socks", + "vscode-pets.petColor.paint beige": "Beige Paint", + "vscode-pets.petColor.paint black": "Black Paint", + "vscode-pets.petColor.paint brown": "Brown Paint", + "vscode-pets.petColor.magical": "Magical", + "vscode-pets.petColor.warrior": "Warrior", "vscode-pets.petType.cat": "Cat", "vscode-pets.petType.chicken": "Chicken", @@ -57,17 +57,17 @@ "vscode-pets.petType.zappy": "Zappy", "vscode-pets.petType.snail": "Snail", - "vscode-pets.petSize.nano" : "Nano", - "vscode-pets.petSize.small" : "Small", - "vscode-pets.petSize.medium" : "Medium", + "vscode-pets.petSize.nano": "Nano", + "vscode-pets.petSize.small": "Small", + "vscode-pets.petSize.medium": "Medium", "vscode-pets.petSize.large": "Large", - "vscode-pets.position.panel" : "Panel", - "vscode-pets.position.explorer" : "Explorer", + "vscode-pets.position.panel": "Panel", + "vscode-pets.position.explorer": "Explorer", - "vscode-pets.theme.none" : "None", - "vscode-pets.theme.forest" : "Forest", - "vscode-pets.theme.castle" : "Castle", - "vscode-pets.theme.beach" : "Beach", - "vscode-pets.theme.winter" : "Winter" -} \ No newline at end of file + "vscode-pets.theme.none": "None", + "vscode-pets.theme.forest": "Forest", + "vscode-pets.theme.castle": "Castle", + "vscode-pets.theme.beach": "Beach", + "vscode-pets.theme.winter": "Winter" +} diff --git a/package.nls.ko.json b/package.nls.ko.json index dafb2e2c..ebfb33f1 100644 --- a/package.nls.ko.json +++ b/package.nls.ko.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "검정", "vscode-pets.petColor.lightbrown": "밝은 갈색", "vscode-pets.petColor.brown": "갈색", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.pl.json b/package.nls.pl.json index 247abe6f..383d1278 100644 --- a/package.nls.pl.json +++ b/package.nls.pl.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "Czarny", "vscode-pets.petColor.lightbrown": "Jasnobrązowy", "vscode-pets.petColor.brown": "Brązowy", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.ru.json b/package.nls.ru.json index 84f9756e..b6c18fca 100644 --- a/package.nls.ru.json +++ b/package.nls.ru.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "Чёрный", "vscode-pets.petColor.lightbrown": "Светло-коричневый", "vscode-pets.petColor.brown": "Коричневый", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.tr.json b/package.nls.tr.json index 82c9000a..85e92a45 100644 --- a/package.nls.tr.json +++ b/package.nls.tr.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "Siyah", "vscode-pets.petColor.lightbrown": "Açık Kahverengi", "vscode-pets.petColor.brown": "Kahverengi", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 1aaf2692..82fb12e0 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "黑色", "vscode-pets.petColor.lightbrown": "浅棕色", "vscode-pets.petColor.brown": "棕色", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index f21ce54a..7fda340f 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -16,6 +16,7 @@ "vscode-pets.theme.description": "Theme", "vscode-pets.throwBallWithMouse.description": "Throw ball with mouse", "vscode-pets.disableEffects.description": "Disable effects", + "vscode-pets.disableBubble.description": "Disable speech bubble", "vscode-pets.petColor.black": "黑色", "vscode-pets.petColor.lightbrown": "淺棕色", "vscode-pets.petColor.brown": "棕色", @@ -64,4 +65,4 @@ "vscode-pets.theme.castle": "Castle", "vscode-pets.theme.beach": "Beach", "vscode-pets.theme.winter": "Winter" -} \ No newline at end of file +} diff --git a/src/extension/extension.ts b/src/extension/extension.ts index f50c9b00..f09be72d 100644 --- a/src/extension/extension.ts +++ b/src/extension/extension.ts @@ -98,10 +98,10 @@ function updatePanelDisableEffects(): void { } } -function getConfiguredShowBubble(): boolean { +function getConfiguredDisableBubble(): boolean { return vscode.workspace .getConfiguration('vscode-pets') - .get('showBubble', false); + .get('disableBubble', false); } function updatePanelThrowWithMouse(): void { @@ -123,20 +123,20 @@ export class PetSpecification { color: PetColor; type: PetType; size: PetSize; - showBubble: boolean; + disableBubble: boolean; name: string; constructor( color: PetColor, type: PetType, size: PetSize, - showBubble: boolean, + disableBubble: boolean, name?: string, ) { this.color = color; this.type = type; this.size = size; - this.showBubble = showBubble; + this.disableBubble = disableBubble; if (!name) { this.name = randomName(type); } else { @@ -162,14 +162,14 @@ export class PetSpecification { color, type, getConfiguredSize(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); } static collectionFromMemento( context: vscode.ExtensionContext, size: PetSize, - showBubble: boolean, + disableBubble: boolean, ): PetSpecification[] { var contextTypes = context.globalState.get( EXTRA_PETS_KEY_TYPES, @@ -190,7 +190,7 @@ export class PetSpecification { contextColors?.[index] ?? DEFAULT_COLOR, contextTypes[index], size, - showBubble, + disableBubble, contextNames[index], ), ); @@ -283,7 +283,7 @@ async function handleRemovePetMessage( item.color, item.type, PetSize.medium, - getConfiguredShowBubble(), + getConfiguredDisableBubble(), item.name, ); }); @@ -336,14 +336,14 @@ export function activate(context: vscode.ExtensionContext) { getConfiguredThemeKind(), getThrowWithMouseConfiguration(), getEffectsDisabledConfiguration(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); if (PetPanel.currentPanel) { var collection = PetSpecification.collectionFromMemento( context, getConfiguredSize(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); collection.forEach((item) => { PetPanel.currentPanel?.spawnPet(item); @@ -385,7 +385,7 @@ export function activate(context: vscode.ExtensionContext) { getConfiguredThemeKind(), getThrowWithMouseConfiguration(), getEffectsDisabledConfiguration(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); updateExtensionPositionContext().catch((e) => { console.error(e); @@ -440,7 +440,7 @@ export function activate(context: vscode.ExtensionContext) { const pets = PetSpecification.collectionFromMemento( context, getConfiguredSize(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); const petJson = JSON.stringify(pets, null, 2); const fileName = `pets-${Date.now()}.json`; @@ -508,7 +508,7 @@ export function activate(context: vscode.ExtensionContext) { var collection = PetSpecification.collectionFromMemento( context, getConfiguredSize(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); // fetch just the pet types const panel = getPetPanel(); @@ -600,7 +600,7 @@ export function activate(context: vscode.ExtensionContext) { petColor, selectedPetType.value, getConfiguredSize(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), name, ); if (!spec.type || !spec.color || !spec.size) { @@ -613,7 +613,7 @@ export function activate(context: vscode.ExtensionContext) { var collection = PetSpecification.collectionFromMemento( context, getConfiguredSize(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); collection.push(spec); await storeCollectionAsMemento(context, collection); @@ -657,7 +657,7 @@ export function activate(context: vscode.ExtensionContext) { e.affectsConfiguration('vscode-pets.petType') || e.affectsConfiguration('vscode-pets.petSize') || e.affectsConfiguration('vscode-pets.theme') || - e.affectsConfiguration('vscode-pets.showBubble') || + e.affectsConfiguration('vscode-pets.disableBubble') || e.affectsConfiguration('workbench.colorTheme') ) { const spec = PetSpecification.fromConfiguration(); @@ -670,7 +670,7 @@ export function activate(context: vscode.ExtensionContext) { getConfiguredTheme(), getConfiguredThemeKind(), ); - panel.updateShowBubble(spec.showBubble); + panel.updateDisableBubble(spec.disableBubble); panel.update(); } } @@ -709,7 +709,7 @@ export function activate(context: vscode.ExtensionContext) { getConfiguredThemeKind(), getThrowWithMouseConfiguration(), getEffectsDisabledConfiguration(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); }, }); @@ -753,7 +753,7 @@ interface IPetPanel { update(): void; setThrowWithMouse(newThrowWithMouse: boolean): void; updateDisableEffects(disableEffects: boolean): void; - updateShowBubble(showBubble: boolean): void; + updateDisableBubble(disableBubble: boolean): void; } class PetWebviewContainer implements IPetPanel { @@ -766,7 +766,7 @@ class PetWebviewContainer implements IPetPanel { protected _themeKind: vscode.ColorThemeKind; protected _throwBallWithMouse: boolean; protected _disableEffects: boolean; - protected _showBubble: boolean; + protected _disableBubble: boolean; constructor( extensionUri: vscode.Uri, @@ -777,7 +777,7 @@ class PetWebviewContainer implements IPetPanel { themeKind: ColorThemeKind, throwBallWithMouse: boolean, disableEffects: boolean, - showBubble: boolean, + disableBubble: boolean, ) { this._extensionUri = extensionUri; this._petColor = color; @@ -787,7 +787,7 @@ class PetWebviewContainer implements IPetPanel { this._themeKind = themeKind; this._throwBallWithMouse = throwBallWithMouse; this._disableEffects = disableEffects; - this._showBubble = showBubble; + this._disableBubble = disableBubble; } public petColor(): PetColor { @@ -818,8 +818,8 @@ class PetWebviewContainer implements IPetPanel { return this._disableEffects; } - public showBubble(): boolean { - return this._showBubble; + public disableBubble(): boolean { + return this._disableBubble; } public updatePetColor(newColor: PetColor) { @@ -834,8 +834,8 @@ class PetWebviewContainer implements IPetPanel { this._petSize = newSize; } - public updateShowBubble(showBubble: boolean) { - this._showBubble = showBubble; + public updateDisableBubble(disableBubble: boolean) { + this._disableBubble = disableBubble; } public updateTheme(newTheme: Theme, themeKind: vscode.ColorThemeKind) { @@ -989,7 +989,7 @@ class PetWebviewContainer implements IPetPanel {
- + `; } @@ -1028,7 +1028,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { themeKind: ColorThemeKind, throwBallWithMouse: boolean, disableEffects: boolean, - showBubble: boolean, + disableBubble: boolean, ) { const column = vscode.window.activeTextEditor ? vscode.window.activeTextEditor.viewColumn @@ -1039,7 +1039,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { petColor === PetPanel.currentPanel.petColor() && petType === PetPanel.currentPanel.petType() && petSize === PetPanel.currentPanel.petSize() && - showBubble === PetPanel.currentPanel.showBubble() + disableBubble === PetPanel.currentPanel.disableBubble() ) { PetPanel.currentPanel._panel.reveal(column); return; @@ -1047,7 +1047,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { PetPanel.currentPanel.updatePetColor(petColor); PetPanel.currentPanel.updatePetType(petType); PetPanel.currentPanel.updatePetSize(petSize); - PetPanel.currentPanel.updateShowBubble(showBubble); + PetPanel.currentPanel.updateDisableBubble(disableBubble); PetPanel.currentPanel.update(); } } @@ -1070,7 +1070,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { themeKind, throwBallWithMouse, disableEffects, - showBubble, + disableBubble, ); } @@ -1105,7 +1105,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { themeKind: ColorThemeKind, throwBallWithMouse: boolean, disableEffects: boolean, - showBubble: boolean, + disableBubble: boolean, ) { PetPanel.currentPanel = new PetPanel( panel, @@ -1117,7 +1117,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { themeKind, throwBallWithMouse, disableEffects, - showBubble, + disableBubble, ); } @@ -1131,7 +1131,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { themeKind: ColorThemeKind, throwBallWithMouse: boolean, disableEffects: boolean, - showBubble: boolean, + disableBubble: boolean, ) { super( extensionUri, @@ -1142,7 +1142,7 @@ class PetPanel extends PetWebviewContainer implements IPetPanel { themeKind, throwBallWithMouse, disableEffects, - showBubble, + disableBubble, ); this._panel = panel; @@ -1252,13 +1252,13 @@ async function createPetPlayground(context: vscode.ExtensionContext) { getConfiguredThemeKind(), getThrowWithMouseConfiguration(), getEffectsDisabledConfiguration(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); if (PetPanel.currentPanel) { var collection = PetSpecification.collectionFromMemento( context, getConfiguredSize(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); collection.forEach((item) => { PetPanel.currentPanel?.spawnPet(item); @@ -1268,7 +1268,7 @@ async function createPetPlayground(context: vscode.ExtensionContext) { var collection = PetSpecification.collectionFromMemento( context, getConfiguredSize(), - getConfiguredShowBubble(), + getConfiguredDisableBubble(), ); collection.push(spec); await storeCollectionAsMemento(context, collection); diff --git a/src/panel/basepettype.ts b/src/panel/basepettype.ts index c6db1a40..be20e7e3 100644 --- a/src/panel/basepettype.ts +++ b/src/panel/basepettype.ts @@ -47,7 +47,7 @@ export abstract class BasePetType implements IPetType { private _name: string; private _speed: number; private _size: PetSize; - private _showBubble: boolean; + private _disableBubble: boolean; constructor( spriteElement: HTMLImageElement, @@ -59,7 +59,7 @@ export abstract class BasePetType implements IPetType { petRoot: string, floor: number, name: string, - showBubble: boolean, + disableBubble: boolean, speed: number, ) { this.el = spriteElement; @@ -72,7 +72,7 @@ export abstract class BasePetType implements IPetType { this.initSprite(size, left, bottom); this.currentStateEnum = this.sequence.startingState; this.currentState = resolveState(this.currentStateEnum, this); - this._showBubble = showBubble; + this._disableBubble = disableBubble; this._name = name; this._size = size; @@ -202,7 +202,7 @@ export abstract class BasePetType implements IPetType { } showSpeechBubble(message: string, duration: number = 3000) { - if (!this._showBubble) { + if (this._disableBubble) { return; } this.speech.innerHTML = message; diff --git a/src/panel/main.ts b/src/panel/main.ts index a79d289e..645b3341 100644 --- a/src/panel/main.ts +++ b/src/panel/main.ts @@ -84,7 +84,7 @@ function addPetToPanel( bottom: number, floor: number, name: string, - showBubble: boolean, + disableBubble: boolean, stateApi?: VscodeStateApi, ): PetElement { var petSpriteElement: HTMLImageElement = document.createElement('img'); @@ -123,7 +123,7 @@ function addPetToPanel( root, floor, name, - showBubble, + disableBubble, ); petCounter++; startAnimations(collisionElement, newPet, stateApi); @@ -170,7 +170,7 @@ export function saveState(stateApi?: VscodeStateApi) { function recoverState( basePetUri: string, petSize: PetSize, - showBubble: boolean, + disableBubble: boolean, floor: number, stateApi?: VscodeStateApi, ) { @@ -205,7 +205,7 @@ function recoverState( parseInt(p.elBottom ?? '0'), floor, p.petName ?? randomName(p.petType ?? PetType.cat), - showBubble, + disableBubble, stateApi, ); allPets.push(newPet); @@ -263,7 +263,7 @@ export function petPanelApp( petType: PetType, throwBallWithMouse: boolean, disableEffects: boolean, - showBubble: boolean, + disableBubble: boolean, stateApi?: VscodeStateApi, ) { if (!stateApi) { @@ -311,14 +311,14 @@ export function petPanelApp( floor, floor, randomName(petType), - showBubble, + disableBubble, stateApi, ), ); saveState(stateApi); } else { console.log('Recovering state - ', state); - recoverState(basePetUri, petSize, showBubble, floor, stateApi); + recoverState(basePetUri, petSize, disableBubble, floor, stateApi); } initCanvas(PET_CANVAS_ID); @@ -373,7 +373,7 @@ export function petPanelApp( floor, floor, message.name ?? randomName(message.type), - showBubble, + disableBubble, stateApi, ), ); diff --git a/src/panel/pets.ts b/src/panel/pets.ts index 6440d5fc..d8d0d9e7 100644 --- a/src/panel/pets.ts +++ b/src/panel/pets.ts @@ -180,7 +180,7 @@ export function createPet( petRoot: string, floor: number, name: string, - showBubble: boolean, + disableBubble: boolean, ): IPetType { if (name === undefined || name === null || name === '') { throw new InvalidPetException('name is undefined'); @@ -207,7 +207,7 @@ export function createPet( petRoot, floor, name, - showBubble, + disableBubble, ]; switch (petType) { diff --git a/src/panel/pets/horse.ts b/src/panel/pets/horse.ts index b66d1b1c..f412b755 100644 --- a/src/panel/pets/horse.ts +++ b/src/panel/pets/horse.ts @@ -18,7 +18,7 @@ export class Horse extends BasePetType { petRoot: string, floor: number, name: string, - showBubble: boolean, + disableBubble: boolean, speed: number, ) { // Replace spaces with underscores @@ -34,7 +34,7 @@ export class Horse extends BasePetType { petRootClean, floor, name, - showBubble, + disableBubble, speed, ); } diff --git a/src/test/suite/panel.test.ts b/src/test/suite/panel.test.ts index c596df37..12cd633f 100644 --- a/src/test/suite/panel.test.ts +++ b/src/test/suite/panel.test.ts @@ -113,7 +113,7 @@ suite('Pets Test Suite', () => { 'testPet', 0, 'Jerry', - true, + false, ); assert.ok(testPet instanceof Cat); assert.equal(testPet.emoji, '🐱'); @@ -160,7 +160,7 @@ suite('Pets Test Suite', () => { petType, false, false, - true, + false, mockState, ); @@ -226,7 +226,7 @@ suite('Pets Test Suite', () => { PetType.cat, false, false, - true, + false, mockState, ); @@ -253,7 +253,7 @@ suite('Pets Test Suite', () => { PetType.cat, false, false, - true, + false, mockState, );