Added theme-color and translate-no to logos, updated 404. Improved header colors. Improvements in components.

This commit is contained in:
Eugene Serb 2022-07-17 15:16:28 +03:00
parent 0ebb5c3e67
commit 3df2f2044e
25 changed files with 78 additions and 90 deletions

View File

@ -3,7 +3,10 @@
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#4ECBD9" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#087E8B" />
<meta name="color-scheme" content="light dark" />
<link rel="canonical" href="https://wavelovers.ru/404" />
<link rel="shortcut icon" type="image/x-icon" href="https://wavelovers.ru/img/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="https://wavelovers.ru/img/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="https://wavelovers.ru/img/favicon-32x32.png" />

View File

@ -6,6 +6,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#EA9AB2" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#E27396" />
<meta name="color-scheme" content="light dark" />
<meta name="robots" content="all" />
@ -71,7 +73,7 @@
<header class="header">
<div class="header-wrapper container">
<div class="logo-wrapper">
<span class="logo-wrapper__logo">Wavelovers</span>
<span class="logo-wrapper__logo" translate="no">Wavelovers</span>
</div>
<nav class="menu-wrapper">
<ul class="navigation">
@ -139,7 +141,7 @@
<span class="annotation__text">This site is open source. </span><a href="https://github.com/eugene-serb/wavelovers/" target="_blank">Improve this page.</a>
</div>
<div class="annotation created-by">
<span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank">Eugene Serb</a>
<span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank" translate="no">Eugene Serb</a>
</div>
</div>
</footer>

View File

@ -76,8 +76,8 @@
--color-table-header-text: var(--color-white);
--color-table-item: var(--color-c);
/* Components colors */
--color-header-background: var(--color-b);
--color-header-borderline: var(--color-a);
--color-header-background: var(--color-a);
--color-header-borderline: var(--color-b);
--color-header-selection: var(--color-b);
--color-header-logo: var(--color-white);
--color-header-navigation-link: var(--color-white);

View File

