import { randomUUID } from 'node:crypto' import { BaseEntity } from '@/application/base/baseEntity' import { MapEventTileType } from '@/application/enums' import type { UUID } from '@/application/types' import type { Map } from '@/entities/map' import type { MapEventTileTeleport } from '@/entities/mapEventTileTeleport' import { Enum, ManyToOne, OneToOne, PrimaryKey, Property } from '@mikro-orm/core' export class BaseMapEventTile extends BaseEntity { @PrimaryKey() id = randomUUID() @ManyToOne({ deleteRule: 'cascade' }) map!: Map @Enum(() => MapEventTileType) type!: MapEventTileType @Property() positionX: number = 0 @Property() positionY: number = 0 @OneToOne({ eager: true, deleteRule: 'cascade', orphanRemoval: true }) teleport?: MapEventTileTeleport setId(id: UUID) { this.id = id return this } getId() { return this.id } setMap(map: Map) { this.map = map return this } getMap() { return this.map } setType(type: MapEventTileType) { this.type = type return this } getType() { return this.type } setPositionX(positionX: number) { this.positionX = positionX return this } getPositionX() { return this.positionX } setPositionY(positionY: number) { this.positionY = positionY return this } getPositionY() { return this.positionY } setTeleport(teleport: MapEventTileTeleport) { this.teleport = teleport return this } getTeleport() { return this.teleport } }