diff --git a/.idea/dictionaries/Tom.xml b/.idea/dictionaries/Tom.xml
index 05ad3b8..084fc1d 100644
--- a/.idea/dictionaries/Tom.xml
+++ b/.idea/dictionaries/Tom.xml
@@ -2,6 +2,8 @@
deparse
+ gameplay
+ pegjs
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 42a9cca..b43a6ee 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1916,6 +1916,11 @@
"integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==",
"dev": true
},
+ "@types/pegjs": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@types/pegjs/-/pegjs-0.10.1.tgz",
+ "integrity": "sha512-ra8IchO9odGQmYKbm+94K58UyKCEKdZh9y0vxhG4pIpOJOBlC1C+ZtBVr6jLs+/oJ4pl+1p/4t3JtBA8J10Vvw=="
+ },
"@types/q": {
"version": "0.0.32",
"resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
@@ -8633,6 +8638,11 @@
"sha.js": "^2.4.8"
}
},
+ "pegjs": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz",
+ "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0="
+ },
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
@@ -10916,6 +10926,14 @@
"yn": "^2.0.0"
}
},
+ "ts-pegjs": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/ts-pegjs/-/ts-pegjs-0.2.6.tgz",
+ "integrity": "sha512-mIX/dMQ6a1EHAEhvCLS6Z41+O700zlLiwB4V5ZSlKFLZKLDE93reik5IFw/HJsKgs488UiLx144yeEWWyu7YIw==",
+ "requires": {
+ "pegjs": "^0.10.0"
+ }
+ },
"tslib": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
diff --git a/package.json b/package.json
index 35f8385..a30b1a6 100644
--- a/package.json
+++ b/package.json
@@ -20,9 +20,11 @@
"@angular/platform-browser-dynamic": "~8.2.11",
"@angular/router": "~8.2.11",
"@ng-bootstrap/ng-bootstrap": "^5.1.1",
+ "@types/pegjs": "^0.10.1",
"ace-builds": "^1.4.7",
"bootstrap": "^4.3.1",
"rxjs": "~6.4.0",
+ "ts-pegjs": "^0.2.6",
"tslib": "^1.10.0",
"zone.js": "~0.9.1"
},
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 7c20a87..6a0d6ec 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -9,6 +9,7 @@ import { CodeEditorComponent } from './components/code-editor/code-editor.compon
import { ConfigComponent } from './pages/config/config.component';
import { FormsModule } from "@angular/forms";
import { Server } from "./server";
+import { PegjsService } from "./services/pegjs.service";
@NgModule({
declarations: [
@@ -23,7 +24,7 @@ import { Server } from "./server";
NgbModule,
FormsModule
],
- providers: [Server],
+ providers: [Server, PegjsService],
bootstrap: [AppComponent]
})
export class AppModule {
diff --git a/src/app/models/atlasData/blueprintGeneratedClass.ts b/src/app/models/atlasData/blueprintGeneratedClass.ts
new file mode 100644
index 0000000..b910c00
--- /dev/null
+++ b/src/app/models/atlasData/blueprintGeneratedClass.ts
@@ -0,0 +1,14 @@
+import { ToJSON } from "../util/toJson";
+
+export class BlueprintGeneratedClass implements ToJSON {
+ public texture: string;
+
+ constructor(raw: object) {
+ if( raw[0] !== 'BlueprintGeneratedClass') Error('wrong type, expecting BlueprintGeneratedClass, got [' + raw[0] + ']!');
+ this.texture = raw[1];
+ };
+
+ public toJSON(): object {
+ return [ 'BlueprintGeneratedClass', this.texture ];
+ }
+}
diff --git a/src/app/models/atlasData/questEntry.ts b/src/app/models/atlasData/questEntry.ts
new file mode 100644
index 0000000..a02863e
--- /dev/null
+++ b/src/app/models/atlasData/questEntry.ts
@@ -0,0 +1,46 @@
+import { Texture2D } from "./texture2D";
+
+export class QuestEntry {
+ public QuestID: number;
+ public CompletedIcon: Texture2D;
+ public UncompletedIcon: Texture2D;
+ public QuestName: string;
+ public QuestDescription: string;
+ public UnlockFeatNames: Array;
+ public CompleteGiveEngramClasses: object;
+ public QuestPointsOfInterest: Array