added zone demo logic for dev purposes

This commit is contained in:
Dennis Postma 2024-05-11 19:12:49 +02:00
parent b3a2d8bfaa
commit c49a2563f8
4 changed files with 58 additions and 9 deletions

View File

@ -1,5 +1,6 @@
import {Character, Zone} from "@prisma/client"; import {Character, Zone} from "@prisma/client";
import ZoneRepository from "./repositories/zone.repository"; import ZoneRepository from "./repositories/zone.repository";
import ZoneService from "./services/zone.service";
interface ILoadedZone { interface ILoadedZone {
zone: Zone; zone: Zone;
@ -23,6 +24,12 @@ class ZoneManager {
// Method to initialize zone loading // Method to initialize zone loading
public async boot() { public async boot() {
const zoneRepository = new ZoneRepository(); const zoneRepository = new ZoneRepository();
if (!await zoneRepository.getById(1)) {
const zoneService = new ZoneService();
await zoneService.createDemoZone();
}
const zones = await zoneRepository.getAll(); const zones = await zoneRepository.getAll();
for (const zone of zones) { for (const zone of zones) {

View File

@ -19,6 +19,35 @@ class ZoneRepository {
throw new Error(`Failed to get all zone: ${error.message}`); throw new Error(`Failed to get all zone: ${error.message}`);
} }
} }
async getById(id: number): Promise<Zone | null> {
try {
return await prisma.zone.findUnique({
where: {
id: id
}
});
} catch (error: any) {
// Handle error
throw new Error(`Failed to get zone by id: ${error.message}`);
}
}
async create(name: string, width: number, height: number, tiles: any): Promise<Zone> {
try {
return await prisma.zone.create({
data: {
name: name,
width: width,
height: height,
tiles: tiles
}
});
} catch (error: any) {
// Handle error
throw new Error(`Failed to create zone: ${error.message}`);
}
}
} }
export default ZoneRepository; export default ZoneRepository;

View File

@ -1,13 +1,26 @@
import {LoadedZoneEntity} from "../entities/LoadedZoneEntity";
import {Zone} from "@prisma/client"; import {Zone} from "@prisma/client";
import ZoneRepository from "../repositories/zone.repository";
class ZoneService class ZoneService
{ {
public loaded: LoadedZoneEntity[] = []; async createDemoZone(): Promise<boolean>
{
const zoneRepo = new ZoneRepository();
await zoneRepo.create("Demo Zone", 10, 10, [
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
])
console.log("Demo zone created.");
return true;
}
}
public boot() { export default ZoneService;
// Load all zones
// const zones = await new ZoneRepository().getAll();
// this.loadedZones = zones;
}
}

View File

@ -26,7 +26,7 @@ async function addAuthRoutes(app: any) {
return res.status(400).json({ message: 'Failed to register user' }); return res.status(400).json({ message: 'Failed to register user' });
}); });
console.log('[🕸️] Auth routes added'); console.log('[] Auth routes added');
} }
export default { addAuthRoutes }; export default { addAuthRoutes };