forked from noxious/server
Made printWidth smaller for better readability, removed redundant services
This commit is contained in:
parent
ae269be196
commit
9bdafd5026
@ -3,6 +3,6 @@
|
|||||||
"semi": false,
|
"semi": false,
|
||||||
"tabWidth": 2,
|
"tabWidth": 2,
|
||||||
"singleQuote": true,
|
"singleQuote": true,
|
||||||
"printWidth": 300,
|
"printWidth": 200,
|
||||||
"trailingComma": "none"
|
"trailingComma": "none"
|
||||||
}
|
}
|
@ -1,4 +1,3 @@
|
|||||||
import { EntityManager } from '@mikro-orm/core'
|
|
||||||
import { MikroORM } from '@mikro-orm/mysql'
|
import { MikroORM } from '@mikro-orm/mysql'
|
||||||
|
|
||||||
import Logger, { LoggerType } from './logger'
|
import Logger, { LoggerType } from './logger'
|
||||||
|
@ -152,7 +152,14 @@ export default class InitCommand extends BaseCommand {
|
|||||||
.save()
|
.save()
|
||||||
|
|
||||||
const characterType = new CharacterType()
|
const characterType = new CharacterType()
|
||||||
await characterType.setId('75b70c78-17f0-44c0-a4fa-15043cb95be0').setName('New character type').setGender(CharacterGender.MALE).setRace(CharacterRace.HUMAN).setIsSelectable(true).setSprite(characterSprite).save()
|
await characterType
|
||||||
|
.setId('75b70c78-17f0-44c0-a4fa-15043cb95be0')
|
||||||
|
.setName('New character type')
|
||||||
|
.setGender(CharacterGender.MALE)
|
||||||
|
.setRace(CharacterRace.HUMAN)
|
||||||
|
.setIsSelectable(true)
|
||||||
|
.setSprite(characterSprite)
|
||||||
|
.save()
|
||||||
}
|
}
|
||||||
|
|
||||||
private async createCharacterHair(): Promise<void> {
|
private async createCharacterHair(): Promise<void> {
|
||||||
|
@ -28,7 +28,16 @@ export default class MapObjectUpdateEvent extends BaseEvent {
|
|||||||
const mapObject = await mapObjectRepository.getById(data.id)
|
const mapObject = await mapObjectRepository.getById(data.id)
|
||||||
if (!mapObject) return callback(false)
|
if (!mapObject) return callback(false)
|
||||||
|
|
||||||
await mapObject.setName(data.name).setTags(data.tags).setOriginX(data.originX).setOriginY(data.originY).setIsAnimated(data.isAnimated).setFrameRate(data.frameRate).setFrameWidth(data.frameWidth).setFrameHeight(data.frameHeight).save()
|
await mapObject
|
||||||
|
.setName(data.name)
|
||||||
|
.setTags(data.tags)
|
||||||
|
.setOriginX(data.originX)
|
||||||
|
.setOriginY(data.originY)
|
||||||
|
.setIsAnimated(data.isAnimated)
|
||||||
|
.setFrameRate(data.frameRate)
|
||||||
|
.setFrameWidth(data.frameWidth)
|
||||||
|
.setFrameHeight(data.frameHeight)
|
||||||
|
.save()
|
||||||
|
|
||||||
return callback(true)
|
return callback(true)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
@ -96,7 +96,13 @@ export default class MapUpdateEvent extends BaseEvent {
|
|||||||
|
|
||||||
// Create and add new map objects
|
// Create and add new map objects
|
||||||
for (const object of data.placedMapObjects) {
|
for (const object of data.placedMapObjects) {
|
||||||
const mapObject = new PlacedMapObject().setMapObject(object.mapObject).setDepth(object.depth).setIsRotated(object.isRotated).setPositionX(object.positionX).setPositionY(object.positionY).setMap(map)
|
const mapObject = new PlacedMapObject()
|
||||||
|
.setMapObject(object.mapObject)
|
||||||
|
.setDepth(object.depth)
|
||||||
|
.setIsRotated(object.isRotated)
|
||||||
|
.setPositionX(object.positionX)
|
||||||
|
.setPositionY(object.positionY)
|
||||||
|
.setMap(map)
|
||||||
map.placedMapObjects.add(mapObject)
|
map.placedMapObjects.add(mapObject)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +89,8 @@ class DateManager {
|
|||||||
|
|
||||||
private async saveDate(): Promise<void> {
|
private async saveDate(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
await WorldService.update({ date: this.currentDate })
|
const worldRepository = new WorldRepository()
|
||||||
|
await (await worldRepository.getFirst())?.setDate(this.currentDate).save()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.handleError('Failed to save date', error)
|
this.handleError('Failed to save date', error)
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,13 @@ class WeatherManager {
|
|||||||
|
|
||||||
private async saveWeather(): Promise<void> {
|
private async saveWeather(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
await WorldService.update(this.weatherState)
|
const worldRepository = new WorldRepository()
|
||||||
|
await (await worldRepository.getFirst())
|
||||||
|
?.setIsRainEnabled(this.weatherState.isRainEnabled)
|
||||||
|
.setRainPercentage(this.weatherState.rainPercentage)
|
||||||
|
.setIsFogEnabled(this.weatherState.isFogEnabled)
|
||||||
|
.setFogDensity(this.weatherState.fogDensity)
|
||||||
|
.save()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.logError('save', error)
|
this.logError('save', error)
|
||||||
}
|
}
|
||||||
|
@ -7,11 +7,13 @@ import config from '#application/config'
|
|||||||
import Database from '#application/database'
|
import Database from '#application/database'
|
||||||
import Logger, { LoggerType } from '#application/logger'
|
import Logger, { LoggerType } from '#application/logger'
|
||||||
import ConsoleManager from '#managers/consoleManager'
|
import ConsoleManager from '#managers/consoleManager'
|
||||||
|
import DateManager from '#managers/dateManager'
|
||||||
import HttpManager from '#managers/httpManager'
|
import HttpManager from '#managers/httpManager'
|
||||||
import MapManager from '#managers/mapManager'
|
import MapManager from '#managers/mapManager'
|
||||||
import QueueManager from '#managers/queueManager'
|
import QueueManager from '#managers/queueManager'
|
||||||
import SocketManager from '#managers/socketManager'
|
import SocketManager from '#managers/socketManager'
|
||||||
import UserManager from '#managers/userManager'
|
import UserManager from '#managers/userManager'
|
||||||
|
import WeatherManager from '#managers/weatherManager'
|
||||||
|
|
||||||
export class Server {
|
export class Server {
|
||||||
private readonly app: Application
|
private readonly app: Application
|
||||||
@ -36,7 +38,16 @@ export class Server {
|
|||||||
this.logger.info(`Server running on port ${config.PORT}`)
|
this.logger.info(`Server running on port ${config.PORT}`)
|
||||||
|
|
||||||
// Initialize managers
|
// Initialize managers
|
||||||
await Promise.all([HttpManager.boot(this.app), SocketManager.boot(this.app, this.http), QueueManager.boot(), UserManager.boot(), MapManager.boot(), ConsoleManager.boot()])
|
await Promise.all([
|
||||||
|
HttpManager.boot(this.app),
|
||||||
|
SocketManager.boot(this.app, this.http),
|
||||||
|
QueueManager.boot(),
|
||||||
|
UserManager.boot(),
|
||||||
|
MapManager.boot(),
|
||||||
|
DateManager.boot(),
|
||||||
|
WeatherManager.boot(),
|
||||||
|
ConsoleManager.boot()
|
||||||
|
])
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
this.logger.error(`Server failed to start: ${error.message}`)
|
this.logger.error(`Server failed to start: ${error.message}`)
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
import { BaseService } from '#application/base/baseService'
|
|
||||||
import passwordResetTokenRepository from '#repositories/passwordResetTokenRepository'
|
|
||||||
|
|
||||||
class PasswordResetTokenService extends BaseService {
|
|
||||||
/**
|
|
||||||
* Delete token
|
|
||||||
* @param token
|
|
||||||
*/
|
|
||||||
public async delete(token: string): Promise<boolean> {
|
|
||||||
try {
|
|
||||||
const tokenData = await passwordResetTokenRepository.getByToken(token)
|
|
||||||
if (!tokenData) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
await tokenData.delete()
|
|
||||||
|
|
||||||
return true
|
|
||||||
} catch (error: any) {
|
|
||||||
this.logger.error(`Error deleting password reset token: ${error instanceof Error ? error.message : String(error)}`)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default new PasswordResetTokenService()
|
|
@ -1,8 +1,6 @@
|
|||||||
import bcrypt from 'bcryptjs'
|
import bcrypt from 'bcryptjs'
|
||||||
import NodeMailer from 'nodemailer'
|
import NodeMailer from 'nodemailer'
|
||||||
|
|
||||||
import PasswordResetTokenService from './passwordResetTokenService' // @TODO: Correctly implement this
|
|
||||||
|
|
||||||
import { BaseService } from '#application/base/baseService'
|
import { BaseService } from '#application/base/baseService'
|
||||||
import config from '#application/config'
|
import config from '#application/config'
|
||||||
import { PasswordResetToken } from '#entities/passwordResetToken'
|
import { PasswordResetToken } from '#entities/passwordResetToken'
|
||||||
@ -50,8 +48,7 @@ class UserService extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const newUser = new User()
|
const newUser = new User()
|
||||||
newUser.setUsername(username).setEmail(email).setPassword(password)
|
await newUser.setUsername(username).setEmail(email).setPassword(password).save()
|
||||||
await newUser.save()
|
|
||||||
|
|
||||||
return newUser
|
return newUser
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
@ -81,8 +78,7 @@ class UserService extends BaseService {
|
|||||||
|
|
||||||
// Create new token using MikroORM
|
// Create new token using MikroORM
|
||||||
const passwordResetToken = new PasswordResetToken()
|
const passwordResetToken = new PasswordResetToken()
|
||||||
passwordResetToken.setUser(user).setToken(token)
|
await passwordResetToken.setUser(user).setToken(token).save()
|
||||||
await passwordResetToken.save()
|
|
||||||
|
|
||||||
const transporter = NodeMailer.createTransport({
|
const transporter = NodeMailer.createTransport({
|
||||||
host: config.SMTP_HOST,
|
host: config.SMTP_HOST,
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
import { BaseService } from '#application/base/baseService'
|
|
||||||
import { World } from '#entities/world'
|
|
||||||
import WorldRepository from '#repositories/worldRepository'
|
|
||||||
|
|
||||||
class WorldService extends BaseService {
|
|
||||||
async update(worldData: Partial<World>): Promise<boolean> {
|
|
||||||
try {
|
|
||||||
let world = await WorldRepository.getFirst()
|
|
||||||
if (!world) {
|
|
||||||
world = new World()
|
|
||||||
}
|
|
||||||
|
|
||||||
world.setDate(worldData.date || new Date())
|
|
||||||
|
|
||||||
if (worldData.isRainEnabled) {
|
|
||||||
world.setIsRainEnabled(worldData.isRainEnabled)
|
|
||||||
}
|
|
||||||
if (worldData.rainPercentage) {
|
|
||||||
world.setRainPercentage(worldData.rainPercentage)
|
|
||||||
}
|
|
||||||
if (worldData.isFogEnabled) {
|
|
||||||
world.setIsFogEnabled(worldData.isFogEnabled)
|
|
||||||
}
|
|
||||||
if (worldData.fogDensity) {
|
|
||||||
world.setFogDensity(worldData.fogDensity)
|
|
||||||
}
|
|
||||||
|
|
||||||
await world.save()
|
|
||||||
|
|
||||||
return true
|
|
||||||
} catch (error: any) {
|
|
||||||
this.logger.error(`Failed to update world: ${error instanceof Error ? error.message : String(error)}`)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default new WorldService()
|
|
Loading…
x
Reference in New Issue
Block a user