118 lines
3.5 KiB
JavaScript
118 lines
3.5 KiB
JavaScript
/*
|
|
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);
|
|
|