From 4fe1131e55cc5bef1e33afbb55cd8ac9bac33d43 Mon Sep 17 00:00:00 2001 From: garnet420 <795869+garnet420@users.noreply.github.com> Date: Sat, 29 Jun 2019 23:04:57 -0400 Subject: [PATCH] G420 automator work (#616) * WIP automator backend * backend is now capable of running a really tiny test program * Automator WIP * Make nested things in AutomatorBackend lower case * For now, translate strings to Decimals in stored scripts as possible * change "currency" to "comparable" in automator backend * rebase razen's automator work onto current master, fix rebase errors * block automator code that doesn't even work * update vue-draggable version * update index.html for new vue draggable * trying to get draggable to work * update sortable.min.js * more block automator work * plenty of more functionality like nesting and deleting rows * add while * text parse from blocks * parse blocks into automator and delete nested commands * scratch file with grammar * scratch file with grammar * Automator grammar with CST visitor that reports some semantic errors * add in codemirror css and js * checkpoint of automator work so far * automator state of affairs * refactor big crunch code a bit * automator work checkpoint * small fixes to non-automato stuff * script storage in player sketched out * update to loading scripts from save * Nuke old code * include font awesome stylesheet * Add GAME_LOAD event * automato can now run a simple script (triggered from console at the moment) * Added automato controls * add repeat support to automato * a little more work on automato buttons * refactor code for getting current EC completions a bit to support automato * automato working well enough to run an automated reality script * Beautify automator UI * fix issue with numeric vars in automato; remove some console logs * fix auto eternity and script looping logic in automato * fix pause with variable-defined time and plain pause command * add support for black hole and stored time on/off in automato * crude support for renaming scripts * hide rename icon when renaming * support creating and opening scripts in automato * new tomato tutorials * add store time use to automator * add more automato command docs * add working tooltips for automato buttons * indicate which script is running in dropdown menu * remove more old automator cruft * remove console printouts * fix active button colors in automato * indicate active automato line in gutter --- .eslintrc.json | 1 + index.html | 251 +- javascripts/components/automator-buttons.js | 10 +- .../header/game-header-big-crunch-button.js | 2 +- .../header/game-header-eternity-button.js | 36 +- javascripts/components/new-ui.js | 2 +- .../new-ui/sidebar-resources/sidebar-ip.js | 2 +- .../automator/automator-block-editor.js | 69 + .../reality/automator/automator-block-tab.js | 25 + .../reality/automator/automator-blocks.js | 89 + .../reality/automator/automator-button.js | 7 + .../reality/automator/automator-editor.js | 256 + .../automator/automator-single-block.js | 53 + .../reality/automator/automator-tab.js | 23 + .../docs/automator-docs-main-page.js | 17 + .../reality/automator/docs/automator-docs.js | 49 + .../automator/docs/automator-man-page.js | 32 + javascripts/core/app/ui.init.js | 6 + javascripts/core/autobuyer.js | 4 +- javascripts/core/automator.js | 409 - .../core/automator/automator-backend.js | 374 + .../core/automator/automator-codemirror.js | 97 + .../core/automator/automator-commands.js | 545 + javascripts/core/automator/compiler.js | 378 + javascripts/core/automator/lexer.js | 287 + javascripts/core/automator/parser.js | 140 + javascripts/core/big_crunch.js | 64 +- javascripts/core/canvases.js | 70 - javascripts/core/challenge.js | 1 + javascripts/core/constants.js | 16 +- javascripts/core/eternity_challenge.js | 63 +- javascripts/core/event-hub.js | 3 +- javascripts/core/extensions.js | 4 + javascripts/core/hotkeys.js | 2 +- javascripts/core/perks.js | 1 - javascripts/core/player.js | 16 +- javascripts/core/reality.js | 1 - .../core/secret-formula/reality/automator.js | 261 + javascripts/core/storage/storage.js | 19 +- javascripts/core/timestudies.js | 12 - javascripts/game.js | 14 +- javascripts/lib/Sortable.min.js | 4 +- javascripts/lib/active-line.js | 72 + javascripts/lib/chevrotain.min.js | 2 + javascripts/lib/codemirror.js | 9755 +++++++++++++++++ javascripts/lib/lint.js | 252 + javascripts/lib/show-hint.js | 460 + javascripts/lib/simple.js | 216 + javascripts/lib/vue-split-pane.min.js | 1 + javascripts/lib/vuedraggable.min.js | 1 - javascripts/lib/vuedraggable.umd.min.js | 2 + stylesheets/automator.css | 171 + stylesheets/codemirror/codemirror.css | 346 + stylesheets/codemirror/lint.css | 73 + stylesheets/codemirror/liquibyte.css | 95 + stylesheets/codemirror/panda-syntax.css | 85 + stylesheets/codemirror/show-hint.css | 36 + stylesheets/styles.css | 219 +- stylesheets/theme-Dark.css | 36 - stylesheets/theme-S6.css | 32 - 60 files changed, 14536 insertions(+), 1033 deletions(-) create mode 100644 javascripts/components/reality/automator/automator-block-editor.js create mode 100644 javascripts/components/reality/automator/automator-block-tab.js create mode 100644 javascripts/components/reality/automator/automator-blocks.js create mode 100644 javascripts/components/reality/automator/automator-button.js create mode 100644 javascripts/components/reality/automator/automator-editor.js create mode 100644 javascripts/components/reality/automator/automator-single-block.js create mode 100644 javascripts/components/reality/automator/automator-tab.js create mode 100644 javascripts/components/reality/automator/docs/automator-docs-main-page.js create mode 100644 javascripts/components/reality/automator/docs/automator-docs.js create mode 100644 javascripts/components/reality/automator/docs/automator-man-page.js delete mode 100644 javascripts/core/automator.js create mode 100644 javascripts/core/automator/automator-backend.js create mode 100644 javascripts/core/automator/automator-codemirror.js create mode 100644 javascripts/core/automator/automator-commands.js create mode 100644 javascripts/core/automator/compiler.js create mode 100644 javascripts/core/automator/lexer.js create mode 100644 javascripts/core/automator/parser.js create mode 100644 javascripts/core/secret-formula/reality/automator.js create mode 100644 javascripts/lib/active-line.js create mode 100644 javascripts/lib/chevrotain.min.js create mode 100644 javascripts/lib/codemirror.js create mode 100644 javascripts/lib/lint.js create mode 100644 javascripts/lib/show-hint.js create mode 100644 javascripts/lib/simple.js create mode 100644 javascripts/lib/vue-split-pane.min.js delete mode 100644 javascripts/lib/vuedraggable.min.js create mode 100644 javascripts/lib/vuedraggable.umd.min.js create mode 100644 stylesheets/automator.css create mode 100644 stylesheets/codemirror/codemirror.css create mode 100644 stylesheets/codemirror/lint.css create mode 100644 stylesheets/codemirror/liquibyte.css create mode 100644 stylesheets/codemirror/panda-syntax.css create mode 100644 stylesheets/codemirror/show-hint.css diff --git a/.eslintrc.json b/.eslintrc.json index 9653a5f9f..918c9d79d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -108,6 +108,7 @@ "computed-property-spacing": "error", "consistent-this": "error", "func-call-spacing": "error", + "guard-for-in": "warn", "id-blacklist": [ "error", "ret", diff --git a/index.html b/index.html index 996a91fac..53a660770 100644 --- a/index.html +++ b/index.html @@ -8,14 +8,20 @@ + + + + + + + - - + + + + + + + + - @@ -383,6 +183,7 @@ + @@ -439,6 +240,7 @@ + @@ -597,6 +399,17 @@ + + + + + + + + + + + @@ -622,6 +435,11 @@ + + + + + @@ -651,7 +469,6 @@ - diff --git a/javascripts/components/automator-buttons.js b/javascripts/components/automator-buttons.js index 5c5169745..a314e40b5 100644 --- a/javascripts/components/automator-buttons.js +++ b/javascripts/components/automator-buttons.js @@ -74,21 +74,21 @@ Vue.component("automator-shop-button", { "automatorinstruction": this.available, "automatorinstructionlocked": !this.available }; - classObject[Automator.Instructions[this.name].type] = true; + classObject[AutomatorInstructions.Instructions[this.name].type] = true; return classObject; }, // This assumes prices are constant cost() { - return Automator.Instructions[this.name].price; + return AutomatorInstructions.Instructions[this.name].price; }, instructionID() { - return Automator.Instructions[this.name].id; + return AutomatorInstructions.Instructions[this.name].id; }, domID() { - return "automator" + Automator.Instructions[this.name].id; + return "automator" + AutomatorInstructions.Instructions[this.name].id; }, displayName() { - return Automator.Instructions[this.name].displayName; + return AutomatorInstructions.Instructions[this.name].displayName; }, popoverTrigger() { // If the html did not specify a tooltip, we set the trigger to diff --git a/javascripts/components/header/game-header-big-crunch-button.js b/javascripts/components/header/game-header-big-crunch-button.js index a521c24ca..98f980bc8 100644 --- a/javascripts/components/header/game-header-big-crunch-button.js +++ b/javascripts/components/header/game-header-big-crunch-button.js @@ -34,7 +34,7 @@ Vue.component("game-header-big-crunch-button", { `