154 lines
3.8 KiB
JavaScript
154 lines
3.8 KiB
JavaScript
/**********
|
|
* Config *
|
|
**********/
|
|
|
|
CM.SaveConfig = function(config) {
|
|
localStorage.setItem(CM.ConfigPrefix, JSON.stringify(config));
|
|
}
|
|
|
|
CM.LoadConfig = function() {
|
|
if (localStorage.getItem(CM.ConfigPrefix) != null) {
|
|
CM.Config = JSON.parse(localStorage.getItem(CM.ConfigPrefix));
|
|
|
|
// Check values
|
|
var mod = false;
|
|
for (var i in CM.ConfigDefault) {
|
|
if (typeof CM.Config[i] === 'undefined') {
|
|
mod = true;
|
|
CM.Config[i] = CM.ConfigDefault[i];
|
|
}
|
|
else if (i != 'StatsPref' && i != 'Colors') {
|
|
if (i.indexOf('SoundURL') == -1) {
|
|
if (!(CM.Config[i] > -1 && CM.Config[i] < CM.ConfigData[i].label.length)) {
|
|
mod = true;
|
|
CM.Config[i] = CM.ConfigDefault[i];
|
|
}
|
|
}
|
|
else { // Sound URLs
|
|
if (typeof CM.Config[i] != 'string') {
|
|
mod = true;
|
|
CM.Config[i] = CM.ConfigDefault[i];
|
|
}
|
|
}
|
|
}
|
|
else if (i == 'StatsPref') {
|
|
for (var j in CM.ConfigDefault.StatsPref) {
|
|
if (typeof CM.Config[i][j] === 'undefined' || !(CM.Config[i][j] > -1 && CM.Config[i][j] < 2)) {
|
|
mod = true;
|
|
CM.Config[i][j] = CM.ConfigDefault[i][j];
|
|
}
|
|
}
|
|
}
|
|
else { // Colors
|
|
for (var j in CM.ConfigDefault.Colors) {
|
|
if (typeof CM.Config[i][j] === 'undefined' || typeof CM.Config[i][j] != 'string') {
|
|
mod = true;
|
|
CM.Config[i][j] = CM.ConfigDefault[i][j];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (mod) CM.SaveConfig(CM.Config);
|
|
CM.Loop(); // Do loop once
|
|
for (var i in CM.ConfigDefault) {
|
|
if (i != 'StatsPref' && i != 'OptionsPref' && typeof CM.ConfigData[i].func !== 'undefined') {
|
|
CM.ConfigData[i].func();
|
|
}
|
|
}
|
|
}
|
|
else { // Default values
|
|
CM.RestoreDefault();
|
|
}
|
|
}
|
|
|
|
CM.RestoreDefault = function() {
|
|
CM.Config = {};
|
|
CM.SaveConfig(CM.ConfigDefault);
|
|
CM.LoadConfig();
|
|
Game.UpdateMenu();
|
|
}
|
|
|
|
CM.ToggleConfig = function(config) {
|
|
CM.ToggleConfigUp(config);
|
|
if (CM.ConfigData[config].toggle) {
|
|
if (CM.Config[config] == 0) {
|
|
l(CM.ConfigPrefix + config).className = 'option off';
|
|
}
|
|
else {
|
|
l(CM.ConfigPrefix + config).className = 'option';
|
|
}
|
|
}
|
|
}
|
|
|
|
CM.ToggleConfigUp = function(config) {
|
|
CM.Config[config]++;
|
|
if (CM.Config[config] == CM.ConfigData[config].label.length) {
|
|
CM.Config[config] = 0;
|
|
}
|
|
if (typeof CM.ConfigData[config].func !== 'undefined') {
|
|
CM.ConfigData[config].func();
|
|
}
|
|
l(CM.ConfigPrefix + config).innerHTML = CM.Disp.GetConfigDisplay(config);
|
|
CM.SaveConfig(CM.Config);
|
|
}
|
|
|
|
CM.ToggleConfigDown = function(config) {
|
|
CM.Config[config]--;
|
|
if (CM.Config[config] < 0) {
|
|
CM.Config[config] = CM.ConfigData[config].label.length - 1;
|
|
}
|
|
if (typeof CM.ConfigData[config].func !== 'undefined') {
|
|
CM.ConfigData[config].func();
|
|
}
|
|
l(CM.ConfigPrefix + config).innerHTML = CM.Disp.GetConfigDisplay(config);
|
|
CM.SaveConfig(CM.Config);
|
|
}
|
|
|
|
CM.ToggleStatsConfig = function(config) {
|
|
if (CM.Config.StatsPref[config] == 0) {
|
|
CM.Config.StatsPref[config]++;
|
|
}
|
|
else {
|
|
CM.Config.StatsPref[config]--;
|
|
}
|
|
CM.SaveConfig(CM.Config);
|
|
}
|
|
|
|
CM.ToggleOptionsConfig = function(config) {
|
|
if (CM.Config.OptionsPref[config] == 0) {
|
|
CM.Config.OptionsPref[config]++;
|
|
}
|
|
else {
|
|
CM.Config.OptionsPref[config]--;
|
|
}
|
|
CM.SaveConfig(CM.Config);
|
|
}
|
|
|
|
// Checks if the browsers has permissions to produce notifications
|
|
// Should be triggered when Config related to Notifications is toggled on
|
|
CM.CheckNotificationPermissions = function(ToggleOnOff) {
|
|
if (ToggleOnOff == 1) {
|
|
// Check if browser support Promise version of Notification Permissions
|
|
function checkNotificationPromise() {
|
|
try {
|
|
Notification.requestPermission().then();
|
|
} catch(e) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// Check if the browser supports notifications and which type
|
|
if (!('Notification' in window)) {
|
|
console.log("This browser does not support notifications.");
|
|
}
|
|
else {
|
|
if(checkNotificationPromise()) {
|
|
Notification.requestPermission().then();
|
|
}
|
|
else {
|
|
Notification.requestPermission();
|
|
}
|
|
}
|
|
}
|
|
} |