import { randomUUID } from 'node:crypto' import { Collection, Entity, OneToMany, PrimaryKey, Property } from '@mikro-orm/core' import { ZoneObject } from './zoneObject' import { BaseEntity } from '#application/base/baseEntity' import { UUID } from '#application/types' @Entity() export class MapObject extends BaseEntity { @PrimaryKey() id = randomUUID() @Property() name!: string @Property({ type: 'json', nullable: true }) tags?: any @Property() originX = 0 @Property() originY = 0 @Property() isAnimated = false @Property() frameRate = 0 @Property() frameWidth = 0 @Property() frameHeight = 0 @Property() createdAt = new Date() @Property() updatedAt = new Date() setId(id: UUID) { this.id = id return this } getId() { return this.id } setName(name: string) { this.name = name return this } getName() { return this.name } setTags(tags: any) { this.tags = tags return this } getTags() { return this.tags } setOriginX(originX: number) { this.originX = originX return this } getOriginX() { return this.originX } setOriginY(originY: number) { this.originY = originY return this } getOriginY() { return this.originY } setIsAnimated(isAnimated: boolean) { this.isAnimated = isAnimated return this } getIsAnimated() { return this.isAnimated } setFrameRate(frameRate: number) { this.frameRate = frameRate return this } getFrameRate() { return this.frameRate } setFrameWidth(frameWidth: number) { this.frameWidth = frameWidth return this } getFrameWidth() { return this.frameWidth } setFrameHeight(frameHeight: number) { this.frameHeight = frameHeight return this } getFrameHeight() { return this.frameHeight } setCreatedAt(createdAt: Date) { this.createdAt = createdAt return this } getCreatedAt() { return this.createdAt } setUpdatedAt(updatedAt: Date) { this.updatedAt = updatedAt return this } getUpdatedAt() { return this.updatedAt } }