Sfoglia il codice sorgente

Adjust explore layout; make hlines animate in explore and combat

master
Fen Dweller 5 anni fa
parent
commit
4be9ad95ad
3 ha cambiato i file con 72 aggiunte e 30 eliminazioni
  1. +34
    -10
      src/components/Combat.vue
  2. +33
    -18
      src/components/Explore.vue
  3. +5
    -2
      src/game/maps/town.ts

+ 34
- 10
src/components/Combat.vue Vedi File

@@ -94,9 +94,9 @@ export default class Combat extends Vue {


@Emit("executedLeft") @Emit("executedLeft")
executedLeft (entry: LogEntry) { executedLeft (entry: LogEntry) {
this.writeLog(entry, "left-move")
this.writeLog(entry, "left")


this.writeLog(this.encounter.nextMove(), "center-move")
this.writeLog(this.encounter.nextMove(), "center")
this.pickNext() this.pickNext()
} }


@@ -104,13 +104,13 @@ export default class Combat extends Vue {


@Emit("executedRight") @Emit("executedRight")
executedRight (entry: LogEntry) { executedRight (entry: LogEntry) {
this.writeLog(entry, "right-move")
this.writeLog(entry, "right")


this.writeLog(this.encounter.nextMove(), "center-move")
this.writeLog(this.encounter.nextMove(), "center")
this.pickNext() this.pickNext()
} }


writeLog (entry: LogEntry, cls = "") {
writeLog (entry: LogEntry, side = "") {
const log = this.$el.querySelector(".log") const log = this.$el.querySelector(".log")
if (log !== null) { if (log !== null) {
const elements = entry.render() const elements = entry.render()
@@ -123,12 +123,15 @@ export default class Combat extends Vue {
holder.appendChild(element) holder.appendChild(element)
}) })


if (cls !== "") {
holder.classList.add(cls)
if (side !== "") {
holder.classList.add(side + "-move")
} }


const hline = document.createElement("div") const hline = document.createElement("div")
hline.classList.add("log-separator") hline.classList.add("log-separator")
if (side !== "") {
hline.classList.add("log-separator-" + side)
}
log.insertBefore(hline, before) log.insertBefore(hline, before)
log.insertBefore(holder, hline) log.insertBefore(holder, hline)


@@ -145,7 +148,7 @@ export default class Combat extends Vue {
new LogLine( new LogLine(
`game o-vore lmaoooooooo` `game o-vore lmaoooooooo`
), ),
"center-move"
"center"
) )
} else { } else {
if (this.encounter.currentMove.side === Side.Heroes) { if (this.encounter.currentMove.side === Side.Heroes) {
@@ -522,12 +525,33 @@ div.right-move {
} }


.log-separator { .log-separator {
width: 100%;
animation: log-keyframes 0.5s;
height: 4px; height: 4px;
margin: 4pt 0pt 4pt;
background: linear-gradient(90deg, transparent, #444 10%, #444 90%, transparent 100%); background: linear-gradient(90deg, transparent, #444 10%, #444 90%, transparent 100%);
} }


.log-separator-left {
margin: 4pt auto 4pt 0;
}

.log-separator-center {
margin: 4pt auto 4pt;
}

.log-separator-right {
margin: 4pt 0 4pt auto;
}

@keyframes log-keyframes {
from {
width: 0%;
}

to {
width: 100%;
}
}

.left-move { .left-move {
animation: left-fly-in 1s; animation: left-fly-in 1s;
} }


+ 33
- 18
src/components/Explore.vue Vedi File

@@ -66,21 +66,24 @@ export default class Explore extends Vue {
writeLog (entry: LogEntry) { writeLog (entry: LogEntry) {
const log = this.$el.querySelector(".explore-log") const log = this.$el.querySelector(".explore-log")
if (log !== null) { if (log !== null) {
const before = log.querySelector("div.explore-log-entry")
const holder = document.createElement("div")
holder.classList.add("explore-log-entry")

entry.render().forEach(element => {
holder.appendChild(element)
})

holder.classList.add("explore-entry")
const hline = document.createElement("div")
hline.classList.add("explore-log-separator")
log.insertBefore(hline, before)
log.insertBefore(holder, hline)

log.scrollTo({ top: 0, left: 0 })
const rendered = entry.render()
if (rendered.length > 0) {
const before = log.querySelector("div.explore-log-entry")
const holder = document.createElement("div")
holder.classList.add("explore-log-entry")

entry.render().forEach(element => {
holder.appendChild(element)
})

holder.classList.add("explore-entry")
const hline = document.createElement("div")
hline.classList.add("explore-log-separator")
log.insertBefore(hline, before)
log.insertBefore(holder, hline)

log.scrollTo({ top: 0, left: 0 })
}
} }
} }
} }
@@ -93,7 +96,7 @@ export default class Explore extends Vue {
flex: 10; flex: 10;
position: relative; position: relative;
display: grid; display: grid;
grid-template-areas: "statblock containers containers"
grid-template-areas: "containers containers statblock"
"log log worldinfo" "log log worldinfo"
"log log info " "log log info "
"log log choices " "log log choices "
@@ -111,12 +114,14 @@ export default class Explore extends Vue {
flex-direction: row; flex-direction: row;
flex-wrap: nowrap; flex-wrap: nowrap;
overflow-x: scroll; overflow-x: scroll;
justify-content: flex-end;
} }


.explore-log { .explore-log {
grid-area: log; grid-area: log;
background: #222; background: #222;
overflow-y: scroll; overflow-y: scroll;
padding: 8pt;
} }


.explore-worldinfo { .explore-worldinfo {
@@ -197,9 +202,19 @@ export default class Explore extends Vue {
} }


.explore-log-separator { .explore-log-separator {
width: 100%;
animation: explore-log-keyframes 0.5s;
height: 4px; height: 4px;
margin: 16pt 0pt 16pt;
margin: 16pt auto 16pt;
background: linear-gradient(90deg, transparent, #444 10%, #444 90%, transparent 100%); background: linear-gradient(90deg, transparent, #444 10%, #444 90%, transparent 100%);
} }

@keyframes explore-log-keyframes {
from {
width: 0%;
}

to {
width: 100%;
}
}
</style> </style>

+ 5
- 2
src/game/maps/town.ts Vedi File

@@ -3,7 +3,7 @@ import { ProperNoun, ImproperNoun, MalePronouns, FemalePronouns, TheyPronouns }
import { Encounter } from '../combat' import { Encounter } from '../combat'
import * as Creatures from '../creatures' import * as Creatures from '../creatures'
import * as Items from '../items' import * as Items from '../items'
import { LogLine, nilLog } from '../interface'
import { LogLine, nilLog, LogLines } from '../interface'
import { Creature } from '../creature' import { Creature } from '../creature'
import { DevourAction } from '../combat/actions' import { DevourAction } from '../combat/actions'
import { SurrenderEffect } from '../combat/effects' import { SurrenderEffect } from '../combat/effects'
@@ -134,7 +134,10 @@ export const Town = (): Place => {
"Nap", "Nap",
"Zzzzzz", "Zzzzzz",
(world, executor) => { (world, executor) => {
return world.advance(moment.duration(1, "hour"))
return new LogLines(
`You lie down for a nice nap...`,
world.advance(moment.duration(1, "hour"))
)
} }
) )
) )


Loading…
Annulla
Salva