@ -6,6 +6,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#EA9AB2" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#E27396" />
<meta name="color-scheme" content="light dark" />
<meta name="robots" content="all" />
@ -71,7 +73,7 @@
<header class="header">
<div class="header-wrapper container">
<div class="logo-wrapper">
<span class="logo-wrapper__logo">Wavelovers</span>
<span class="logo-wrapper__logo" translate="no">Wavelovers</span>
</div>
<nav class="menu-wrapper">
<ul class="navigation">
@ -139,7 +141,7 @@
<span class="annotation__text">This site is open source. </span><a href="https://github.com/eugene-serb/wavelovers/" target="_blank">Improve this page.</a>
</div>
<div class="annotation created-by">
<span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank">Eugene Serb</a>
<span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank" translate="no">Eugene Serb</a>
</div>
</div>
</footer>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="en-us" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"><head><title>Wavelovers</title><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="color-scheme" content="light dark"/><meta name="robots" content="all"/><link rel="canonical" href="https://wavelovers.ru/"/><link rel="stylesheet" href="https://wavelovers.ru/css/styles.css"/><link rel="shortcut icon" type="image/x-icon" href="https://wavelovers.ru/img/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="https://wavelovers.ru/img/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="https://wavelovers.ru/img/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="https://wavelovers.ru/img/favicon-16x16.png"/><link rel="manifest" href="https://wavelovers.ru/site.webmanifest"/><meta name="author" content="Eugene Serb"/><meta name="copyright" content="Wavelovers, 2022"/><meta name="publisher-email" content="eugene.serb@gmail.com"/><meta name="publisher-url" content="https://eugene-serb.github.io/"/><meta name="keywords" content="Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, геймпад, джойстик, вибратор, вибромассажер, вибро, вибромассажёр из геймпада, тестер вибрации геймпада, тестер вибрации телефона"/><meta name="description" content="Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."/><meta property="og:locale" content="en_US"/><meta property="og:type" content="website"/><meta property="og:title" content="Wavelovers"/><meta property="og:site_name" content="Wavelovers"/><meta property="og:description" content="Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."/><meta property="og:url" content="https://wavelovers.ru/"/><meta property="og:image" content="https://wavelovers.ru/img/og.png"/><meta property="vk:image" content="https://wavelovers.ru/img/og.png"/><meta name="twitter:card" content="summary"/><meta name="twitter:creator" content="@eugene_serb"/><meta name="twitter:title" content="Wavelovers"/><meta name="twitter:description" content="Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."/><meta name="twitter:image" content="https://wavelovers.ru/img/og.png"/><style>[v-cloak] {
<!doctype html><html lang="en-us" dir="ltr" xmlns="http://www.w3.org/1999/xhtml"><head><title>Wavelovers</title><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" media="(prefers-color-scheme: light)" content="#EA9AB2"/><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#E27396"/><meta name="color-scheme" content="light dark"/><meta name="robots" content="all"/><link rel="canonical" href="https://wavelovers.ru/"/><link rel="stylesheet" href="https://wavelovers.ru/css/styles.css"/><link rel="shortcut icon" type="image/x-icon" href="https://wavelovers.ru/img/favicon.ico"/><link rel="apple-touch-icon" sizes="180x180" href="https://wavelovers.ru/img/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="https://wavelovers.ru/img/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="https://wavelovers.ru/img/favicon-16x16.png"/><link rel="manifest" href="https://wavelovers.ru/site.webmanifest"/><meta name="author" content="Eugene Serb"/><meta name="copyright" content="Wavelovers, 2022"/><meta name="publisher-email" content="eugene.serb@gmail.com"/><meta name="publisher-url" content="https://eugene-serb.github.io/"/><meta name="keywords" content="Wavelovers, Wave Lovers, Wavemaster, Wave Master, Vibration Master, Vibration, Gamepad, Gamepad Vibration, Vibrate Gamepad, Phone Vibration, Gamepad Tester, Phone Vibration Tester, Vibration Tester, Massager, Vibrator, Satisfyer, Womanizer, Relax, геймпад, джойстик, вибратор, вибромассажер, вибро, вибромассажёр из геймпада, тестер вибрации геймпада, тестер вибрации телефона"/><meta name="description" content="Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."/><meta property="og:locale" content="en_US"/><meta property="og:type" content="website"/><meta property="og:title" content="Wavelovers"/><meta property="og:site_name" content="Wavelovers"/><meta property="og:description" content="Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."/><meta property="og:url" content="https://wavelovers.ru/"/><meta property="og:image" content="https://wavelovers.ru/img/og.png"/><meta property="vk:image" content="https://wavelovers.ru/img/og.png"/><meta name="twitter:card" content="summary"/><meta name="twitter:creator" content="@eugene_serb"/><meta name="twitter:title" content="Wavelovers"/><meta name="twitter:description" content="Wavelovers. Use your device vibration correctly. Make a massager out of a gamepad."/><meta name="twitter:image" content="https://wavelovers.ru/img/og.png"/><style>[v-cloak] {
display: none;
}</style><script async src="https://www.googletagmanager.com/gtag/js?id=G-59FM5E4MVD"></script><script>window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
@ -15,4 +15,4 @@
trackLinks: true,
accurateTrackBounce: true,
webvisor: true
});</script><script defer="defer" src="/js/chunk-vendors.9c4f6371.js"></script><script defer="defer" src="/js/app.4c404959.js"></script><link href="/css/app.f87473b2.css" rel="stylesheet"></head><body><header class="header"><div class="header-wrapper container"><div class="logo-wrapper"><span class="logo-wrapper__logo">Wavelovers</span></div><nav class="menu-wrapper"><ul class="navigation"><li class="navigation__item"><a href="https://wavelovers.ru/" target="_self" class="navigation__link">Home</a></li><li class="navigation__item"><a href="https://wavelovers.ru/faq.html" target="_self" class="navigation__link">FAQ</a></li><li class="navigation__item"><a href="https://wavelovers.ru/about.html" target="_self" class="navigation__link">About</a></li><li class="navigation__item"><a href="https://wavelovers.ru/about.html#donate" target="_self" class="navigation__link">Donate</a></li></ul></nav></div></header><main class="page container"><h1 class="visually-hidden">Wavelovers</h1><div id="app" v-cloak></div></main><footer class="footer"><div class="footer-wrapper container"><div class="annotation"><span class="annotation__text">© 2022 Wavelovers. Content licensed under </span><a href="https://wavelovers.ru/LICENSE.md" target="_blank">GNU General Public License v3.0</a><br><span class="annotation__text">This site is open source. </span><a href="https://github.com/eugene-serb/wavelovers/" target="_blank">Improve this page.</a></div><div class="annotation created-by"><span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank">Eugene Serb</a></div></div></footer><noscript><div><img src="https://mc.yandex.ru/watch/89252711" style="position:absolute; left:-9999px;" alt=""/></div></noscript></body></html>
});</script><script defer="defer" src="/js/chunk-vendors.9c4f6371.js"></script><script defer="defer" src="/js/app.17690bc6.js"></script><link href="/css/app.f87473b2.css" rel="stylesheet"></head><body><header class="header"><div class="header-wrapper container"><div class="logo-wrapper"><span class="logo-wrapper__logo" translate="no">Wavelovers</span></div><nav class="menu-wrapper"><ul class="navigation"><li class="navigation__item"><a href="https://wavelovers.ru/" target="_self" class="navigation__link">Home</a></li><li class="navigation__item"><a href="https://wavelovers.ru/faq.html" target="_self" class="navigation__link">FAQ</a></li><li class="navigation__item"><a href="https://wavelovers.ru/about.html" target="_self" class="navigation__link">About</a></li><li class="navigation__item"><a href="https://wavelovers.ru/about.html#donate" target="_self" class="navigation__link">Donate</a></li></ul></nav></div></header><main class="page container"><h1 class="visually-hidden">Wavelovers</h1><noscript>You need to enable JavaScript to run this app.</noscript><div id="app" v-cloak></div></main><footer class="footer"><div class="footer-wrapper container"><div class="annotation"><span class="annotation__text">© 2022 Wavelovers. Content licensed under </span><a href="https://wavelovers.ru/LICENSE.md" target="_blank">GNU General Public License v3.0</a><br><span class="annotation__text">This site is open source. </span><a href="https://github.com/eugene-serb/wavelovers/" target="_blank">Improve this page.</a></div><div class="annotation created-by"><span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank" translate="no">Eugene Serb</a></div></div></footer><noscript><div><img src="https://mc.yandex.ru/watch/89252711" style="position:absolute; left:-9999px;" alt=""/></div></noscript></body></html>

