Signed-off-by: Avior <github@avior.me>
This commit is contained in:
2022-06-14 18:27:20 +02:00
parent 8952b61651
commit 79b74d16d5
23 changed files with 344 additions and 5028 deletions

View File

@ -9,7 +9,7 @@ interface Params {
stroke?: string
}
export default class RectRenderer extends Renderer implements Partial<Params> {
export default class RectRenderer extends Renderer implements Params {
public material?: string | Asset
public stroke?: string

View File

@ -0,0 +1,41 @@
import { objectLoop } from '@dzeio/object-util'
import GameEngine from 'GameEngine'
import Component2D from 'GameEngine/Component2D'
import Renderer from '.'
interface Params {
text?: string
}
export default class TextRenderer extends Renderer {
public text?: string
public size?: number
public constructor(component: Component2D, params?: Params) {
super(component)
objectLoop(params ?? {}, (v, k) => {this[k as 'text'] = v})
}
public async render(ge: GameEngine, ctx: CanvasRenderingContext2D) {
const position = this.getPosition()
const item: [number, number] = [
// source x
// 0 - 1.5 - -1.5
position.x * (ge.caseSize.x),
// source y
position.y * (ge.caseSize.y)
]
const size = this.component.scale.y * ge.caseSize.y
// console.log
if (this.text) {
ctx.fillStyle = 'black'
ctx.textBaseline = 'top'
ctx.font = `${size}px sans-serif`
ctx.fillText(this.text, ...item)
}
}
}

View File

@ -10,7 +10,7 @@ export default abstract class Renderer {
protected getPosition(): Vector2D {
const ge = GameEngine.getGameEngine()
const realPosition = ge.currentScene.camera.topLeft.sum(this.component.position)
const realPosition = ge.currentScene!.camera.topLeft.sum(this.component.position)
return new Vector2D(
realPosition.x - this.component.scale.x / 2 - this.component.origin.x,
realPosition.y - this.component.scale.y / 2 - this.component.origin.y