Removed migrations (oops), npm update, registration bug fix, include spriteImages in spriteRepository, few typo fixes

This commit is contained in:
Dennis Postma 2024-07-24 03:27:22 +02:00
parent 4b81d7ff67
commit a0fe0760b0
22 changed files with 175 additions and 236 deletions

12
package-lock.json generated
View File

@ -711,9 +711,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
"version": "20.14.11",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz",
"integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==",
"version": "20.14.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.12.tgz",
"integrity": "sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==",
"license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
@ -2405,9 +2405,9 @@
}
},
"node_modules/typescript": {
"version": "5.5.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz",
"integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==",
"version": "5.5.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
"integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",

View File

@ -1,5 +0,0 @@
-- DropForeignKey
ALTER TABLE `ZoneObject` DROP FOREIGN KEY `ZoneObject_objectId_fkey`;
-- AddForeignKey
ALTER TABLE `ZoneObject` ADD CONSTRAINT `ZoneObject_objectId_fkey` FOREIGN KEY (`objectId`) REFERENCES `Object`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -1,19 +0,0 @@
/*
Warnings:
- You are about to drop the `TileTag` table. If the table is not empty, all the data it contains will be lost.
*/
-- DropTable
DROP TABLE `TileTag`;
-- CreateTable
CREATE TABLE `Tile` (
`id` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`tags` JSON NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

View File

@ -1,5 +0,0 @@
-- AlterTable
ALTER TABLE `Object` ADD COLUMN `tags` JSON NULL;
-- AlterTable
ALTER TABLE `Tile` MODIFY `tags` JSON NULL;

View File

@ -1,16 +0,0 @@
-- CreateTable
CREATE TABLE `Sprite` (
`id` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`origin_x` DECIMAL(65, 30) NOT NULL DEFAULT 0,
`origin_y` DECIMAL(65, 30) NOT NULL DEFAULT 0,
`frameSpeed` INTEGER NOT NULL DEFAULT 0,
`isAnimated` BOOLEAN NOT NULL DEFAULT false,
`isLooping` BOOLEAN NOT NULL DEFAULT false,
`isPlayableCharacter` BOOLEAN NOT NULL DEFAULT false,
`isEnemy` BOOLEAN NOT NULL DEFAULT false,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

View File

@ -1,8 +0,0 @@
/*
Warnings:
- Added the required column `type` to the `Sprite` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE `Sprite` ADD COLUMN `type` VARCHAR(191) NOT NULL;

View File

@ -1,20 +0,0 @@
/*
Warnings:
- You are about to drop the column `isEnemy` on the `Sprite` table. All the data in the column will be lost.
- You are about to drop the column `isPlayableCharacter` on the `Sprite` table. All the data in the column will be lost.
- You are about to drop the column `type` on the `Sprite` table. All the data in the column will be lost.
*/
-- AlterTable
ALTER TABLE `Object` ADD COLUMN `frameHeight` INTEGER NOT NULL DEFAULT 0,
ADD COLUMN `frameSpeed` INTEGER NOT NULL DEFAULT 0,
ADD COLUMN `frameWidth` INTEGER NOT NULL DEFAULT 0,
ADD COLUMN `isAnimated` BOOLEAN NOT NULL DEFAULT false;
-- AlterTable
ALTER TABLE `Sprite` DROP COLUMN `isEnemy`,
DROP COLUMN `isPlayableCharacter`,
DROP COLUMN `type`,
ADD COLUMN `frameHeight` INTEGER NOT NULL DEFAULT 0,
ADD COLUMN `frameWidth` INTEGER NOT NULL DEFAULT 0;

View File

@ -1,2 +0,0 @@
-- AlterTable
ALTER TABLE `Zone` ADD COLUMN `pvp` BOOLEAN NOT NULL DEFAULT false;

View File

@ -1,5 +0,0 @@
-- AlterTable
ALTER TABLE `Character` MODIFY `position_x` INTEGER NOT NULL DEFAULT 0,
MODIFY `position_y` INTEGER NOT NULL DEFAULT 0,
MODIFY `rotation` INTEGER NOT NULL DEFAULT 0,
MODIFY `zoneId` INTEGER NOT NULL DEFAULT 1;

View File

@ -1,12 +0,0 @@
-- AlterTable
ALTER TABLE `Item` MODIFY `description` VARCHAR(191) NULL;
-- AlterTable
ALTER TABLE `Zone` MODIFY `width` INTEGER NOT NULL DEFAULT 10,
MODIFY `height` INTEGER NOT NULL DEFAULT 10,
MODIFY `tiles` JSON NULL;
-- AlterTable
ALTER TABLE `ZoneObject` MODIFY `depth` INTEGER NOT NULL DEFAULT 0,
MODIFY `position_x` INTEGER NOT NULL DEFAULT 0,
MODIFY `position_y` INTEGER NOT NULL DEFAULT 0;

View File

@ -1,8 +0,0 @@
/*
Warnings:
- You are about to drop the column `isAnimated` on the `Sprite` table. All the data in the column will be lost.
*/
-- AlterTable
ALTER TABLE `Sprite` DROP COLUMN `isAnimated`;

View File

@ -1,42 +0,0 @@
/*
Warnings:
- Added the required column `characterTypeId` to the `Character` table without a default value. This is not possible if the table is not empty.
*/
-- AlterTable
ALTER TABLE `Character` ADD COLUMN `characterTypeId` INTEGER NOT NULL;
-- AlterTable
ALTER TABLE `Sprite` ADD COLUMN `isAnimated` BOOLEAN NOT NULL DEFAULT false;
-- CreateTable
CREATE TABLE `CharacterSprite` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`characterTypeId` INTEGER NOT NULL,
`spriteId` VARCHAR(191) NOT NULL,
`action` ENUM('IDLE_LEFT', 'IDLE_DOWN', 'SIT_LEFT', 'SIT_DOWN', 'WALK_LEFT', 'WALK_DOWN', 'ATTACK_LEFT', 'ATTACK_DOWN') NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `CharacterType` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(191) NOT NULL,
`gender` ENUM('MALE', 'FEMALE') NOT NULL,
`race` ENUM('HUMAN', 'ELF', 'DWARF', 'ORC', 'GOBLIN') NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `CharacterSprite` ADD CONSTRAINT `CharacterSprite_characterTypeId_fkey` FOREIGN KEY (`characterTypeId`) REFERENCES `CharacterType`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `CharacterSprite` ADD CONSTRAINT `CharacterSprite_spriteId_fkey` FOREIGN KEY (`spriteId`) REFERENCES `Sprite`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `Character` ADD CONSTRAINT `Character_characterTypeId_fkey` FOREIGN KEY (`characterTypeId`) REFERENCES `CharacterType`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -1,2 +0,0 @@
-- AlterTable
ALTER TABLE `Character` MODIFY `characterTypeId` INTEGER NULL;

View File

@ -1,9 +1,18 @@
-- CreateTable
CREATE TABLE `Object` (
CREATE TABLE `Chat` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`characterId` INTEGER NOT NULL,
`zoneId` INTEGER NOT NULL,
`message` VARCHAR(191) NOT NULL,
`createdAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Sprite` (
`id` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`origin_x` DECIMAL(65, 30) NOT NULL DEFAULT 0,
`origin_y` DECIMAL(65, 30) NOT NULL DEFAULT 0,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
@ -11,13 +20,18 @@ CREATE TABLE `Object` (
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Item` (
CREATE TABLE `SpriteImage` (
`id` VARCHAR(191) NOT NULL,
`spriteId` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`description` VARCHAR(191) NOT NULL,
`stackable` BOOLEAN NOT NULL DEFAULT false,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
`action` VARCHAR(191) NOT NULL,
`origin_x` DECIMAL(65, 30) NOT NULL DEFAULT 0,
`origin_y` DECIMAL(65, 30) NOT NULL DEFAULT 0,
`isAnimated` BOOLEAN NOT NULL DEFAULT false,
`isLooping` BOOLEAN NOT NULL DEFAULT false,
`frameWidth` INTEGER NOT NULL DEFAULT 0,
`frameHeight` INTEGER NOT NULL DEFAULT 0,
`frameSpeed` INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@ -32,6 +46,19 @@ CREATE TABLE `User` (
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `CharacterType` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(191) NOT NULL,
`gender` ENUM('MALE', 'FEMALE') NOT NULL,
`race` ENUM('HUMAN', 'ELF', 'DWARF', 'ORC', 'GOBLIN') NOT NULL,
`spriteId` VARCHAR(191) NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Character` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
@ -42,10 +69,11 @@ CREATE TABLE `Character` (
`level` INTEGER NOT NULL DEFAULT 1,
`experience` INTEGER NOT NULL DEFAULT 0,
`role` VARCHAR(191) NOT NULL DEFAULT 'player',
`position_x` INTEGER NOT NULL,
`position_y` INTEGER NOT NULL,
`rotation` INTEGER NOT NULL,
`zoneId` INTEGER NOT NULL,
`position_x` INTEGER NOT NULL DEFAULT 0,
`position_y` INTEGER NOT NULL DEFAULT 0,
`rotation` INTEGER NOT NULL DEFAULT 0,
`zoneId` INTEGER NOT NULL DEFAULT 1,
`characterTypeId` INTEGER NULL,
UNIQUE INDEX `Character_name_key`(`name`),
PRIMARY KEY (`id`)
@ -62,20 +90,53 @@ CREATE TABLE `CharacterItem` (
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `TileTag` (
`tile` VARCHAR(191) NOT NULL,
`tags` JSON NOT NULL,
CREATE TABLE `Tile` (
`id` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`tags` JSON NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`tile`)
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Object` (
`id` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`tags` JSON NULL,
`origin_x` DECIMAL(65, 30) NOT NULL DEFAULT 0,
`origin_y` DECIMAL(65, 30) NOT NULL DEFAULT 0,
`isAnimated` BOOLEAN NOT NULL DEFAULT false,
`frameSpeed` INTEGER NOT NULL DEFAULT 0,
`frameWidth` INTEGER NOT NULL DEFAULT 0,
`frameHeight` INTEGER NOT NULL DEFAULT 0,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Item` (
`id` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`description` VARCHAR(191) NULL,
`stackable` BOOLEAN NOT NULL DEFAULT false,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Zone` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(191) NOT NULL,
`width` INTEGER NOT NULL,
`height` INTEGER NOT NULL,
`tiles` JSON NOT NULL,
`width` INTEGER NOT NULL DEFAULT 10,
`height` INTEGER NOT NULL DEFAULT 10,
`tiles` JSON NULL,
`pvp` BOOLEAN NOT NULL DEFAULT false,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
@ -87,9 +148,9 @@ CREATE TABLE `ZoneObject` (
`id` VARCHAR(191) NOT NULL,
`zoneId` INTEGER NOT NULL,
`objectId` VARCHAR(191) NOT NULL,
`depth` INTEGER NOT NULL,
`position_x` INTEGER NOT NULL,
`position_y` INTEGER NOT NULL,
`depth` INTEGER NOT NULL DEFAULT 0,
`position_x` INTEGER NOT NULL DEFAULT 0,
`position_y` INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@ -105,16 +166,17 @@ CREATE TABLE `ZoneEventTile` (
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Chat` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`characterId` INTEGER NOT NULL,
`zoneId` INTEGER NOT NULL,
`message` VARCHAR(191) NOT NULL,
`createdAt` DATETIME(3) NOT NULL,
-- AddForeignKey
ALTER TABLE `Chat` ADD CONSTRAINT `Chat_characterId_fkey` FOREIGN KEY (`characterId`) REFERENCES `Character`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `Chat` ADD CONSTRAINT `Chat_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `SpriteImage` ADD CONSTRAINT `SpriteImage_spriteId_fkey` FOREIGN KEY (`spriteId`) REFERENCES `Sprite`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `CharacterType` ADD CONSTRAINT `CharacterType_spriteId_fkey` FOREIGN KEY (`spriteId`) REFERENCES `Sprite`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `Character` ADD CONSTRAINT `Character_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
@ -122,6 +184,9 @@ ALTER TABLE `Character` ADD CONSTRAINT `Character_userId_fkey` FOREIGN KEY (`use
-- AddForeignKey
ALTER TABLE `Character` ADD CONSTRAINT `Character_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `Character` ADD CONSTRAINT `Character_characterTypeId_fkey` FOREIGN KEY (`characterTypeId`) REFERENCES `CharacterType`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `CharacterItem` ADD CONSTRAINT `CharacterItem_characterId_fkey` FOREIGN KEY (`characterId`) REFERENCES `Character`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
@ -132,13 +197,7 @@ ALTER TABLE `CharacterItem` ADD CONSTRAINT `CharacterItem_itemId_fkey` FOREIGN K
ALTER TABLE `ZoneObject` ADD CONSTRAINT `ZoneObject_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `ZoneObject` ADD CONSTRAINT `ZoneObject_objectId_fkey` FOREIGN KEY (`objectId`) REFERENCES `Object`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE `ZoneObject` ADD CONSTRAINT `ZoneObject_objectId_fkey` FOREIGN KEY (`objectId`) REFERENCES `Object`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `ZoneEventTile` ADD CONSTRAINT `ZoneEventTile_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `Chat` ADD CONSTRAINT `Chat_characterId_fkey` FOREIGN KEY (`characterId`) REFERENCES `Character`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `Chat` ADD CONSTRAINT `Chat_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -1,34 +1,23 @@
model Sprite {
id String @id @default(uuid())
name String
origin_x Decimal @default(0)
origin_y Decimal @default(0)
isAnimated Boolean @default(false)
frameSpeed Int @default(0)
frameWidth Int @default(0)
frameHeight Int @default(0)
isLooping Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
characterSprites CharacterSprite[]
id String @id @default(uuid())
name String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
spriteImages SpriteImage[]
characterTypes CharacterType[]
}
enum SpriteAction {
IDLE_LEFT
IDLE_DOWN
SIT_LEFT
SIT_DOWN
WALK_LEFT
WALK_DOWN
ATTACK_LEFT
ATTACK_DOWN
}
model CharacterSprite {
id Int @id @default(autoincrement())
characterTypeId Int
spriteId String
action SpriteAction
characterType CharacterType @relation(fields: [characterTypeId], references: [id], onDelete: Cascade)
sprite Sprite @relation(fields: [spriteId], references: [id], onDelete: Cascade)
model SpriteImage {
id String @id @default(uuid())
spriteId String
sprite Sprite @relation(fields: [spriteId], references: [id], onDelete: Cascade)
name String
action String
origin_x Decimal @default(0)
origin_y Decimal @default(0)
isAnimated Boolean @default(false)
isLooping Boolean @default(false)
frameWidth Int @default(0)
frameHeight Int @default(0)
frameSpeed Int @default(0)
}

View File

@ -24,7 +24,8 @@ model CharacterType {
gender CharacterGender
race CharacterRace
characters Character[]
characterSprites CharacterSprite[]
spriteId String
sprite Sprite @relation(fields: [spriteId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

View File

@ -29,7 +29,7 @@ export default function (socket: TSocket, io: Server) {
const character: Character = await prisma.character.create({
data: {
name: data.name,
userId: user_id,
userId: user_id
// characterTypeId: 1 // @TODO set to chosen character type
}
})

View File

@ -0,0 +1,43 @@
import { Server } from 'socket.io'
import { TSocket } from '../../../utilities/Types'
import path from 'path'
import fs from 'fs/promises'
import prisma from '../../../utilities/Prisma'
import { writeFile } from 'node:fs/promises'
/**
* Handle game master new sprite event
* @param socket
* @param io
*/
export default function (socket: TSocket, io: Server) {
socket.on('gm:sprite:create', async (data: undefined, callback: (response: boolean) => void) => {
try {
if (socket.character?.role !== 'gm') {
callback(false)
return
}
const public_folder = path.join(process.cwd(), 'public', 'sprites')
// Ensure the folder exists
await fs.mkdir(public_folder, { recursive: true })
const sprite = await prisma.sprite.create({
data: {
name: 'New sprite'
}
})
const uuid = sprite.id
// Create folder with uuid
const sprite_folder = path.join(public_folder, uuid)
await fs.mkdir(sprite_folder, { recursive: true })
callback(true)
} catch (error) {
console.error('Error creating sprite:', error)
callback(false)
}
})
}

View File

@ -5,12 +5,6 @@ import prisma from '../../../utilities/Prisma'
type Payload = {
id: string
name: string
origin_x: number
origin_y: number
frameSpeed: number
frameWidth: number
frameHeight: number
isLooping: boolean
}
/**
@ -30,13 +24,7 @@ export default function (socket: TSocket, io: Server) {
id: data.id
},
data: {
name: data.name,
origin_x: data.origin_x,
origin_y: data.origin_y,
frameSpeed: data.frameSpeed,
frameWidth: data.frameWidth,
frameHeight: data.frameHeight,
isLooping: data.isLooping
name: data.name
}
})

View File

@ -43,7 +43,7 @@ export default function (socket: TSocket, io: Server) {
callback(true)
} catch (error) {
console.error('Error uploading tile:', error)
console.error('Error uploading sprite:', error)
callback(false)
}
})

View File

@ -4,7 +4,10 @@ import { Sprite } from '@prisma/client'
class SpriteRepository {
async getById(id: string): Promise<Sprite | null> {
return prisma.sprite.findUnique({
where: { id }
where: { id },
include: {
spriteImages: true
}
})
}

View File

@ -89,7 +89,7 @@ async function addHttpRoutes(app: Application) {
const user = await userService.register(username, password)
if (user) {
return res.status(200)
return res.status(200).json({ message: 'User registered' })
}
return res.status(400).json({ message: 'Failed to register user' })