#237 - Changed Prisma find calls to repos
This commit is contained in:
parent
6ee8bb8334
commit
2e267a36aa
@ -1,5 +1,5 @@
|
|||||||
import { Character, Zone } from '@prisma/client'
|
import { Character, Zone } from '@prisma/client'
|
||||||
import zoneRepository from '../repositories/zoneRepository'
|
import zoneEventTileRepository from '../repositories/zoneEventTileRepository'
|
||||||
import ZoneCharacter from './zoneCharacter'
|
import ZoneCharacter from './zoneCharacter'
|
||||||
|
|
||||||
class LoadedZone {
|
class LoadedZone {
|
||||||
@ -38,7 +38,7 @@ class LoadedZone {
|
|||||||
public async getGrid(): Promise<number[][]> {
|
public async getGrid(): Promise<number[][]> {
|
||||||
let grid: number[][] = Array.from({ length: this.zone.height }, () => Array.from({ length: this.zone.width }, () => 0))
|
let grid: number[][] = Array.from({ length: this.zone.height }, () => Array.from({ length: this.zone.width }, () => 0))
|
||||||
|
|
||||||
const eventTiles = await zoneRepository.getEventTiles(this.zone.id)
|
const eventTiles = await zoneEventTileRepository.getAll(this.zone.id)
|
||||||
|
|
||||||
// Set the grid values based on the event tiles, these are strings
|
// Set the grid values based on the event tiles, these are strings
|
||||||
eventTiles.forEach((eventTile) => {
|
eventTiles.forEach((eventTile) => {
|
||||||
|
37
src/repositories/zoneEventTileRepository.ts
Normal file
37
src/repositories/zoneEventTileRepository.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { ZoneEventTile } from '@prisma/client'
|
||||||
|
import prisma from '../utilities/prisma'
|
||||||
|
import { appLogger } from '../utilities/logger'
|
||||||
|
|
||||||
|
class ZoneEventTileRepository {
|
||||||
|
|
||||||
|
async getAll(id: number): Promise<ZoneEventTile[]> {
|
||||||
|
try {
|
||||||
|
return await prisma.zoneEventTile.findMany({
|
||||||
|
where: {
|
||||||
|
zoneId: id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} catch (error: any) {
|
||||||
|
appLogger.error(`Failed to get zone event tiles: ${error.message}`)
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getEventTileByZoneIdAndPosition(zoneId: number, positionX: number, positionY: number) {
|
||||||
|
try {
|
||||||
|
return await prisma.zoneEventTile.findFirst({
|
||||||
|
where: {
|
||||||
|
zoneId: zoneId,
|
||||||
|
positionX: positionX,
|
||||||
|
positionY: positionY
|
||||||
|
},
|
||||||
|
include: { teleport: true }
|
||||||
|
})
|
||||||
|
} catch (error: any) {
|
||||||
|
appLogger.error(`Failed to get zone event tile: ${error.message}`)
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new ZoneEventTileRepository()
|
@ -53,18 +53,19 @@ class ZoneRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async getEventTeleportTiles(id: number): Promise<ZoneEventTileWithTeleport[]> {
|
async getFirstEventTile(zoneId: number, positionX: number, positionY: number): Promise<ZoneEventTile | null> {
|
||||||
try {
|
try {
|
||||||
return (await prisma.zoneEventTile.findMany({
|
return await prisma.zoneEventTile.findFirst({
|
||||||
where: {
|
where: {
|
||||||
zoneId: id,
|
zoneId: zoneId,
|
||||||
type: ZoneEventTileType.TELEPORT
|
positionX: positionX,
|
||||||
|
positionY: positionY
|
||||||
},
|
},
|
||||||
include: { teleport: true }
|
include: { teleport: true }
|
||||||
})) as unknown as ZoneEventTileWithTeleport[]
|
})
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
appLogger.error(`Failed to get zone event tiles: ${error.message}`)
|
appLogger.error(`Failed to get zone event tile: ${error.message}`)
|
||||||
return []
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import Rotation from '../../utilities/character/rotation'
|
|||||||
import { gameLogger } from '../../utilities/logger'
|
import { gameLogger } from '../../utilities/logger'
|
||||||
import ZoneManager from '../../managers/zoneManager'
|
import ZoneManager from '../../managers/zoneManager'
|
||||||
import ZoneCharacter from '../../models/zoneCharacter'
|
import ZoneCharacter from '../../models/zoneCharacter'
|
||||||
|
import zoneEventTileRepository from '../../repositories/zoneEventTileRepository'
|
||||||
|
|
||||||
export default class CharacterMove {
|
export default class CharacterMove {
|
||||||
private readonly characterMoveService = new CharacterMoveService()
|
private readonly characterMoveService = new CharacterMoveService()
|
||||||
@ -58,14 +59,7 @@ export default class CharacterMove {
|
|||||||
const [start, end] = [path[i], path[i + 1]]
|
const [start, end] = [path[i], path[i + 1]]
|
||||||
character.rotation = Rotation.calculate(start.x, start.y, end.x, end.y)
|
character.rotation = Rotation.calculate(start.x, start.y, end.x, end.y)
|
||||||
|
|
||||||
const zoneEventTile = await prisma.zoneEventTile.findFirst({
|
const zoneEventTile = await zoneEventTileRepository.getEventTileByZoneIdAndPosition(character.zoneId, Math.floor(end.x), Math.floor(end.y))
|
||||||
where: {
|
|
||||||
zoneId: character.zoneId,
|
|
||||||
positionX: Math.floor(end.x),
|
|
||||||
positionY: Math.floor(end.y)
|
|
||||||
},
|
|
||||||
include: { teleport: true }
|
|
||||||
})
|
|
||||||
|
|
||||||
if (zoneEventTile?.type === 'BLOCK') break
|
if (zoneEventTile?.type === 'BLOCK') break
|
||||||
if (zoneEventTile?.type === 'TELEPORT' && zoneEventTile.teleport) {
|
if (zoneEventTile?.type === 'TELEPORT' && zoneEventTile.teleport) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user