feat(effects): вода, облако яда, луч света; пульт и окна демонстрации
- Поле: вода (сплошная заливка по штриху, превью кистью), туман/огонь/дождь без изменений логики. - Действия: облако яда (частицы, круглая текстура, звук oblako-yada.mp3, длительность как у трека), луч света и заморозка со звуками из public/. - Пульт: инструменты воды и яда, синхрон SFX, тесты панели и ластика. - Окно управления: дочернее от окна просмотра (Z-order). - Типы эффектов, effectsStore prune, hit-test ластика. Made-with: Cursor
This commit is contained in:
@@ -14,9 +14,46 @@ function readControlAppCss(): string {
|
||||
return fs.readFileSync(path.join(here, 'ControlApp.module.css'), 'utf8');
|
||||
}
|
||||
|
||||
void test('ControlApp: звук молнии (public/molniya.mp3)', () => {
|
||||
const src = readControlApp();
|
||||
assert.ok(src.includes('molniya.mp3'));
|
||||
assert.ok(src.includes('playLightningEffectSound'));
|
||||
});
|
||||
|
||||
void test('ControlApp: звук заморозки (public/zamorozka.mp3)', () => {
|
||||
const src = readControlApp();
|
||||
assert.ok(src.includes('zamorozka.mp3'));
|
||||
assert.ok(src.includes('playFreezeEffectSound'));
|
||||
});
|
||||
|
||||
void test('ControlApp: звук луча света (public/luch_sveta.mp3)', () => {
|
||||
const appSrc = readControlApp();
|
||||
const sfxSrc = fs.readFileSync(path.join(here, 'sunbeamSfx.ts'), 'utf8');
|
||||
assert.ok(appSrc.includes('playSunbeamEffectSound'));
|
||||
assert.ok(appSrc.includes('getSunbeamEffectLifeMs'));
|
||||
assert.ok(sfxSrc.includes('luch_sveta.mp3'));
|
||||
assert.ok(sfxSrc.includes('playbackRate'));
|
||||
assert.ok(sfxSrc.includes('SUNBEAM_PLAYBACK_RATE'));
|
||||
});
|
||||
|
||||
void test('ControlApp: звук облака яда (public/oblako-yada.mp3)', () => {
|
||||
const appSrc = readControlApp();
|
||||
const sfxSrc = fs.readFileSync(path.join(here, 'poisonCloudSfx.ts'), 'utf8');
|
||||
assert.ok(appSrc.includes('getPoisonCloudEffectLifeMs'));
|
||||
assert.ok(appSrc.includes('playPoisonCloudEffectSound'));
|
||||
assert.ok(sfxSrc.includes('oblako-yada.mp3'));
|
||||
assert.ok(sfxSrc.includes('playbackRate'));
|
||||
});
|
||||
|
||||
void test('ControlApp: эффекты в пульте, иконки с тултипами и подписью для a11y', () => {
|
||||
const src = readControlApp();
|
||||
assert.ok(src.includes('ЭФФЕКТЫ'));
|
||||
assert.ok(src.includes('Инструменты'));
|
||||
assert.ok(src.includes('Эффекты поля'));
|
||||
assert.ok(src.includes('Эффекты действий'));
|
||||
assert.ok(src.includes('Луч света'));
|
||||
assert.ok(src.includes('title="Вода"'));
|
||||
assert.ok(src.includes('title="Облако яда"'));
|
||||
assert.ok(src.includes('title="Туман"'));
|
||||
assert.ok(src.includes('ariaLabel="Туман"'));
|
||||
assert.ok(src.includes('iconOnly'));
|
||||
|
||||
Reference in New Issue
Block a user