diff --git a/README.md b/README.md index a5ad85a..298323b 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,35 @@ -# logicGateSimulator2 +# Logic gate simulator -a better version of my logic gate simulator +This is a logic gate simulator made for infoeducatie 2019. + +## Getting started Check out the [demo](https://mateiadrielrafael.github.io/logicGateSimulator/) Or read the [docs](./docs/main.md) (work in progess) -To run locally clone this repo, and then run: `npm install` -to install all dependenices, `npm run dev` to start the development server or `npm run build` to bundle it. +## Features -This project wouldnt have been possible without the follownig libraries: +- Simple & intuitive UI +- Multiple simulations support +- Integrated circuits +- Multiple language support: Romanian, English, German, Dutch, Spanish & more in the future -- [typescript](https://github.com/microsoft/TypeScript) and [sass](https://github.com/sass/sass) -- [lit-html](https://github.com/Polymer/lit-html) , [lit-rx](https://github.com/Dabolus/lit-rx) and [rxjs](https://github.com/ReactiveX/rxjs) -- [material components for the web](https://github.com/material-components/material-components-web) -- [webpack](https://github.com/webpack/webpack) -- [gh-pages](https://github.com/tschaub/gh-pages) -- [eix-js](https://github.com/eix-js) +## Playing with the source -I used lit-html, lit-rx and rxjs mainly for the rendering, MCW for the styling, webpack for bundling, gh-pages for deploying and eix-js (a game engine me and a friend are working on) for input handling and common decorators. +To run locally clone this repo, and then install all dependencies by rrunning: + +```sh +npm install +``` + +Start the development server by running: + +```sh +npm run dev +``` + +Or bundle the source with: + +```sh +npm run build +``` diff --git a/docs/main.md b/docs/main.md index ddf3f74..5114d0b 100644 --- a/docs/main.md +++ b/docs/main.md @@ -1,10 +1,86 @@ -# Welcome + -Hello, and welcome to my logic gate simulator! I know it can look kinda scary at first, so that's why i wrote these docs! +# Introduction -I recomand reading the first 3 chapters before you start, and then only dig deeper into the others when you feel you mastered the basics! +These docs will walk you trough the process of creating a full adder. -# Table of contents +## Opening the simulator -1. [Basic controls](./controls.md) -2. [Importing a custom logic gate](import.md) +There are 3 ways to open the simulator: + +1. Using the version hosted on github-pages: + +This is by far the fastest solution - everything you need to do is open +[the github-pages url](https://mateiadrielrafael.github.io/logicGateSimulator/) + +2. Using a development server: + +First you need to have [node.js & npm](https://nodejs.org/en/download/) and [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) installed on your machine. + +Open a terminal in the desired folder and run: + +```sh +# Clone repo +git clone https://github.com/Mateiadrielrafael/logicGateSimulator + +# Cd into the folder +cd logicGateSimulator + +# install dependencies +npm install + +# run development server +npm run dev +``` + +3. Building the simulation yourself + +First, clone the repo and install the dependencies as explained in option 2. + +To build the source run: + +```sh +# build program +npm run build +``` + +To then run the simulation, open a server in the dist directory. A simple solution using npm: + +```sh +# instal nano-server globally +npm i nano-server -g + +# change directory +cd dist + +# run server +nano-server + +# linux +open http://localhost:5000 + +# Windows +start http://localhost:5000 +``` + +## The controls + +| Action | Keybinding | Gui | +| :---------------------------------: | :-------------: | :--------------------------------------------------------------------------: | +| Save | `ctrl + s` | `Simulation` > `Save` | +| Add a gate | - | click `logic-gates` > the gate you want to add | +| Move a gate | - | drag & drop the gate using the `right mouse button` | +| Pan | - | click & move & release the background useing the `right mouse button` | +| Select multiple gates | - | click & move & release using the `left mouse button` | +| Add to selection | `shift` | select while holding `shift` | +| Select all gates | `ctrl + a` | `Simulation` > `Select all` | +| Delete selection | `delete` | `Simulation` > `Delete selection` | +| Undo _(to last save)_ | `ctrl + z` | `Simulation` > `Undo` | +| Refresh (reload) simulation | `ctrl + r` | `Simulation` > `Refresh` | +| Clean (delete unconnected gates) | `ctrl + delete` | `Simulation` > `Clean` | +| Open simulation | - | `Open simulation` > the simulation you want to open | +| Create simulation | - | `Create simulation` > `Project` | `Integrated circuit` > type the name of the simulation | +| Create project | - | `Create simulation` > `Project` > type the name of the simulation | +| Create integrated circuit | - | `Create simulation` > `Integrated circuit` > type the name of the simulation | +| Change language | - | Click on the `Language: \` button (bottom of the sidebar) | +| Get more info about a built in gate | - | `Logic gates` > info |