mirror of
https://framagit.org/JonathanMM/sutom.git
synced 2024-06-07 16:32:33 +02:00
Ajout du retour haptique
This commit is contained in:
parent
d2f035b1ef
commit
965404a51c
|
@ -353,6 +353,7 @@ h1 {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 0.5em;
|
gap: 0.5em;
|
||||||
|
text-align: start;
|
||||||
}
|
}
|
||||||
|
|
||||||
#config-liste {
|
#config-liste {
|
||||||
|
|
|
@ -129,7 +129,30 @@ export default class ConfigurationPanel {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
contenu.appendChild(this.genererZoneExportSauvegarde());
|
contenu.appendChild(
|
||||||
|
this.genererConfigItem(
|
||||||
|
"Retour haptique (si votre navigateur est compatique)",
|
||||||
|
[
|
||||||
|
{ value: false.toString(), label: "Non" },
|
||||||
|
{ value: true.toString(), label: "Oui" },
|
||||||
|
],
|
||||||
|
(config.haptique ?? Configuration.Default.haptique).toString(),
|
||||||
|
(event: Event) => {
|
||||||
|
event.stopPropagation();
|
||||||
|
let haptique = (event.target as HTMLSelectElement).value === true.toString();
|
||||||
|
|
||||||
|
Sauvegardeur.sauvegarderConfig({
|
||||||
|
...(Sauvegardeur.chargerConfig() ?? Configuration.Default),
|
||||||
|
haptique,
|
||||||
|
});
|
||||||
|
|
||||||
|
// On redessine le clavier pour la prise en compte de l'option
|
||||||
|
if (this._input) this._input.dessinerClavier(config.disposition ?? Configuration.Default.disposition);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (Sauvegardeur.chargerSauvegardeStats()) contenu.appendChild(this.genererZoneExportSauvegarde());
|
||||||
|
|
||||||
this._panelManager.setContenuHtmlElement(titre, contenu);
|
this._panelManager.setContenuHtmlElement(titre, contenu);
|
||||||
this._panelManager.setClasses(["config-panel"]);
|
this._panelManager.setClasses(["config-panel"]);
|
||||||
|
|
|
@ -10,6 +10,7 @@ export default class Configuration {
|
||||||
volumeSon: VolumeSon.Normal,
|
volumeSon: VolumeSon.Normal,
|
||||||
disposition: ClavierDisposition.Azerty,
|
disposition: ClavierDisposition.Azerty,
|
||||||
theme: Theme.Sombre,
|
theme: Theme.Sombre,
|
||||||
|
haptique: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
hasAudio: boolean = false;
|
hasAudio: boolean = false;
|
||||||
|
@ -18,4 +19,5 @@ export default class Configuration {
|
||||||
volumeSon: VolumeSon = VolumeSon.Normal;
|
volumeSon: VolumeSon = VolumeSon.Normal;
|
||||||
disposition: ClavierDisposition = ClavierDisposition.Azerty;
|
disposition: ClavierDisposition = ClavierDisposition.Azerty;
|
||||||
theme: Theme = Theme.Sombre;
|
theme: Theme = Theme.Sombre;
|
||||||
|
haptique: boolean = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { LettreStatut } from "./entites/lettreStatut";
|
||||||
import { ClavierDisposition } from "./entites/clavierDisposition";
|
import { ClavierDisposition } from "./entites/clavierDisposition";
|
||||||
import Configuration from "./entites/configuration";
|
import Configuration from "./entites/configuration";
|
||||||
import Dictionnaire from "./dictionnaire";
|
import Dictionnaire from "./dictionnaire";
|
||||||
|
import Sauvegardeur from "./sauvegardeur";
|
||||||
|
|
||||||
export enum ContexteBloquage {
|
export enum ContexteBloquage {
|
||||||
ValidationMot,
|
ValidationMot,
|
||||||
|
@ -18,8 +19,9 @@ export default class Input {
|
||||||
|
|
||||||
private _longueurMot: number;
|
private _longueurMot: number;
|
||||||
private _motSaisi: string;
|
private _motSaisi: string;
|
||||||
private _estBloque: Array<ContexteBloquage>; // TODO : Faire un dictionnaire pour savoir qui bloque, pour que si c'est bloqué par finDePartie, et que la fermeture de panel essaye de débloquer, ça ne fasse rien
|
private _estBloque: Array<ContexteBloquage>;
|
||||||
private _resultats: Array<Array<LettreResultat>>;
|
private _resultats: Array<Array<LettreResultat>>;
|
||||||
|
private _haptiqueActive: boolean;
|
||||||
|
|
||||||
public constructor(gestionnaire: Gestionnaire, configuration: Configuration, longueurMot: number, premiereLettre: string) {
|
public constructor(gestionnaire: Gestionnaire, configuration: Configuration, longueurMot: number, premiereLettre: string) {
|
||||||
this._grille = document.getElementById("grille") as HTMLElement;
|
this._grille = document.getElementById("grille") as HTMLElement;
|
||||||
|
@ -30,6 +32,7 @@ export default class Input {
|
||||||
this._motSaisi = "";
|
this._motSaisi = "";
|
||||||
this._estBloque = new Array<ContexteBloquage>();
|
this._estBloque = new Array<ContexteBloquage>();
|
||||||
this._resultats = new Array<Array<LettreResultat>>();
|
this._resultats = new Array<Array<LettreResultat>>();
|
||||||
|
this._haptiqueActive = configuration.haptique ?? Configuration.Default.haptique;
|
||||||
|
|
||||||
this.ajouterEvenementClavierPhysique();
|
this.ajouterEvenementClavierPhysique();
|
||||||
|
|
||||||
|
@ -73,6 +76,7 @@ export default class Input {
|
||||||
|
|
||||||
this._inputArea.appendChild(ligneDiv);
|
this._inputArea.appendChild(ligneDiv);
|
||||||
}
|
}
|
||||||
|
this._haptiqueActive = Sauvegardeur.chargerConfig()?.haptique ?? Configuration.Default.haptique;
|
||||||
this.ajouterEvenementClavierVirtuel();
|
this.ajouterEvenementClavierVirtuel();
|
||||||
this.remettrePropositions();
|
this.remettrePropositions();
|
||||||
}
|
}
|
||||||
|
@ -112,6 +116,7 @@ export default class Input {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
let div = event.currentTarget;
|
let div = event.currentTarget;
|
||||||
if (!div) return;
|
if (!div) return;
|
||||||
|
if (this._haptiqueActive && window.navigator.vibrate) window.navigator.vibrate(75);
|
||||||
let lettre = (div as HTMLElement).dataset["lettre"];
|
let lettre = (div as HTMLElement).dataset["lettre"];
|
||||||
if (lettre === undefined) {
|
if (lettre === undefined) {
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue