npm update, removed player store and merged it with socket store, worked on character creation & selection (partially works)
This commit is contained in:
parent
d3e1bf0047
commit
b19625014a
12
package-lock.json
generated
12
package-lock.json
generated
@ -213,9 +213,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/express-serve-static-core": {
|
"node_modules/@types/express-serve-static-core": {
|
||||||
"version": "4.19.1",
|
"version": "4.19.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz",
|
||||||
"integrity": "sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA==",
|
"integrity": "sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -250,9 +250,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.12.12",
|
"version": "20.12.13",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.13.tgz",
|
||||||
"integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==",
|
"integrity": "sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~5.26.4"
|
"undici-types": "~5.26.4"
|
||||||
|
@ -11,11 +11,16 @@ CREATE TABLE `User` (
|
|||||||
-- CreateTable
|
-- CreateTable
|
||||||
CREATE TABLE `Character` (
|
CREATE TABLE `Character` (
|
||||||
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
`userId` INTEGER NOT NULL,
|
||||||
`name` VARCHAR(191) NOT NULL,
|
`name` VARCHAR(191) NOT NULL,
|
||||||
|
`hitpoints` INTEGER NOT NULL DEFAULT 100,
|
||||||
|
`mana` INTEGER NOT NULL DEFAULT 100,
|
||||||
|
`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_x` INTEGER NOT NULL,
|
||||||
`position_y` INTEGER NOT NULL,
|
`position_y` INTEGER NOT NULL,
|
||||||
`rotation` INTEGER NOT NULL,
|
`rotation` INTEGER NOT NULL,
|
||||||
`userId` INTEGER NOT NULL,
|
|
||||||
`zoneId` INTEGER NOT NULL,
|
`zoneId` INTEGER NOT NULL,
|
||||||
|
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
@ -32,8 +37,25 @@ CREATE TABLE `Zone` (
|
|||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
) 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,
|
||||||
|
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||||
|
|
||||||
-- AddForeignKey
|
-- AddForeignKey
|
||||||
ALTER TABLE `Character` ADD CONSTRAINT `Character_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
ALTER TABLE `Character` ADD CONSTRAINT `Character_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||||
|
|
||||||
-- AddForeignKey
|
-- AddForeignKey
|
||||||
ALTER TABLE `Character` ADD CONSTRAINT `Character_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
ALTER TABLE `Character` ADD CONSTRAINT `Character_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `Chat` ADD CONSTRAINT `Chat_characterId_fkey` FOREIGN KEY (`characterId`) REFERENCES `Character`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE `Chat` ADD CONSTRAINT `Chat_zoneId_fkey` FOREIGN KEY (`zoneId`) REFERENCES `Zone`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
@ -31,11 +31,17 @@ model Character {
|
|||||||
userId Int
|
userId Int
|
||||||
user User @relation(fields: [userId], references: [id])
|
user User @relation(fields: [userId], references: [id])
|
||||||
name String
|
name String
|
||||||
|
hitpoints Int @default(100)
|
||||||
|
mana Int @default(100)
|
||||||
|
level Int @default(1)
|
||||||
|
experience Int @default(0)
|
||||||
|
role String @default("player")
|
||||||
position_x Int
|
position_x Int
|
||||||
position_y Int
|
position_y Int
|
||||||
rotation Int
|
rotation Int
|
||||||
zoneId Int
|
zoneId Int
|
||||||
zone Zone @relation(fields: [zoneId], references: [id])
|
zone Zone @relation(fields: [zoneId], references: [id])
|
||||||
|
chats Chat[]
|
||||||
}
|
}
|
||||||
|
|
||||||
model Zone {
|
model Zone {
|
||||||
@ -45,4 +51,15 @@ model Zone {
|
|||||||
height Int
|
height Int
|
||||||
tiles Json
|
tiles Json
|
||||||
characters Character[]
|
characters Character[]
|
||||||
|
chats Chat[]
|
||||||
|
}
|
||||||
|
|
||||||
|
model Chat {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
characterId Int
|
||||||
|
character Character @relation(fields: [characterId], references: [id])
|
||||||
|
zoneId Int
|
||||||
|
zone Zone @relation(fields: [zoneId], references: [id])
|
||||||
|
message String
|
||||||
|
createdAt DateTime
|
||||||
}
|
}
|
@ -1,8 +1,20 @@
|
|||||||
import { Socket, Server } from "socket.io";
|
import { Socket, Server } from "socket.io";
|
||||||
import {TSocket} from "../types/TSocket";
|
import {TSocket} from "../types/TSocket";
|
||||||
|
import CharacterRepository from "../repositories/CharacterRepository";
|
||||||
|
import {Character} from "@prisma/client";
|
||||||
|
|
||||||
|
type SocketResponseT = {
|
||||||
|
character_id: number
|
||||||
|
}
|
||||||
|
|
||||||
export default function CharacterConnect(socket: TSocket, io: Server) {
|
export default function CharacterConnect(socket: TSocket, io: Server) {
|
||||||
socket.on('character:connect', (data: any) => {
|
socket.on('character:connect', async (data: SocketResponseT) => {
|
||||||
console.log(`---User ${socket.user?.id} has joined.`);
|
try {
|
||||||
|
console.log('character:connect', data.character_id);
|
||||||
|
socket.character = await CharacterRepository.getById(data.character_id) as Character;
|
||||||
|
socket.emit('character:connect', socket.character)
|
||||||
|
} catch (error: any) {
|
||||||
|
console.log('character:connect error', error);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
@ -1,7 +1,9 @@
|
|||||||
import { Socket, Server } from "socket.io";
|
import { Socket, Server } from "socket.io";
|
||||||
|
import {TSocket} from "../types/TSocket";
|
||||||
|
|
||||||
export default function Login(socket: Socket, io: Server) {
|
export default function Login(socket: TSocket, io: Server) {
|
||||||
socket.on('login', (data: any) => {
|
socket.on('login', () => {
|
||||||
console.log(`---User ${socket.id} has logged in.`);
|
// return user data
|
||||||
|
socket.emit('login', {user: socket.user});
|
||||||
});
|
});
|
||||||
}
|
}
|
@ -16,6 +16,19 @@ class CharacterRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getById(id: number): Promise<Character | null> {
|
||||||
|
try {
|
||||||
|
return await prisma.character.findUnique({
|
||||||
|
where: {
|
||||||
|
id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (error: any) {
|
||||||
|
// Handle error
|
||||||
|
throw new Error(`Failed to get character by ID: ${error.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async create(userId: number, name: string): Promise<Character | null> {
|
async create(userId: number, name: string): Promise<Character | null> {
|
||||||
try {
|
try {
|
||||||
return await prisma.character.create({
|
return await prisma.character.create({
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import {Socket} from "socket.io";
|
import {Socket} from "socket.io";
|
||||||
import { User } from '@prisma/client';
|
import {Character, User} from '@prisma/client';
|
||||||
|
|
||||||
export type TSocket = Socket & {
|
export type TSocket = Socket & {
|
||||||
user?: User
|
user?: User
|
||||||
|
character?: Character
|
||||||
handshake?: {
|
handshake?: {
|
||||||
query?: {
|
query?: {
|
||||||
token?: any
|
token?: any
|
||||||
|
Loading…
x
Reference in New Issue
Block a user