2
docs/js/app.17690bc6.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -3,18 +3,18 @@
"short_name": "Wavelovers",
"icons": [
{
"src": "https://eugene-serb.github.io/wavelovers/img/android-chrome-192x192.png",
"src": "https://wavelovers.ru/img/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "https://eugene-serb.github.io/wavelovers/img/android-chrome-512x512.png",
"src": "https://wavelovers.ru/img/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#EFCFE3",
"background_color": "#EFCFE3",
"theme_color": "#EA9AB2",
"background_color": "#EA9AB2",
"display": "standalone"
}

View File

@ -2,19 +2,19 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://wavelovers.ru/</loc>
<lastmod>2022-07-14</lastmod>
<lastmod>2022-07-17</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://wavelovers.ru/about.html</loc>
<lastmod>2022-07-14</lastmod>
<lastmod>2022-07-17</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://wavelovers.ru/faq.html</loc>
<lastmod>2022-07-14</lastmod>
<lastmod>2022-07-17</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>

View File

@ -2,7 +2,7 @@
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://wavelovers.ru/sitemap-internal.xml</loc>
<lastmod>2022-07-14</lastmod>
<lastmod>2022-07-17</lastmod>
</sitemap>
</sitemapindex>

View File

@ -3,7 +3,10 @@
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#4ECBD9" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#087E8B" />
<meta name="color-scheme" content="light dark" />
<link rel="canonical" href="https://wavelovers.ru/404" />
<link rel="shortcut icon" type="image/x-icon" href="https://wavelovers.ru/img/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="https://wavelovers.ru/img/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="https://wavelovers.ru/img/favicon-32x32.png" />

View File

@ -6,6 +6,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#EA9AB2" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#E27396" />
<meta name="color-scheme" content="light dark" />
<meta name="robots" content="all" />
@ -71,7 +73,7 @@
<header class="header">
<div class="header-wrapper container">
<div class="logo-wrapper">
<span class="logo-wrapper__logo">Wavelovers</span>
<span class="logo-wrapper__logo" translate="no">Wavelovers</span>
</div>
<nav class="menu-wrapper">
<ul class="navigation">
@ -139,7 +141,7 @@
<span class="annotation__text">This site is open source. </span><a href="https://github.com/eugene-serb/wavelovers/" target="_blank">Improve this page.</a>
</div>
<div class="annotation created-by">
<span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank">Eugene Serb</a>
<span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank" translate="no">Eugene Serb</a>
</div>
</div>
</footer>

View File

@ -76,8 +76,8 @@
--color-table-header-text: var(--color-white);
--color-table-item: var(--color-c);
/* Components colors */
--color-header-background: var(--color-b);
--color-header-borderline: var(--color-a);
--color-header-background: var(--color-a);
--color-header-borderline: var(--color-b);
--color-header-selection: var(--color-b);
--color-header-logo: var(--color-white);
--color-header-navigation-link: var(--color-white);

View File

@ -6,6 +6,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#EA9AB2" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#E27396" />
<meta name="color-scheme" content="light dark" />
<meta name="robots" content="all" />
@ -71,7 +73,7 @@
<header class="header">
<div class="header-wrapper container">
<div class="logo-wrapper">
<span class="logo-wrapper__logo">Wavelovers</span>
<span class="logo-wrapper__logo" translate="no">Wavelovers</span>
</div>
<nav class="menu-wrapper">
<ul class="navigation">
@ -139,7 +141,7 @@
<span class="annotation__text">This site is open source. </span><a href="https://github.com/eugene-serb/wavelovers/" target="_blank">Improve this page.</a>
</div>
<div class="annotation created-by">
<span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank">Eugene Serb</a>
<span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank" translate="no">Eugene Serb</a>
</div>
</div>
</footer>

View File

@ -6,6 +6,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#EA9AB2" />
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#E27396" />
<meta name="color-scheme" content="light dark" />
<meta name="robots" content="all" />
@ -77,7 +79,7 @@
<header class="header">
<div class="header-wrapper container">
<div class="logo-wrapper">
<span class="logo-wrapper__logo">Wavelovers</span>
<span class="logo-wrapper__logo" translate="no">Wavelovers</span>
</div>
<nav class="menu-wrapper">
<ul class="navigation">
@ -100,6 +102,7 @@
<main class="page container">
<h1 class="visually-hidden">Wavelovers</h1>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="app" v-cloak></div>
</main>
@ -110,7 +113,7 @@
<span class="annotation__text">This site is open source. </span><a href="https://github.com/eugene-serb/wavelovers/" target="_blank">Improve this page.</a>
</div>
<div class="annotation created-by">
<span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank">Eugene Serb</a>
<span class="annotation__text">Created by</span><a href="https://eugene-serb.github.io/" target="_blank" translate="no">Eugene Serb</a>
</div>
</div>
</footer>

View File

@ -3,18 +3,18 @@
"short_name": "Wavelovers",
"icons": [
{
"src": "https://eugene-serb.github.io/wavelovers/img/android-chrome-192x192.png",
"src": "https://wavelovers.ru/img/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "https://eugene-serb.github.io/wavelovers/img/android-chrome-512x512.png",
"src": "https://wavelovers.ru/img/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"theme_color": "#EFCFE3",
"background_color": "#EFCFE3",
"theme_color": "#EA9AB2",
"background_color": "#EA9AB2",
"display": "standalone"
}

View File

@ -2,19 +2,19 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://wavelovers.ru/</loc>
<lastmod>2022-07-14</lastmod>
<lastmod>2022-07-17</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://wavelovers.ru/about.html</loc>
<lastmod>2022-07-14</lastmod>
<lastmod>2022-07-17</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://wavelovers.ru/faq.html</loc>
<lastmod>2022-07-14</lastmod>
<lastmod>2022-07-17</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>

View File

@ -2,7 +2,7 @@
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://wavelovers.ru/sitemap-internal.xml</loc>
<lastmod>2022-07-14</lastmod>
<lastmod>2022-07-17</lastmod>
</sitemap>
</sitemapindex>

View File

@ -32,7 +32,7 @@
},
methods: {
change(index: number): void {
this.$emit('change', index);
this.$emit('change', index as number);
},
},
});

