/* MatCat BrowserLogic Simulator */ let Version = "0.2.12"; let spanVersion = document.getElementById("version"); spanVersion.innerText = Version; // get the canvas and get the engine object going let lCanvasElement = document.getElementById("LogicPlane"); let logicEngine = new LogicEngine(lCanvasElement); // Get the game Tick going, this will be 4ms for now which is the fastest that is supported // by the HTML5 spec! setInterval(logicEngine.Scheduler.Tick.bind(logicEngine.Scheduler), 4); // Sadly this doesn't work well inside of the class so we will do it here real fast window.addEventListener('resize', function(evt) { logicEngine.Resize(evt); }, false); window.addEventListener('keydown', function(evt) { logicEngine.Key_Press(evt); }, false); lCanvasElement.addEventListener('mousedown', function(evt) { logicEngine.Mouse_Down(evt); }, false); lCanvasElement.addEventListener('mouseup', function(evt) { logicEngine.Mouse_Up(evt); }, false); window.addEventListener('mousemove', function(evt) { logicEngine.Mouse_Move(evt); }, false); // Get the engine going logicEngine.StartEngine(); // Setup interface buttons let btn_CloseWelcome = document.getElementById("btn_CloseWelcome"); btn_CloseWelcome.addEventListener('click', function(evt) { let WelcomeScreen = document.getElementById("WelcomeWindow"); let DarkOverlay = document.getElementById("darkout-overlay"); WelcomeScreen.style.display = "none"; DarkOverlay.style.display = "none"; let chk_dontDisplayWelcome = document.getElementById("chk_dontDisplayWelcome"); if (chk_dontDisplayWelcome.checked) { setCookie("hidewelcomescreen","true",3600); } }, false); let btn_Delete = document.getElementById("btn_Delete"); btn_Delete.addEventListener('click', function(evt) { logicEngine.Key_Press({key: "Delete"}); }, false); let btn_AddAND = document.getElementById("btn_AddAND"); btn_AddAND.addEventListener('click', function(evt) { addElement(LogicAND, [2]); }, false); let btn_AddNAND = document.getElementById("btn_AddNAND"); btn_AddNAND.addEventListener('click', function(evt) { addElement(LogicNAND, [2]); }, false); let btn_AddOR = document.getElementById("btn_AddOR"); btn_AddOR.addEventListener('click', function(evt) { addElement(LogicOR, [2]); }, false); let btn_AddNOR = document.getElementById("btn_AddNOR"); btn_AddNOR.addEventListener('click', function(evt) { addElement(LogicNOR, [2]); }, false); let btn_AddXOR = document.getElementById("btn_AddXOR"); btn_AddXOR.addEventListener('click', function(evt) { addElement(LogicXOR,[]); }, false); let btn_AddXNOR = document.getElementById("btn_AddXNOR"); btn_AddXNOR.addEventListener('click', function(evt) { addElement(LogicXNOR,[]); }, false); btn_AddNOT.addEventListener('click', function(evt) { addElement(LogicNOT,[]); }, false); let btn_AddSWITCH = document.getElementById("btn_AddSWITCH"); btn_AddSWITCH.addEventListener('click', function(evt) { addElement(InputSwitch,[]); }, false); let btn_AddBTN = document.getElementById("btn_AddBTN"); btn_AddBTN.addEventListener('click', function(evt) { addElement(InputButton,[]); }, false); let btn_AddCLK = document.getElementById("btn_AddCLK"); btn_AddCLK.addEventListener('click', function(evt) { let clk = addElement(ClockElement,[]); logicEngine.Scheduler.addTask(clk.Task); }, false); let btn_AddPulse = document.getElementById("btn_AddPULSE"); btn_AddPulse.addEventListener('click', function(evt) { let pulse = addElement(PulseElement,[]); logicEngine.Scheduler.addTask(pulse.Task); }, false); let btn_AddDelay = document.getElementById("btn_AddDELAY"); btn_AddDelay.addEventListener('click', function(evt) { let delay = addElement(DelayElement,[]); logicEngine.Scheduler.addTask(delay.Task); }, false); function CheckForWelcomeCookie() { if (getCookie("hidewelcomescreen")) { let WelcomeScreen = document.getElementById("WelcomeWindow"); let DarkOverlay = document.getElementById("darkout-overlay"); WelcomeScreen.style.display = "none"; DarkOverlay.style.display = "none"; } } CheckForWelcomeCookie();