Files
DndGamePlayer/package.json
T
Ivan Fontosh 089da3cae0 feat(effects): migrate battle effects to VFX
- add WebP frame-sequence assets for lightning, electric accent, fire, sunbeam, poison, rain, water, and rounded fog effects
- replace procedural lightning rendering with VFX frame playback
- align lightning impact to the click point
- remove the full-screen lightning blur/flash overlay
- add electric accent playback for lightning impact dispersion
- keep lightning scorch marks as the persistent ground trace after the action effect
- consolidate the lightning tool into a single public `Молния` action
- replace procedural fire with the VFX fire implementation
- remove the separate `Огонь 2` tool and keep the VFX fire under `Огонь`
- keep VFX fire brightness fixed at full intensity
- preserve fire as a field effect with brush placement and eraser support
- replace procedural sunbeam with the Pulse Discharge VFX implementation
- remove the separate `Луч света 2` tool and keep the VFX sunbeam under `Луч света`
- align sunbeam impact to the click point instead of the raw frame center
- remove the full-screen sunbeam flash overlay
- add Dust Burst VFX playback for poison cloud
- tint poison smoke green
- keep the skull glyph rendered above the poison smoke
- align poison smoke bottom to the click point
- remove the old procedural poison cloud implementation
- remove the separate `Яд 2` tool and keep the VFX poison under `Яд`
- replace procedural rain strokes with medium-rain VFX frame playback
- recolor rain frames to gray/light-gray so rain no longer renders black
- preserve rain as a field effect with brush placement and eraser support
- replace static water fill with generated animated water VFX frames
- render water VFX through the existing stroke mask so water keeps the painted brush shape
- preserve water as a field effect with brush placement and eraser support
- replace procedural fog texture generation with Smokey Atmosphere VFX frames
- generate rounded fog VFX frames with soft alpha falloff at the edges
- size each fog VFX stamp to the brush diameter
- remove per-stamp fog drift and rotation so fog elements stay fixed in place
- keep fog animation limited to internal frame playback
- preload VFX frame textures for smoother first use
- cache VFX textures per Pixi instance to avoid duplicate decoding
- filter expired action instances before node synchronization to stop old effects from flashing back during rapid casts
- add brush-stroke erasing for field effects using the same model as scene darkness reveal
- keep whole-instance erasing for action effects
- update effect hit tests for the consolidated VFX action effects
- update effect store pruning for renamed and consolidated action effects
- update control-panel buttons for consolidated fire, sunbeam, poison, and VFX-backed field effects
- update editor localization for removed and renamed effect tools
- add tests for field-effect brush erasing
- update eraser hit-test coverage for VFX-backed effects
- update effects store lifetime pruning tests for consolidated poison
- update control-panel tests for consolidated effect buttons
- include the field-effect eraser test in the default test script

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 21:20:43 +08:00

177 lines
6.3 KiB
JSON