View File

@ -32,7 +32,7 @@
},
methods: {
change(index: number): void {
this.$emit('change', index);
this.$emit('change', index as number);
},
},
});

View File

@ -1 +1 @@
declare module 'Vibrator'
declare module 'Vibrator';

View File

@ -1,17 +1,21 @@
interface IPatternUnit {
export type TPattern = {
pattern: TPatternUnit[];
}
export type TPatternUnit = {
startDelay: number,
duration: number,
weakMagnitude: number,
strongMagnitude: number,
}
interface IVibrationActuator {
export interface IVibrationActuator {
type: string;
reset(): void;
playEffect(mode: string, pattern: IPatternUnit): void;
playEffect(mode: string, pattern: TPatternUnit): void;
}
interface IGamepad {
export interface IGamepad {
id: string;
index: number;
timestamp: number;
@ -19,24 +23,24 @@ interface IGamepad {
vibrationActuator: IVibrationActuator;
}
interface IVibrator {
export interface IVibrator {
readonly id: number,
readonly canVibrate: boolean;
isVibrating: boolean;
unit: IGamepad;
pattern: IPatternUnit[];
pattern: TPatternUnit[];
update(): void;
reset(): void;
vibrate(pattern: IPatternUnit[]): void;
vibrate(pattern: TPatternUnit[]): void;
sleep(ms: number): Promise<number>;
}
export default class Vibrator implements IVibrator {
export class Vibrator implements IVibrator {
readonly id: number;
readonly canVibrate: boolean;
isVibrating: boolean;
unit: IGamepad;
pattern: IPatternUnit[];
pattern: TPatternUnit[];
constructor(unit: IGamepad) {
this.unit = unit;
@ -56,7 +60,7 @@ export default class Vibrator implements IVibrator {
this.unit.vibrationActuator.reset();
}
async vibrate(pattern: IPatternUnit[]) {
async vibrate(pattern: TPatternUnit[]) {
this.isVibrating = true;
this.pattern = pattern;
@ -75,5 +79,4 @@ export default class Vibrator implements IVibrator {
sleep(ms: number): Promise<number> {
return new Promise(resolve => setTimeout(resolve, ms));
}
}
}

View File

@ -17,44 +17,12 @@
import PatternList from '@/components/PatternList.vue';
import GamepadList from '@/components/GamepadList.vue';
import MessageItem from '@/components/MessageItem.vue';
import Vibrator from '@/components/Vibrator';
interface IVibrationActuator {
type: string;
reset(): void;
playEffect(mode: string, pattern: IPatternUnit): void;
}
interface IGamepad {
id: string;
index: number;
timestamp: number;
connected: boolean;
vibrationActuator: IVibrationActuator;
}
import { Vibrator, IGamepad, TPattern, TPatternUnit } from '@/components/Vibrator';
interface Event {
gamepad: IGamepad | any;
}
interface IPattern {
pattern: IPatternUnit[];
}
interface IPatternUnit {
startDelay: number,
duration: number,
weakMagnitude: number,
strongMagnitude: number,
}
interface IVibrator {
unit: IGamepad;
update(): void;
reset(): void;
vibrate(pattern: IPatternUnit[]): void;
}
export default defineComponent({
name: 'WaveloversApp',
components: {
@ -64,8 +32,8 @@
},
data: () => {
return {
gamepads: [] as IVibrator[],
patterns: [] as IPattern[],
gamepads: [] as Vibrator[],
patterns: [] as TPattern[],
isActive: false,
mode: 0,
};
@ -96,14 +64,14 @@
this.gamepads.push(new Vibrator(event.gamepad));
}
},
deleteGamepad(event: Event) {
deleteGamepad(event: Event): void {
this.gamepads.forEach((gamepad, index) => {
if (gamepad.unit.id === event.gamepad.id) {
this.gamepads.splice(index, 1);
}
});
},
change(index: number) {
change(index: number): void {
if (this.mode === index) {
this.isActive = !this.isActive;
this.reset();
@ -116,12 +84,12 @@
this.vibrate();
}
},
vibrate() {
vibrate(): void {
this.gamepads.forEach(gamepad => {
gamepad.vibrate(this.patterns[this.mode].pattern);
gamepad.vibrate(this.patterns[this.mode].pattern as TPatternUnit[]);
});
},
reset() {
reset(): void {
this.gamepads.forEach(gamepad => {
gamepad.reset();
});