2021-09-28 13:57:56 +00:00
|
|
|
(function () {
|
|
|
|
return (function (back, inApp, ret) {
|
2021-10-10 15:26:35 +00:00
|
|
|
const isBangle1 = process.env.BOARD === 'BANGLEJS'
|
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
function fillSettingsWithDefaults(settings) {
|
2021-10-10 15:26:35 +00:00
|
|
|
if (isBangle1) {
|
|
|
|
if (settings.mirrorScoreButtons == null) {
|
|
|
|
settings.mirrorScoreButtons = false;
|
|
|
|
}
|
|
|
|
}
|
2021-09-28 13:57:56 +00:00
|
|
|
if (settings.winSets == null) {
|
|
|
|
settings.winSets = 2;
|
|
|
|
}
|
|
|
|
if (settings.setsPerPage == null) {
|
|
|
|
settings.setsPerPage = 5;
|
|
|
|
}
|
|
|
|
if (settings.winScore == null) {
|
|
|
|
settings.winScore = 21;
|
|
|
|
}
|
|
|
|
if (settings.enableTwoAhead == null) {
|
|
|
|
settings.enableTwoAhead = true;
|
|
|
|
}
|
|
|
|
if (settings.enableMaxScore == null) {
|
|
|
|
settings.enableMaxScore = true;
|
|
|
|
}
|
|
|
|
if (settings.maxScore == null) {
|
|
|
|
settings.maxScore = 30;
|
|
|
|
}
|
|
|
|
if (settings.enableTennisScoring == null) {
|
|
|
|
settings.enableTennisScoring = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (settings.enableMaxScoreTiebreak == null) {
|
|
|
|
settings.enableMaxScoreTiebreak = false;
|
|
|
|
}
|
|
|
|
if (settings.maxScoreTiebreakWinScore == null) {
|
|
|
|
settings.maxScoreTiebreakWinScore = 6;
|
|
|
|
}
|
|
|
|
if (settings.maxScoreTiebreakEnableTwoAhead == null) {
|
|
|
|
settings.maxScoreTiebreakEnableTwoAhead = true;
|
|
|
|
}
|
|
|
|
if (settings.maxScoreTiebreakEnableMaxScore == null) {
|
|
|
|
settings.maxScoreTiebreakEnableMaxScore = false;
|
|
|
|
}
|
|
|
|
if (settings.maxScoreTiebreakMaxScore == null) {
|
|
|
|
settings.maxScoreTiebreakMaxScore = 15;
|
|
|
|
}
|
|
|
|
|
|
|
|
return settings;
|
2021-09-28 13:47:19 +00:00
|
|
|
}
|
2021-09-27 23:03:13 +00:00
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
const fileName = 'score.json';
|
|
|
|
let settings = require('Storage').readJSON(fileName, 1) || {};
|
|
|
|
const offon = ['No', 'Yes'];
|
2021-09-27 23:03:13 +00:00
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
let presetsFileName = 'score.presets.json';
|
|
|
|
let presets = require('Storage').readJSON(presetsFileName);
|
|
|
|
let presetNames = Object.keys(presets);
|
2021-09-27 23:03:13 +00:00
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
let changed = false;
|
2021-09-27 23:03:13 +00:00
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
function save(settings) {
|
|
|
|
require('Storage').writeJSON(fileName, settings);
|
2021-09-27 23:03:13 +00:00
|
|
|
}
|
2021-10-10 20:08:20 +00:00
|
|
|
|
2021-10-10 15:41:54 +00:00
|
|
|
function setAndSave(key, value, notChanged) {
|
|
|
|
if (!notChanged) {
|
|
|
|
changed = true;
|
|
|
|
}
|
2021-09-28 13:57:56 +00:00
|
|
|
settings[key] = value;
|
|
|
|
if (key === 'winScore' && settings.maxScore < value) {
|
|
|
|
settings.maxScore = value;
|
|
|
|
}
|
|
|
|
save(settings);
|
2021-09-27 23:03:13 +00:00
|
|
|
}
|
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
settings = fillSettingsWithDefaults(settings);
|
2021-09-27 23:03:13 +00:00
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
if (ret) {
|
|
|
|
return settings;
|
2021-09-27 23:09:13 +00:00
|
|
|
}
|
2021-09-28 13:57:56 +00:00
|
|
|
|
|
|
|
const presetMenu = function (appMenuBack) {
|
|
|
|
let ret = function (changed) { E.showMenu(appMenu(appMenuBack, changed ? 2 : null)); };
|
|
|
|
let m = {
|
|
|
|
'': {'title': 'Score Presets'},
|
|
|
|
'< Back': ret,
|
|
|
|
};
|
|
|
|
for (let i = 0; i < presetNames.length; i++) {
|
|
|
|
m[presetNames[i]] = (function (i) {
|
|
|
|
return function() {
|
|
|
|
changed = true;
|
|
|
|
settings = fillSettingsWithDefaults(presets[presetNames[i]]);
|
|
|
|
save(settings);
|
|
|
|
ret(true);
|
|
|
|
};
|
|
|
|
})(i);
|
|
|
|
}
|
|
|
|
|
|
|
|
return m;
|
2021-09-27 23:03:13 +00:00
|
|
|
};
|
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
const appMenu = function (back, selected) {
|
|
|
|
let m = {};
|
|
|
|
|
|
|
|
m[''] = {'title': 'Score Settings'};
|
|
|
|
if (selected != null) {
|
|
|
|
m[''].selected = selected;
|
|
|
|
}
|
|
|
|
m['< Back'] = function () { back(settings, changed); };
|
|
|
|
m['Presets'] = function () { E.showMenu(presetMenu(back)); };
|
2021-10-10 15:26:35 +00:00
|
|
|
if (isBangle1) {
|
|
|
|
m['Mirror Buttons'] = {
|
|
|
|
value: settings.mirrorScoreButtons,
|
|
|
|
format: m => offon[~~m],
|
2021-10-10 15:41:54 +00:00
|
|
|
onchange: m => setAndSave('mirrorScoreButtons', m, true),
|
2021-10-10 15:26:35 +00:00
|
|
|
};
|
|
|
|
}
|
2021-09-28 13:57:56 +00:00
|
|
|
m['Sets to win'] = {
|
|
|
|
value: settings.winSets,
|
|
|
|
min:1,
|
|
|
|
onchange: m => setAndSave('winSets', m),
|
|
|
|
};
|
|
|
|
m['Sets per page'] = {
|
|
|
|
value: settings.setsPerPage,
|
|
|
|
min:1,
|
|
|
|
max:5,
|
|
|
|
onchange: m => setAndSave('setsPerPage', m),
|
|
|
|
};
|
|
|
|
m['Score to win'] = {
|
|
|
|
value: settings.winScore,
|
|
|
|
min:1,
|
2021-09-28 19:56:33 +00:00
|
|
|
max: 999,
|
2021-09-28 13:57:56 +00:00
|
|
|
onchange: m => setAndSave('winScore', m),
|
|
|
|
};
|
|
|
|
m['2-point lead'] = {
|
|
|
|
value: settings.enableTwoAhead,
|
|
|
|
format: m => offon[~~m],
|
|
|
|
onchange: m => setAndSave('enableTwoAhead', m),
|
|
|
|
};
|
|
|
|
m['Maximum score?'] = {
|
|
|
|
value: settings.enableMaxScore,
|
|
|
|
format: m => offon[~~m],
|
|
|
|
onchange: m => setAndSave('enableMaxScore', m),
|
|
|
|
};
|
|
|
|
m['Maximum score'] = {
|
|
|
|
value: settings.maxScore,
|
|
|
|
min: 1,
|
2021-09-28 19:56:33 +00:00
|
|
|
max: 999,
|
2021-09-28 13:57:56 +00:00
|
|
|
onchange: m => setAndSave('maxScore', m),
|
|
|
|
};
|
|
|
|
m['Tennis scoring'] = {
|
|
|
|
value: settings.enableTennisScoring,
|
|
|
|
format: m => offon[~~m],
|
|
|
|
onchange: m => setAndSave('enableTennisScoring', m),
|
|
|
|
};
|
|
|
|
m['TB sets?'] = {
|
|
|
|
value: settings.enableMaxScoreTiebreak,
|
|
|
|
format: m => offon[~~m],
|
|
|
|
onchange: m => setAndSave('enableMaxScoreTiebreak', m),
|
|
|
|
};
|
|
|
|
m['TB Score to win'] = {
|
|
|
|
value: settings.maxScoreTiebreakWinScore,
|
|
|
|
onchange: m => setAndSave('maxScoreTiebreakWinScore', m),
|
|
|
|
};
|
|
|
|
m['TB 2-point lead'] = {
|
|
|
|
value: settings.maxScoreTiebreakEnableTwoAhead,
|
|
|
|
format: m => offon[~~m],
|
|
|
|
onchange: m => setAndSave('maxScoreTiebreakEnableTwoAhead', m),
|
|
|
|
};
|
|
|
|
m['TB max score?'] = {
|
|
|
|
value: settings.maxScoreTiebreakEnableMaxScore,
|
|
|
|
format: m => offon[~~m],
|
|
|
|
onchange: m => setAndSave('maxScoreTiebreakEnableMaxScore', m),
|
|
|
|
};
|
|
|
|
m['TB max score'] = {
|
|
|
|
value: settings.maxScoreTiebreakMaxScore,
|
|
|
|
onchange: m => setAndSave('maxScoreTiebreakMaxScore', m),
|
|
|
|
};
|
|
|
|
|
|
|
|
return m;
|
2021-09-28 12:03:23 +00:00
|
|
|
};
|
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
const inAppMenu = function () {
|
|
|
|
let m = {
|
|
|
|
'': {'title': 'Score Menu'},
|
|
|
|
'< Back': function () { back(settings, changed); },
|
|
|
|
'Reset match': function () { back(settings, true); },
|
|
|
|
'End current set': function () { inApp('end_set'); back(settings, changed); },
|
|
|
|
'Configuration': function () { E.showMenu(appMenu(function () {
|
|
|
|
E.showMenu(inAppMenu());
|
|
|
|
})); },
|
|
|
|
};
|
|
|
|
|
|
|
|
return m;
|
|
|
|
};
|
2021-09-28 12:03:23 +00:00
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
if (inApp != null) {
|
|
|
|
E.showMenu(inAppMenu());
|
|
|
|
} else {
|
|
|
|
E.showMenu(appMenu(back));
|
|
|
|
}
|
2021-10-10 20:08:20 +00:00
|
|
|
|
2021-09-28 13:57:56 +00:00
|
|
|
});
|
|
|
|
})();
|