;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ StatementNotificationComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(StatementNotificationComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/statement-notification/statement-notification.component.ts b/src/app/statement-notification/statement-notification.component.ts
new file mode 100644
index 0000000..268c5c0
--- /dev/null
+++ b/src/app/statement-notification/statement-notification.component.ts
@@ -0,0 +1,33 @@
+import { Component, Input, OnInit } from '@angular/core';
+import { MatDialog, MatDialogRef } from '@angular/material/dialog';
+import { IStatement } from '../app.service.interface';
+import { DialogComponent } from '../common-components/dialog/dialog.component';
+
+/**
+ * Box that allows a user to show a statement, should one be available.
+ */
+@Component({
+ selector: 'statement-notification',
+ templateUrl: './statement-notification.component.html',
+ styleUrls: ['./statement-notification.component.scss']
+})
+export class StatementNotificationComponent {
+
+ /**
+ * Statement data, if any.
+ */
+ @Input() statement: IStatement = null;
+
+ constructor(private dialog: MatDialog) { }
+
+ /**
+ * Show the statement in a dialog on button click.
+ */
+ showStatement() {
+ this.dialog.open(DialogComponent, {
+ data: this.statement,
+ width: "600px"
+ });
+ }
+
+}
diff --git a/src/assets/json/statement.json b/src/assets/json/statement.json
new file mode 100644
index 0000000..5c0be29
--- /dev/null
+++ b/src/assets/json/statement.json
@@ -0,0 +1,4 @@
+{
+ "title": "OoT has reached 100%!",
+ "content": "It's been a wild ride. We've been able to create C code that, when compiled, reproduces the original game. We call this \"matching\" decompilation. On 26 November 2021, Fig02, who is a notable community member as well as a project lead, matched the last-remaining function in the first version of Ocarina of Time. This means that all compiled code in the game has been turned into human-readable C code. We thought for a time that we may never be able to match every function completely, so this is an incredibly exciting accomplishment. Dozens of people helped work on this project, and together we were able to achieve something amazing
There's still a lot of remaining work for the project, however. In no particular order:
- Documentation - Lots of code is not well understood, still, so we need to reverse-engineer things and document them.
- Re-organization -We plan to reorganize the code and definitions in the project.
- Re-naming - many names of things are not ideal for finding the code for a particular part of the game, so we plan to standardize and rename many systems and components.
- Other versions - We have been working on decompiling the Master Quest Debug version of the game. However, Ocarina of Time has 17 other versions, which we plan to also decompile and support in the project.
- Asset support - We plan to continue to improve support of asset-handling so that viewing / modifying assets on modern computers is easier to do.
- Other games - We have many other projects in progress: Majora's Mask, The Minish Cap, Twilight Princess, and Breath of the Wild all need help as well to reach 100%!
— ZeldaRET project leads
"
+}
diff --git a/src/styles.scss b/src/styles.scss
index ad0022f..56630c8 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -64,6 +64,14 @@ markdown h2 {
border-bottom: 1px solid white;
}
+ul {
+ padding-left: 20px;
+}
+
+li {
+ margin-bottom: 1rem;
+}
+
mat-card {
background-color: rgb(29, 48, 95) !important;
}