-
Your moves
-
-
{{actionDescription}}
+
+
Your moves
+
-
-
Enemy moves
-
+
{{actionDescription}}
+
+
@@ -54,22 +43,59 @@ export default class Combat extends Vue {
actionDescription = ''
- private combatLog: Array
-
constructor () {
super()
- this.combatLog = []
}
@Emit("executed")
executed (entry: LogEntry) {
- this.combatLog.push(entry)
+ const log = document.querySelector("#log")
+
+ if (log !== null) {
+ entry.render().forEach(element => {
+ log.appendChild(element)
+ })
+ log.appendChild(document.createElement("br"))
+ log.scrollTo({ top: 10000000000, left: 0 })
+ }
}
}
diff --git a/src/game/interface.ts b/src/game/interface.ts
index 0b4b545..5c7b902 100644
--- a/src/game/interface.ts
+++ b/src/game/interface.ts
@@ -1,5 +1,5 @@
export interface LogEntry {
- render: () => string[];
+ render: () => HTMLElement[];
}
export class LogLines implements LogEntry {
@@ -9,8 +9,12 @@ export class LogLines implements LogEntry {
this.lines = lines
}
- render (): string[] {
- return this.lines
+ render (): HTMLElement[] {
+ return this.lines.map(line => {
+ const div = document.createElement("div")
+ div.innerText = line
+ return div
+ })
}
}
@@ -21,7 +25,7 @@ export class CompositeLog implements LogEntry {
this.entries = entries
}
- render (): string[] {
+ render (): HTMLElement[] {
return this.entries.flatMap(e => e.render())
}
}