Merge pull request #1023 from redbirdly/patch-4

This commit is contained in:
slweeb 2025-02-22 09:40:12 -05:00 committed by GitHub
commit 4a77e4aca1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 125 additions and 125 deletions

View File

@ -12,35 +12,35 @@ cc_settingsTab.registerSettings("OverHeating", cc_setting1);
settingsManager.registerTab(cc_settingsTab); settingsManager.registerTab(cc_settingsTab);
var colorPalette_4bit = [ var colorPalette_4bit = [
"#101820", "#37175F", "#5F1717", "#6F175F", "#101820", "#37175F", "#5F1717", "#6F175F",
"#005F00", "#1563BF", "#7F401A", "#525252", "#005F00", "#1563BF", "#7F401A", "#525252",
"#8F8F8F", "#EE8822", "#FF3027", "#FF47FF", "#8F8F8F", "#EE8822", "#FF3027", "#FF47FF",
"#58E618", "#27FFDF", "#FFFF27", "#FFFFFF" "#58E618", "#27FFDF", "#FFFF27", "#FFFFFF"
]; ];
function hueLerp(value) { function hueLerp(value) {
// Clamp the value between -50 and 400 // Clamp the value between -50 and 400
if (value < -50) value = -50; if (value < -50) value = -50;
if (value > 400) value = 400; if (value > 400) value = 400;
let r, g, b; let r, g, b;
if (value <= 300) { if (value <= 300) {
// Interpolate between blue and red // Interpolate between blue and red
let t = (value + 50) / 350; // Normalize value from -50 to 300 to a 0-1 range let t = (value + 50) / 350; // Normalize value from -50 to 300 to a 0-1 range
r = Math.round(255 * t); r = Math.round(255 * t);
g = 0; g = 0;
b = Math.round(255 * (1 - t)); b = Math.round(255 * (1 - t));
} else { } else {
// Interpolate between red and white // Interpolate between red and white
let t = (value - 300) / 100; // Normalize value from 300 to 400 to a 0-1 range let t = (value - 300) / 100; // Normalize value from 300 to 400 to a 0-1 range
r = 255; r = 255;
g = Math.round(255 * t); g = Math.round(255 * t);
b = Math.round(255 * t); b = Math.round(255 * t);
} }
// Convert RGB values to a hex string // Convert RGB values to a hex string
return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase(); return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1).toUpperCase();
} }
function cc_rgbToArray(colorString) { function cc_rgbToArray(colorString) {
@ -76,7 +76,7 @@ function cc_rgbToArray(colorString) {
} }
function cc_arrayToRgbString(rgbArray) { function cc_arrayToRgbString(rgbArray) {
return `rgb(${rgbArray.join(', ')})`; return `rgb(${rgbArray.join(', ')})`;
} }
function cc_scaleList(numbers, scale) { function cc_scaleList(numbers, scale) {
@ -220,58 +220,58 @@ function setPin(pixel, pins, index, value, rotation=pixel.circuitRotation) {
// Circuits // Circuits
elements.four_bit_selector_circuit = { elements.four_bit_selector_circuit = {
cc_stableTick: function(pixel) { cc_stableTick: function(pixel) {
var pins = [ var pins = [
// First 4-bit input (A) // First 4-bit input (A)
[-1, -2, true], // A0 [-7, -2, true], // A0
[-3, -2, true], // A1 [-5, -2, true], // A1
[-5, -2, true], // A2 [-3, -2, true], // A2
[-7, -2, true], // A3 [-1, -2, true], // A3
// Second 4-bit input (B) // Second 4-bit input (B)
[7, -2, true], // B0 [1, -2, true], // B0
[5, -2, true], // B1 [3, -2, true], // B1
[3, -2, true], // B2 [5, -2, true], // B2
[1, -2, true], // B3 [7, -2, true], // B3
// Selection pin (Sel) // Selection pin (Sel)
[9, 0, true], // Selection (Sel) [9, 0, true], // Selection (Sel)
// Output (O) // Output (O)
[-3, 2, false], // O0 (centered) [-3, 2, false], // O0 (centered)
[-1, 2, false], // O1 (centered) [-1, 2, false], // O1 (centered)
[1, 2, false], // O2 (centered) [1, 2, false], // O2 (centered)
[3, 2, false], // O3 (centered) [3, 2, false], // O3 (centered)
]; ];
initializeCircuit(pixel, pins, 17, 3); initializeCircuit(pixel, pins, 17, 3);
// Read inputs // Read inputs
var A = [ var A = [
checkPin(pixel, pins, 0), checkPin(pixel, pins, 0),
checkPin(pixel, pins, 1), checkPin(pixel, pins, 1),
checkPin(pixel, pins, 2), checkPin(pixel, pins, 2),
checkPin(pixel, pins, 3) checkPin(pixel, pins, 3)
]; ];
var B = [ var B = [
checkPin(pixel, pins, 4), checkPin(pixel, pins, 4),
checkPin(pixel, pins, 5), checkPin(pixel, pins, 5),
checkPin(pixel, pins, 6), checkPin(pixel, pins, 6),
checkPin(pixel, pins, 7) checkPin(pixel, pins, 7)
]; ];
var Sel = checkPin(pixel, pins, 8); // Selection pin var Sel = checkPin(pixel, pins, 8); // Selection pin
// Select between A and B based on Sel // Select between A and B based on Sel
var output = Sel ? B : A; var output = Sel ? B : A;
// Output the selected 4-bit value // Output the selected 4-bit value
setPin(pixel, pins, 9, output[0]); // O0 setPin(pixel, pins, 9, output[0]); // O0
setPin(pixel, pins, 10, output[1]); // O1 setPin(pixel, pins, 10, output[1]); // O1
setPin(pixel, pins, 11, output[2]); // O2 setPin(pixel, pins, 11, output[2]); // O2
setPin(pixel, pins, 12, output[3]); // O3 setPin(pixel, pins, 12, output[3]); // O3
} }
}; };
elements.four_bit_enabler_circuit = { elements.four_bit_enabler_circuit = {
@ -404,13 +404,13 @@ elements.four_bit_randomizer_circuit = {
var tempVar = 0; var tempVar = 0;
elements.temperature_sensor = { elements.temperature_sensor = {
behavior: behaviors.WALL, behavior: behaviors.WALL,
onSelect: function() { onSelect: function() {
var answertemp = Number(prompt("Set your target temperature:",(tempVar||undefined))); var answertemp = Number(prompt("Set your target temperature:",(tempVar||undefined)));
if (!answertemp) { return } if (!answertemp) { return }
tempVar = answertemp; tempVar = answertemp;
}, },
hoverStat: function(pixel) { hoverStat: function(pixel) {
return `TargetTmp: {pixel.targetTemp}`; return `TargetTmp: {pixel.targetTemp}`;
}, },
cc_stableTick: function(pixel) { cc_stableTick: function(pixel) {
@ -1335,67 +1335,67 @@ elements.four_bit_adder_circuit = {
}; };
elements.four_bit_subtractor_circuit = { elements.four_bit_subtractor_circuit = {
cc_stableTick: function(pixel) { cc_stableTick: function(pixel) {
var pins = [ var pins = [
// First 4-bit number (A) // First 4-bit number (A)
[-1, -2, true], // A3 [-1, -2, true], // A3
[-3, -2, true], // A2 [-3, -2, true], // A2
[-5, -2, true], // A1 [-5, -2, true], // A1
[-7, -2, true], // A0 [-7, -2, true], // A0
// Second 4-bit number (B) // Second 4-bit number (B)
[7, -2, true], // B3 [7, -2, true], // B3
[5, -2, true], // B2 [5, -2, true], // B2
[3, -2, true], // B1 [3, -2, true], // B1
[1, -2, true], // B0 [1, -2, true], // B0
// Borrow-in (B_in) // Borrow-in (B_in)
[9, 0, true], // Borrow-in (B_in) [9, 0, true], // Borrow-in (B_in)
// Output difference (D) // Output difference (D)
[-1, 2, false], // D3 [-1, 2, false], // D3
[-3, 2, false], // D2 [-3, 2, false], // D2
[-5, 2, false], // D1 [-5, 2, false], // D1
[-7, 2, false], // D0 [-7, 2, false], // D0
[1, 2, false], // Borrow Out (B4) [1, 2, false], // Borrow Out (B4)
]; ];
initializeCircuit(pixel, pins, 17, 3); initializeCircuit(pixel, pins, 17, 3);
// Read inputs // Read inputs
var A = [ var A = [
checkPin(pixel, pins, 0), checkPin(pixel, pins, 0),
checkPin(pixel, pins, 1), checkPin(pixel, pins, 1),
checkPin(pixel, pins, 2), checkPin(pixel, pins, 2),
checkPin(pixel, pins, 3) checkPin(pixel, pins, 3)
]; ];
var B = [ var B = [
checkPin(pixel, pins, 4), checkPin(pixel, pins, 4),
checkPin(pixel, pins, 5), checkPin(pixel, pins, 5),
checkPin(pixel, pins, 6), checkPin(pixel, pins, 6),
checkPin(pixel, pins, 7) checkPin(pixel, pins, 7)
]; ];
var B_in = checkPin(pixel, pins, 8); // Borrow-in var B_in = checkPin(pixel, pins, 8); // Borrow-in
// Calculate the difference and borrow // Calculate the difference and borrow
var difference = []; var difference = [];
var borrow = B_in; var borrow = B_in;
for (var i = 0; i < 4; i++) { for (var i = 0; i < 4; i++) {
var bitDifference = A[i] - B[i] - borrow; var bitDifference = A[i] - B[i] - borrow;
difference[i] = (bitDifference + 2) % 2; // Current bit difference difference[i] = (bitDifference + 2) % 2; // Current bit difference
borrow = bitDifference < 0 ? 1 : 0; // Borrow for next bit borrow = bitDifference < 0 ? 1 : 0; // Borrow for next bit
} }
// Output the difference // Output the difference
setPin(pixel, pins, 9, difference[0]); // D0 setPin(pixel, pins, 9, difference[0]); // D0
setPin(pixel, pins, 10, difference[1]); // D1 setPin(pixel, pins, 10, difference[1]); // D1
setPin(pixel, pins, 11, difference[2]); // D2 setPin(pixel, pins, 11, difference[2]); // D2
setPin(pixel, pins, 12, difference[3]); // D3 setPin(pixel, pins, 12, difference[3]); // D3
setPin(pixel, pins, 13, borrow); // Borrow Out (B4) setPin(pixel, pins, 13, borrow); // Borrow Out (B4)
} }
}; };
function general_clock(speed, s2) { function general_clock(speed, s2) {
@ -1930,7 +1930,7 @@ document.addEventListener('keydown', function(event) {
} }
}); });
function drawCircuitExtras() { function drawCircuitExtras(ctx) {
if (elements[currentElement].isCircuitCore && elements[currentElement].previewSize) { if (elements[currentElement].isCircuitCore && elements[currentElement].previewSize) {
var circuitWidth = elements[currentElement].previewSize[0]; var circuitWidth = elements[currentElement].previewSize[0];
var circuitHeight = elements[currentElement].previewSize[1]; var circuitHeight = elements[currentElement].previewSize[1];
@ -1983,7 +1983,7 @@ function runLogicTick() {
} }
function stabilizeLogicGates() { function stabilizeLogicGates() {
var logicgatesElements = ["output","logic_wire","not_gate","and_gate","xor_gate","or_gate","nand_gate","nor_gate","nxor_gate","E2L_lever","E2L_button","L2E_constant","logic_transmitter","logic_receiver","logic_shock","logic_unshock"] var logicgatesElements = ["output","logic_wire","not_gate","and_gate","xor_gate","or_gate","nand_gate","nor_gate","nxor_gate","E2L_lever","E2L_button","L2E_constant","logic_shock","logic_unshock"]
for (var i = 0;i < logicgatesElements.length;i++) { for (var i = 0;i < logicgatesElements.length;i++) {
elements[logicgatesElements[i]].cc_stableTick = elements[logicgatesElements[i]].tick; elements[logicgatesElements[i]].cc_stableTick = elements[logicgatesElements[i]].tick;