/* MatCat BrowserLogic Simulator */ let Version = "0.2.4"; 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); lCanvasElement.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); lCanvasElement.addEventListener('mousemove', function(evt) { logicEngine.Mouse_Move(evt); }, false); // Get the engine going logicEngine.StartEngine(); // Setup interface buttons 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) { let newAND = new LogicAND(logicEngine,2); newAND.X = 20; newAND.Y = 20; logicEngine.ActiveContainer.AddElement(newAND); }, false); let btn_AddNAND = document.getElementById("btn_AddNAND"); btn_AddNAND.addEventListener('click', function(evt) { let newNAND = new LogicNAND(logicEngine,2); newNAND.X = 20; newNAND.Y = 20; logicEngine.ActiveContainer.AddElement(newNAND); }, false); let btn_AddOR = document.getElementById("btn_AddOR"); btn_AddOR.addEventListener('click', function(evt) { let newOR = new LogicOR(logicEngine,2); newOR.X = 20; newOR.Y = 20; logicEngine.ActiveContainer.AddElement(newOR); }, false); let btn_AddNOR = document.getElementById("btn_AddNOR"); btn_AddNOR.addEventListener('click', function(evt) { let newNOR = new LogicNOR(logicEngine,2); newNOR.X = 20; newNOR.Y = 20; logicEngine.ActiveContainer.AddElement(newNOR); }, false); let btn_AddXOR = document.getElementById("btn_AddXOR"); btn_AddXOR.addEventListener('click', function(evt) { let newXOR = new LogicXOR(logicEngine); newXOR.X = 20; newXOR.Y = 20; logicEngine.ActiveContainer.AddElement(newXOR); }, false); let btn_AddXNOR = document.getElementById("btn_AddXNOR"); btn_AddXNOR.addEventListener('click', function(evt) { let newXNOR = new LogicXNOR(logicEngine); newXNOR.X = 20; newXNOR.Y = 20; logicEngine.ActiveContainer.AddElement(newXNOR); }, false); btn_AddNOT.addEventListener('click', function(evt) { let newNOT = new LogicNOT(logicEngine); newNOT.X = 20; newNOT.Y = 20; logicEngine.ActiveContainer.AddElement(newNOT); }, false); let btn_AddSWITCH = document.getElementById("btn_AddSWITCH"); btn_AddSWITCH.addEventListener('click', function(evt) { let newSWITCH = new InputSwitch(logicEngine); newSWITCH.X = 20; newSWITCH.Y = 20; logicEngine.ActiveContainer.AddElement(newSWITCH); }, false); let btn_AddCLK = document.getElementById("btn_AddCLK"); btn_AddCLK.addEventListener('click', function(evt) { let newCLK = new ClockElement(logicEngine); newCLK.X = 20; newCLK.Y = 20; logicEngine.ActiveContainer.AddElement(newCLK); logicEngine.Scheduler.addTask(newCLK.Task); }, false);