Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | 22x 22x 22x 168x 168x 175x 56x 56x 5x 3x 3x | import { OptionalValueSupplier, RecordSupplier, ValueSupplier } from './value' /** * {@link Layer} のレイアウトのためのレイヤ名一覧 */ export const layerTypes = ['field', 'screen', 'comment', 'header'] as const /** * {@link Layer} のレイアウトのためのレイヤ名一覧 */ export type LayerType = typeof layerTypes[number] /** * g.Scene 上に配置するエンティティ ({@link Layer}) のレイアウト情報 */ export interface LayerConfig { /** * {@link Spot}, {@link Broadcaster} が配置されるマップの大きさ. */ field: g.CommonArea /** * {@link Live} が配置されるマップの大きさ */ screen: g.CommonArea /** * {@link CommentDeployer} がコメントを配置する領域の大きさ */ comment: g.CommonArea /** * {@link Scorer} が得点、 {@link Ticker} が残り時間を配置する領域の大きさ */ header: g.CommonArea /** * ライブラリ利用者が自由に使えるフィールドです */ vars: unknown } export class LayerConfigSupplier implements ValueSupplier<LayerConfig> { private layouts: RecordSupplier<LayerType, g.CommonArea> private readonly vars: OptionalValueSupplier<unknown> constructor (initial: LayerConfig) { this.layouts = RecordSupplier.create({ field: initial.field, screen: initial.screen, comment: initial.comment, header: initial.header }) this.vars = OptionalValueSupplier.create(initial.vars) } get (): LayerConfig { return { ...this.layouts.get(), vars: this.vars.get() } } setIf (obj: Partial<LayerConfig>) { this.layouts.setIf(obj) this.vars.setIf(obj.vars) } default (): LayerConfig { return { ...this.layouts.default(), vars: this.vars.default() } } defaultIf (obj: Partial<LayerConfig>) { this.layouts.defaultIf(obj) this.vars.defaultIf(obj.vars) } } |