{
"name": "TTRPGPlayer",
"version": "1.0.25",
"description": "TTRPG Player — редактор и проигрыватель НРИ",
"main": "dist/main/index.cjs",
"scripts": {
"dev": "node scripts/dev.mjs",
"build": "node scripts/build.mjs --production",
"build:dev": "node scripts/build.mjs",
"build:obfuscate": "node scripts/build.mjs --production --obfuscate",
"lint": "eslint . --max-warnings 0",
"typecheck": "tsc -p tsconfig.eslint.json --noEmit",
"test": "tsx --test app/renderer/shared/ui/controls.tooltip.test.ts app/renderer/editor/state/projectState.race.test.ts app/renderer/editor/graph/sceneCardById.test.ts app/renderer/editor/i18n/editorMessages.locale.test.ts app/shared/ipc/contracts.mediaRemoval.test.ts app/shared/effectEraserHitTest.test.ts app/shared/fieldEffectEraser.test.ts app/renderer/control/controlApp.effectsPanel.test.ts app/renderer/shared/effects/PxiEffectsOverlay.pointer.test.ts app/main/windows/createWindows.editorClose.test.ts app/main/windows/bootWindow.test.ts app/main/effects/effectsStore.test.ts app/main/effects/sceneDarknessStore.test.ts app/main/project/assetPrune.test.ts app/main/project/optimizeImageImport.test.ts app/main/project/scenePreviewThumbnail.test.ts app/main/project/fsRetry.test.ts app/main/project/zipRead.test.ts app/main/project/replaceFileAtomic.test.ts app/main/project/zipStore.legacyContract.test.ts app/shared/package.build.test.ts app/shared/license/canonicalJson.test.ts app/shared/license/productKey.test.ts app/shared/license/licenseService.networkRegression.test.ts app/shared/video/videoPlaybackPerf.networkRegression.test.ts app/shared/video/videoPlaybackLoop.networkRegression.test.ts app/main/license/verifyLicenseToken.test.ts && node --test scripts/build-env.test.mjs scripts/obfuscate-main.test.mjs scripts/release-mac-prep.test.mjs",
"format": "prettier . --check",
"format:write": "prettier . --write",
"postinstall": "patch-package",
"release:info": "node scripts/print-release-info.mjs",
"pack": "npm run build && node scripts/release-win-prep.mjs && electron-builder",
"pack:dir": "npm run build && node scripts/release-win-prep.mjs && electron-builder --dir",
"pack:mac": "npm run build && node scripts/release-mac-prep.mjs && electron-builder --mac",
"pack:win": "npm run build && node scripts/release-win-prep.mjs && electron-builder --win",
"pack:linux": "node scripts/release-linux-pack.mjs",
"release": "powershell -ExecutionPolicy Bypass -File scripts/ttrpg-release/release.ps1",
"release:all": "powershell -ExecutionPolicy Bypass -File scripts/ttrpg-release/release-all.ps1",
"prepare:release": "powershell -ExecutionPolicy Bypass -File scripts/ttrpg-release/prepare-release.ps1",
"publish:updates": "powershell -ExecutionPolicy Bypass -File scripts/ttrpg-release/publish.ps1"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "module",
"dependencies": {
"@fontsource/inter": "^5.2.8",
"electron-updater": "^6.6.2",
"ffmpeg-static": "^5.3.0",
"pixi.js": "^8.18.1",
"react": "^19.2.5",
"react-dom": "^19.2.5",
"reactflow": "^11.11.4",
"sharp": "^0.34.5"
},
"devDependencies": {
"@eslint/js": "^9.39.4",
"@resvg/resvg-js": "^2.6.2",
"@rollup/plugin-strip": "^3.0.4",
"@types/node": "^25.6.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@types/yauzl": "^2.10.3",
"@types/yazl": "^3.3.1",
"@vitejs/plugin-react": "^6.0.1",
"babel-plugin-react-compiler": "^1.0.0",
"electron": "^41.2.0",
"electron-builder": "^26.8.1",
"esbuild": "^0.28.0",
"eslint": "^9.39.4",
"eslint-config-prettier": "^10.1.8",
"eslint-import-resolver-typescript": "^4.4.4",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "^5.5.5",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-unicorn": "^64.0.0",
"javascript-obfuscator": "^4.2.2",
"patch-package": "^8.0.1",
"prettier": "^3.8.3",
"to-ico": "^1.1.2",
"tsx": "^4.21.0",
"typescript": "^6.0.2",
"typescript-eslint": "^8.58.2",
"vite": "^8.0.8",
"yauzl": "^3.3.0",
"yazl": "^3.3.1"
},
"build": {
"appId": "com.ttrpgplayer.app",
"productName": "TTRPGPlayer",
"copyright": "Copyright © TTRPGPlayer",
"directories": {
"output": "release",
"buildResources": "build"
},
"extraResources": [
{
"from": "build/icon.ico",
"to": "branding/icon.ico"
}
],
"files": [
"dist/**/*",
"package.json"
],
"asar": true,
"asarUnpack": [
"dist/preload/**",
"dist/renderer/app-pack-icon.png",
"dist/renderer/app-window-icon.png",
"node_modules/sharp/**",
"node_modules/@img/**",
"node_modules/ffmpeg-static/**"
],
"toolsets": {
"appimage": "1.0.2"
},
"mac": {
"category": "public.app-category.games",
"artifactName": "${productName}-${arch}.${ext}",
"target": [
{
"target": "dmg",
"arch": [
"x64",
"arm64"
]
},
{
"target": "zip",
"arch": [
"x64",
"arm64"
]
}
],
"icon": "build/icon.png"
},
"win": {
"target": [
{
"target": "nsis",
"arch": [
"x64"
]
},
{
"target": "zip",
"arch": [
"x64"
]
}
],
"icon": "build/icon.ico"
},
"linux": {
"target": [
{
"target": "AppImage",
"arch": [
"x64",
"arm64"
]
}
],
"category": "Game",
"maintainer": "TTRPGPlayer",
"synopsis": "TTRPG Player — tabletop RPG editor and player",
"icon": "build/icon.png"
},
"appImage": {
"artifactName": "${productName}-${arch}.${ext}"
},
"dmg": {
"artifactName": "${productName}-${arch}.${ext}"
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"deleteAppDataOnUninstall": false,
"artifactName": "${productName}-Setup.${ext}"
},
"publish": {
"provider": "generic",
"url": "https://updates.ttrpgplayer.ru/"
}
}
}