BrowserLogic/js/main.js
2021-02-19 13:47:37 -08:00

145 lines
4.0 KiB
JavaScript

/*
MatCat BrowserLogic Simulator
*/
// get the canvas and get the engine object going
let lCanvasElement = document.getElementById("LogicPlane");
let logicEngine = new LogicEngine(lCanvasElement);
// 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_Link = document.getElementById("btn_Link");
btn_Link.addEventListener('click', function(evt) {
logicEngine.Link();
}, 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) {
let newAND = new LogicAND(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(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(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(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();
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();
newXNOR.X = 20;
newXNOR.Y = 20;
logicEngine.ActiveContainer.AddElement(newXNOR);
}, false);
let btn_AddBTN = document.getElementById("btn_AddBTN");
btn_AddBTN.addEventListener('click', function(evt) {
let newBTN = new inputButton();
newBTN.X = 20;
newBTN.Y = 20;
logicEngine.ActiveContainer.AddElement(newBTN);
}, false);
/*
let AND1 = new LogicAND(2);
AND1.X = 430;
AND1.Y = 70;
logicEngine.ActiveContainer.AddElement(AND1);
let OR1 = new LogicOR(6);
OR1.X = 220;
OR1.Y = 20;
OR1.addConnection(logicEngine.ActiveContainer,AND1,0);
logicEngine.ActiveContainer.AddElement(OR1);
let NAND1 = new LogicNAND(2);
NAND1.X = 220;
NAND1.Y = 140;
NAND1.addConnection(logicEngine.ActiveContainer,AND1,1);
logicEngine.ActiveContainer.AddElement(NAND1);
let AND2 = new LogicAND(2);
AND2.X = 630;
AND2.Y = 120;
AND1.addConnection(logicEngine.ActiveContainer,AND2,0);
logicEngine.ActiveContainer.AddElement(AND2);
let NOR1 = new LogicNOR(2);
NOR1.X = 430;
NOR1.Y = 250;
NOR1.addConnection(logicEngine.ActiveContainer,AND2,1);
logicEngine.ActiveContainer.AddElement(NOR1);
let Button1 = new inputButton();
Button1.X = 20;
Button1.Y = 20;
Button1.addConnection(logicEngine.ActiveContainer,OR1,1);
logicEngine.ActiveContainer.AddElement(Button1);
let Button2 = new inputButton();
Button2.X = 20;
Button2.Y = 130;
Button2.addConnection(logicEngine.ActiveContainer,NAND1,0);
logicEngine.ActiveContainer.AddElement(Button2);
let Button3 = new inputButton();
Button3.X = 20;
Button3.Y = 240;
Button3.addConnection(logicEngine.ActiveContainer,NAND1,1);
logicEngine.ActiveContainer.AddElement(Button3);
*/