forked from noxious/server
idk
This commit is contained in:
@ -30,7 +30,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
|
||||
}
|
||||
})
|
||||
|
@ -8,7 +8,7 @@ import Rotation from '../../utilities/player/rotation'
|
||||
const moveTokens = new Map<number, symbol>()
|
||||
|
||||
export default function setupCharacterMove(socket: TSocket, io: Server) {
|
||||
socket.on('character:move', async ({ position_x, position_y }: { position_x: number; position_y: number }) => {
|
||||
socket.on('character:move', async ({ positionX, positionY }: { positionX: number; positionY: number }) => {
|
||||
const { character } = socket
|
||||
if (!character) return console.error('character:move error', 'Character not found')
|
||||
|
||||
@ -16,8 +16,8 @@ export default function setupCharacterMove(socket: TSocket, io: Server) {
|
||||
const grid = await ZoneManager.getGrid(character.zoneId)
|
||||
if (!grid?.length) return console.error('character:move error', 'Grid not found or empty')
|
||||
|
||||
const start = { x: Math.floor(character.position_x), y: Math.floor(character.position_y) }
|
||||
const end = { x: Math.floor(position_x), y: Math.floor(position_y) }
|
||||
const start = { x: Math.floor(character.positionX), y: Math.floor(character.positionY) }
|
||||
const end = { x: Math.floor(positionX), y: Math.floor(positionY) }
|
||||
|
||||
if (isObstacle(end, grid)) return socket.emit('character:moveError', 'Destination is an obstacle')
|
||||
|
||||
@ -80,17 +80,14 @@ const interpolatePosition = (start: { x: number; y: number }, end: { x: number;
|
||||
const isObstacle = ({ x, y }: { x: number; y: number }, grid: number[][]) => {
|
||||
const gridX = Math.floor(x)
|
||||
const gridY = Math.floor(y)
|
||||
return grid[gridY]?.[gridX] === 1 ||
|
||||
grid[gridY]?.[Math.ceil(x)] === 1 ||
|
||||
grid[Math.ceil(y)]?.[gridX] === 1 ||
|
||||
grid[Math.ceil(y)]?.[Math.ceil(x)] === 1
|
||||
return grid[gridY]?.[gridX] === 1 || grid[gridY]?.[Math.ceil(x)] === 1 || grid[Math.ceil(y)]?.[gridX] === 1 || grid[Math.ceil(y)]?.[Math.ceil(x)] === 1
|
||||
}
|
||||
|
||||
async function updateCharacter(character: ExtendedCharacter, { x, y }: { x: number; y: number }, rotation: number) {
|
||||
Object.assign(character, { position_x: x, position_y: y, rotation })
|
||||
Object.assign(character, { positionX: x, positionY: y, rotation })
|
||||
ZoneManager.updateCharacterInZone(character.zoneId, character)
|
||||
await prisma.character.update({
|
||||
where: { id: character.id },
|
||||
data: { position_x: x, position_y: y, rotation }
|
||||
data: { positionX: x, positionY: y, rotation }
|
||||
})
|
||||
}
|
||||
|
@ -6,8 +6,8 @@ type Payload = {
|
||||
id: string
|
||||
name: string
|
||||
tags: string[]
|
||||
origin_x: number
|
||||
origin_y: number
|
||||
originX: number
|
||||
originY: number
|
||||
isAnimated: boolean
|
||||
frameSpeed: number
|
||||
frameWidth: number
|
||||
@ -33,8 +33,8 @@ export default function (socket: TSocket, io: Server) {
|
||||
data: {
|
||||
name: data.name,
|
||||
tags: data.tags,
|
||||
origin_x: data.origin_x,
|
||||
origin_y: data.origin_y,
|
||||
originX: data.originX,
|
||||
originY: data.originY,
|
||||
isAnimated: data.isAnimated,
|
||||
frameSpeed: data.frameSpeed,
|
||||
frameWidth: data.frameWidth,
|
||||
|
@ -32,8 +32,8 @@ export default function (socket: TSocket, io: Server) {
|
||||
data: {
|
||||
name: key,
|
||||
tags: [],
|
||||
origin_x: 0,
|
||||
origin_y: 0
|
||||
originX: 0,
|
||||
originY: 0
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -98,11 +98,11 @@ async function updateDatabase(id: string, name: string, processedActions: Proces
|
||||
name,
|
||||
spriteActions: {
|
||||
deleteMany: { spriteId: id },
|
||||
create: processedActions.map(({ action, sprites, origin_x, origin_y, isAnimated, isLooping, frameWidth, frameHeight, frameSpeed }) => ({
|
||||
create: processedActions.map(({ action, sprites, originX, originY, isAnimated, isLooping, frameWidth, frameHeight, frameSpeed }) => ({
|
||||
action,
|
||||
sprites,
|
||||
origin_x,
|
||||
origin_y,
|
||||
originX,
|
||||
originY,
|
||||
isAnimated,
|
||||
isLooping,
|
||||
frameWidth,
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Server } from 'socket.io'
|
||||
import { TSocket } from '../../../utilities/types'
|
||||
import ZoneRepository from '../../../repositories/zoneRepository'
|
||||
import { ZoneEventTile, ZoneObject } from '@prisma/client'
|
||||
import { ZoneEventTile, ZoneEventTileType, ZoneObject } from '@prisma/client'
|
||||
import prisma from '../../../utilities/prisma'
|
||||
import zoneManager from '../../../managers/zoneManager'
|
||||
|
||||
@ -12,7 +12,16 @@ interface IPayload {
|
||||
height: number
|
||||
tiles: string[][]
|
||||
pvp: boolean
|
||||
zoneEventTiles: ZoneEventTile[]
|
||||
zoneEventTiles: {
|
||||
type: ZoneEventTileType
|
||||
positionX: number
|
||||
positionY: number
|
||||
teleport?: {
|
||||
toZoneId: number
|
||||
toPositionX: number
|
||||
toPositionY: number
|
||||
}
|
||||
}[]
|
||||
zoneObjects: ZoneObject[]
|
||||
}
|
||||
|
||||
@ -62,8 +71,19 @@ export default function (socket: TSocket, io: Server) {
|
||||
// Save new zone event tiles
|
||||
create: data.zoneEventTiles.map((zoneEventTile) => ({
|
||||
type: zoneEventTile.type,
|
||||
position_x: zoneEventTile.position_x,
|
||||
position_y: zoneEventTile.position_y
|
||||
positionX: zoneEventTile.positionX,
|
||||
positionY: zoneEventTile.positionY,
|
||||
...(zoneEventTile.type === 'TELEPORT' && zoneEventTile.teleport
|
||||
? {
|
||||
teleport: {
|
||||
create: {
|
||||
toZoneId: zoneEventTile.teleport.toZoneId,
|
||||
toPositionX: zoneEventTile.teleport.toPositionX,
|
||||
toPositionY: zoneEventTile.teleport.toPositionY
|
||||
}
|
||||
}
|
||||
}
|
||||
: {})
|
||||
}))
|
||||
},
|
||||
zoneObjects: {
|
||||
@ -74,8 +94,8 @@ export default function (socket: TSocket, io: Server) {
|
||||
create: data.zoneObjects.map((zoneObject) => ({
|
||||
objectId: zoneObject.objectId,
|
||||
depth: zoneObject.depth,
|
||||
position_x: zoneObject.position_x,
|
||||
position_y: zoneObject.position_y
|
||||
positionX: zoneObject.positionX,
|
||||
positionY: zoneObject.positionY
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user