1
0
forked from noxious/server

More cache stuff

This commit is contained in:
2025-01-07 22:20:27 +01:00
parent 010454914b
commit 39ec4daa06
12 changed files with 222 additions and 166 deletions

View File

@ -2,57 +2,10 @@ import { Request, Response } from 'express'
import { BaseController } from '#application/base/baseController'
import { AssetData, UUID } from '#application/types'
import MapRepository from '#repositories/mapRepository'
import SpriteRepository from '#repositories/spriteRepository'
import TileRepository from '#repositories/tileRepository'
export class AssetsController extends BaseController {
private readonly mapRepository = new MapRepository()
private readonly spriteRepository = new SpriteRepository()
private readonly tileRepository = new TileRepository()
/**
* List tiles
* @param req
* @param res
*/
public async listTiles(req: Request, res: Response) {
const assets: AssetData[] = []
const tiles = await this.tileRepository.getAll()
for (const tile of tiles) {
assets.push({ key: tile.getId(), data: '/textures/tiles/' + tile.getId() + '.png', group: 'tiles', updatedAt: tile.getUpdatedAt() } as AssetData)
}
return this.sendSuccess(res, assets)
}
/**
* List tiles by map
* @param req
* @param res
*/
public async listTilesByMap(req: Request, res: Response) {
const mapId = req.params.mapId as UUID
if (!mapId) {
return this.sendError(res, 'Invalid map ID', 400)
}
const map = await this.mapRepository.getById(mapId)
if (!map) {
return this.sendError(res, 'Map not found', 404)
}
const assets: AssetData[] = []
const tiles = await this.tileRepository.getByMapId(mapId)
for (const tile of tiles) {
assets.push({ key: tile.getId(), data: '/textures/tiles/' + tile.getId() + '.png', group: 'tiles', updatedAt: tile.getUpdatedAt() } as AssetData)
}
return this.sendSuccess(res, assets)
}
/**
* List sprite actions

View File

@ -5,8 +5,28 @@ import MapObjectRepository from '#repositories/mapObjectRepository'
import MapRepository from '#repositories/mapRepository'
import SpriteRepository from '#repositories/spriteRepository'
import TileRepository from '#repositories/tileRepository'
import CharacterHairRepository from '#repositories/characterHairRepository'
import CharacterTypeRepository from '#repositories/characterTypeRepository'
export class CacheController extends BaseController {
/**
* Serve a list of tiles and send as JSON
* @param req
* @param res
*/
public async tiles(req: Request, res: Response) {
const items: any[] = []
const tileRepository = new TileRepository()
const tiles = await tileRepository.getAll()
for (const tile of tiles) {
items.push(await tile.cache())
}
return this.sendSuccess(res, items)
}
/**
* Serve a list of maps and send as JSON
* @param req
@ -42,4 +62,58 @@ export class CacheController extends BaseController {
return this.sendSuccess(res, items)
}
/**
* Serve a list of character hairs and send as JSON
* @param req
* @param res
*/
public async characterHair(req: Request, res: Response) {
const items: any[] = []
const characterHairRepository = new CharacterHairRepository()
const characterHairs = await characterHairRepository.getAll()
for (const characterHair of characterHairs) {
items.push(await characterHair.cache())
}
return this.sendSuccess(res, items)
}
/**
* Serve a list of character types and send as JSON
* @param req
* @param res
*/
public async characterTypes(req: Request, res: Response) {
const items: any[] = []
const characterTypeRepository = new CharacterTypeRepository()
const characterTypes = await characterTypeRepository.getAll()
for (const characterType of characterTypes) {
items.push(await characterType.cache())
}
return this.sendSuccess(res, items)
}
/**
* Serve a list of sprites and send as JSON
* @param req
* @param res
*/
public async sprites(req: Request, res: Response) {
const items: any[] = []
const spriteRepository = new SpriteRepository()
const sprites = await spriteRepository.getAll()
for (const sprite of sprites) {
items.push(await sprite.cache())
}
return this.sendSuccess(res, items)
}
}