Skip to content

Commit 4f09887

Browse files
committed
Refactor toggleButton and updateButtonState methods in main.js
1 parent d2dd191 commit 4f09887

File tree

1 file changed

+35
-105
lines changed

1 file changed

+35
-105
lines changed

main.js

Lines changed: 35 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -761,9 +761,37 @@ class PaybackRateMod {
761761
}
762762
}
763763

764+
765+
getButtonID(/** @type {string} */ config) {
766+
return `PaybackRateMod_${config}`;
767+
}
764768
/**
765-
* Adds an options menu to the game interface for the PaybackRateMod class.
769+
*
770+
* @param {string} config
771+
* @param {string} text
772+
* @returns
766773
*/
774+
toggleButton(config, text) {
775+
const name = this.getButtonID(config);
776+
const value = this.config[config];
777+
const button = document.createElement("a");
778+
button.id = name;
779+
button.classList.add("smallFancyButton", "prefButton", "option");
780+
this.updateButtonState(config, text, button);
781+
button.addEventListener("click", () => {
782+
this.config[config] = !this.config[config];
783+
PlaySound("snd/tick.mp3");
784+
this.updateButtonState(config, text, button);
785+
});
786+
return button;
787+
}
788+
789+
updateButtonState(config, text, button) {
790+
const value = this.config[config];
791+
button.classList.toggle("off", !value);
792+
button.textContent = `${text} ${value ? "On" : "Off"}`;
793+
}
794+
767795
sortingDiv() {
768796
/* Sorting */
769797
const sortingDiv = document.createElement("div");
@@ -789,7 +817,7 @@ class PaybackRateMod {
789817
bankingSecondsInput.style.width = "6em";
790818
bankingSecondsInput.id = "PaybackRateModBankingSecondsInput";
791819
bankingSecondsInput.value = this.config.bankingSeconds;
792-
bankingSecondsInput.onchange = bankingSecondsInput.onkeypress = bankingSecondsInput.onpaste = bankingSecondsInput.oninput = () => {
820+
bankingSecondsInput.onchange = bankingSecondsInput.onpaste = bankingSecondsInput.oninput = () => {
793821
bankingSecondsInput.value = bankingSecondsInput.value.replace(/[^0-9]/g, "");
794822
this.config.bankingSeconds = parseInt(bankingSecondsInput.value);
795823
};
@@ -824,12 +852,10 @@ class PaybackRateMod {
824852
updateTimeSlider.step = "100";
825853
updateTimeSlider.value = this.config.updateMS;
826854
updateTimeSlider.onchange = updateTimeSlider.oninput = () => {
855+
PlaySound('snd/tick.mp3');
827856
this.config.updateMS = parseInt(updateTimeSlider.value);
828857
l("PaybackRateMod_UpdateMSValue").innerHTML = this.config.updateMS + "ms";
829858
}
830-
updateTimeSlider.onmouseup = () => {
831-
PlaySound('snd/tick.mp3');
832-
};
833859

834860
const intervalBoxDiv = document.createElement("div");
835861
intervalBoxDiv.classList.add("sliderBox");
@@ -867,6 +893,10 @@ class PaybackRateMod {
867893
});
868894
return colorPickerDiv;
869895
}
896+
897+
/**
898+
* Adds an options menu to the game interface for the PaybackRateMod class.
899+
*/
870900
addOptionsMenu() {
871901
const body = document.createElement("div");
872902
body.classList.add("listing");
@@ -881,106 +911,6 @@ class PaybackRateMod {
881911
CCSE.AppendCollapsibleOptionsMenu(this.displayname, body);
882912
}
883913

884-
getButtonID(/** @type {string} */ config) {
885-
return `PaybackRateMod_${config}`;
886-
}
887-
/**
888-
*
889-
* @param {string} config
890-
* @param {string} text
891-
* @returns
892-
*/
893-
toggleButton(config, text) {
894-
const name = this.getButtonID(config);
895-
const callback = `paybackRateMod.toggleButtonCallback('${config}', '${text}');`
896-
const value = this.config[config];
897-
const button = document.createElement("a");
898-
button.classList.add("smallFancyButton", "prefButton");
899-
button.classList.toggle("option", value);
900-
button.classList.toggle("off", !value);
901-
button.id = name;
902-
button.setAttribute(Game.clickStr, callback);
903-
button.innerHTML = `${text} ${value ? "On" : "Off"}`;
904-
return button;
905-
}
906-
907-
/**
908-
* @param {string} config
909-
* @param {string} text
910-
*/
911-
toggleButtonCallback(config, text) {
912-
const value = !this.config[config];
913-
const buttonID = `PaybackRateMod_${config}`;
914-
this.config[config] = value;
915-
l(buttonID).innerHTML = value ? `${text} On` : `${text} Off`;
916-
l(buttonID).className = `smallFancyButton prefButton ${value ? "option" : "option off"}`;
917-
PlaySound("snd/tick.mp3");
918-
}
919-
920-
/**
921-
*
922-
* @param {string} config
923-
* @returns {string}
924-
*/
925-
numberInput(config) {
926-
const ID = `PaybackRateMod${config}Input`;
927-
const callback = `paybackRateMod.textInputCallback('${config}', '${ID}');`;
928-
const value = this.config[config];
929-
return `<input type="number" min="0" style="width:6em;" id="${ID}" value="${value}" onchange="${callback}" onkeypress="this.onchange();" onpaste="this.onchange();" oninput="this.onchange();">`;
930-
}
931-
932-
/**
933-
*
934-
* @param {string} config
935-
* @param {string} name
936-
* @param {number} min
937-
* @param {number} step
938-
* @returns {string}
939-
*/
940-
intervalInput(config, name, min = 500, max = 5000, step = 100) {
941-
const ID = `PaybackRateMod${config}Input`;
942-
const callback = `paybackRateMod.textInputCallback('${config}', '${ID}Slider');` +
943-
`l('${ID}RightText').innerHTML=l('${ID}Slider').value+'ms';`;
944-
const value = this.config[config];
945-
return `<div class="sliderBox">
946-
<div id="${ID}" style="float:left;" class="smallFancyButton">${name}</div>
947-
<div id="${ID}RightText" style="float:right;" class="smallFancyButton">${value}ms</div>
948-
<input id="${ID}Slider" class="slider" style="clear:both;" type="range" min="${min}" max="${max}" step="${step}" value="${value}" onchange="${callback}" oninput="this.onchange();">
949-
</div>`;
950-
}
951-
952-
/**
953-
* @param {string} config
954-
* @param {string} ID
955-
*/
956-
textInputCallback(config, ID) {
957-
l(ID).value = l(ID).value.replace(/[^0-9]/g, "");
958-
const value = l(ID).value;
959-
this.config[config] = parseInt(value);
960-
}
961-
962-
/**
963-
*
964-
* @param {string} config
965-
* @returns {string}
966-
*/
967-
colorPicker(config) {
968-
const pickerID = `PaybackRateMod${config}Picker`;
969-
const callback = `paybackRateMod.colorPickerCallback('${config}', '${pickerID}');`;
970-
const defaultColor = this.default_config[config];
971-
const reset = `paybackRateMod.config.${config}='${defaultColor}';l('${pickerID}').value='${defaultColor}';`;
972-
const value = this.config[config];
973-
return `<input type="color" id="${pickerID}" value=${value} oninput="${callback}"> <a class="option" ${Game.clickStr}="${reset}">Reset</a>`;
974-
}
975-
976-
/**
977-
* @param {string} config
978-
* @param {string} pickerID
979-
*/
980-
colorPickerCallback(config, pickerID) {
981-
const value = l(pickerID).value;
982-
this.config[config] = value;
983-
}
984914
};
985915

986916
// Load mod

0 commit comments

Comments
 (0)