Removed weather effects booleans, now to disable weather effects, setting the value to 0 is the way
This commit is contained in:
parent
189fd39377
commit
020f2bd3c5
@ -46,8 +46,11 @@ export type AssetData = {
|
||||
|
||||
export type WorldSettings = {
|
||||
date: Date
|
||||
isRainEnabled: boolean
|
||||
isFogEnabled: boolean
|
||||
weatherState: WeatherState
|
||||
}
|
||||
|
||||
export type WeatherState = {
|
||||
rainPercentage: number
|
||||
fogDensity: number
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,10 @@ export default class ToggleFogCommand extends BaseEvent {
|
||||
// Check if character exists and is GM
|
||||
if (!(await this.isCharacterGM())) return
|
||||
|
||||
await WeatherManager.toggleFog()
|
||||
const args = ChatService.getArgs('fog', data.message)
|
||||
|
||||
await WeatherManager.toggleFog(Number(args![0]))
|
||||
|
||||
} catch (error: any) {
|
||||
this.logger.error('command error', error.message)
|
||||
callback(false)
|
||||
|
@ -20,7 +20,10 @@ export default class ToggleRainCommand extends BaseEvent {
|
||||
// Check if character exists and is GM
|
||||
if (!(await this.isCharacterGM())) return
|
||||
|
||||
await WeatherManager.toggleRain()
|
||||
let args = ChatService.getArgs('rain', data.message)
|
||||
|
||||
await WeatherManager.toggleRain(Number(args![0]))
|
||||
|
||||
} catch (error: any) {
|
||||
this.logger.error('command error', error.message)
|
||||
callback(false)
|
||||
|
@ -6,9 +6,7 @@ import SocketManager from '#managers/socketManager'
|
||||
import WorldRepository from '#repositories/worldRepository'
|
||||
|
||||
type WeatherState = {
|
||||
isRainEnabled: boolean
|
||||
rainPercentage: number
|
||||
isFogEnabled: boolean
|
||||
fogDensity: number
|
||||
}
|
||||
|
||||
@ -26,9 +24,7 @@ class WeatherManager {
|
||||
private intervalId: NodeJS.Timeout | null = null
|
||||
|
||||
private weatherState: WeatherState = {
|
||||
isRainEnabled: false,
|
||||
rainPercentage: 0,
|
||||
isFogEnabled: false,
|
||||
fogDensity: 0
|
||||
}
|
||||
|
||||
@ -43,13 +39,13 @@ class WeatherManager {
|
||||
return { ...this.weatherState }
|
||||
}
|
||||
|
||||
public async toggleRain(): Promise<void> {
|
||||
this.updateWeatherProperty('rain')
|
||||
public async toggleRain(value? : number): Promise<void> {
|
||||
this.updateWeatherProperty('rain', value)
|
||||
await this.saveAndEmitWeather()
|
||||
}
|
||||
|
||||
public async toggleFog(): Promise<void> {
|
||||
this.updateWeatherProperty('fog')
|
||||
public async toggleFog(value? : number): Promise<void> {
|
||||
this.updateWeatherProperty('fog', value)
|
||||
await this.saveAndEmitWeather()
|
||||
}
|
||||
|
||||
@ -63,9 +59,7 @@ class WeatherManager {
|
||||
const world = await worldRepository.getFirst()
|
||||
if (world) {
|
||||
this.weatherState = {
|
||||
isRainEnabled: world.isRainEnabled,
|
||||
rainPercentage: world.rainPercentage,
|
||||
isFogEnabled: world.isFogEnabled,
|
||||
fogDensity: world.fogDensity
|
||||
}
|
||||
}
|
||||
@ -90,15 +84,25 @@ class WeatherManager {
|
||||
}
|
||||
}
|
||||
|
||||
private updateWeatherProperty(type: 'rain' | 'fog'): void {
|
||||
private updateWeatherProperty(type: 'rain' | 'fog', value?: number): void {
|
||||
if (type === 'rain') {
|
||||
this.weatherState.isRainEnabled = !this.weatherState.isRainEnabled
|
||||
this.weatherState.rainPercentage = this.weatherState.isRainEnabled ? this.getRandomNumber(WeatherManager.CONFIG.RAIN_PERCENTAGE_RANGE.min, WeatherManager.CONFIG.RAIN_PERCENTAGE_RANGE.max) : 0
|
||||
if (value !== undefined) {
|
||||
this.weatherState.rainPercentage = value
|
||||
}
|
||||
else {
|
||||
this.weatherState.rainPercentage = this.weatherState.rainPercentage > 0 ? 0 :
|
||||
this.weatherState.rainPercentage = this.getRandomNumber(WeatherManager.CONFIG.RAIN_PERCENTAGE_RANGE.min, WeatherManager.CONFIG.RAIN_PERCENTAGE_RANGE.max)
|
||||
}
|
||||
}
|
||||
|
||||
if (type === 'fog') {
|
||||
this.weatherState.isFogEnabled = !this.weatherState.isFogEnabled
|
||||
this.weatherState.fogDensity = this.weatherState.isFogEnabled ? this.getRandomNumber(WeatherManager.CONFIG.FOG_DENSITY_RANGE.min, WeatherManager.CONFIG.FOG_DENSITY_RANGE.max) : 0
|
||||
if (value !== undefined) {
|
||||
this.weatherState.fogDensity = value
|
||||
}
|
||||
else {
|
||||
this.weatherState.rainPercentage = this.weatherState.fogDensity > 0 ? 0 :
|
||||
this.weatherState.fogDensity = this.getRandomNumber(WeatherManager.CONFIG.FOG_DENSITY_RANGE.min, WeatherManager.CONFIG.FOG_DENSITY_RANGE.max)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,10 +123,10 @@ class WeatherManager {
|
||||
if (!world) world = new World()
|
||||
|
||||
await world
|
||||
.setIsRainEnabled(this.weatherState.isRainEnabled)
|
||||
.setRainPercentage(this.weatherState.rainPercentage)
|
||||
.setIsFogEnabled(this.weatherState.isFogEnabled)
|
||||
.setIsRainEnabled(this.weatherState.rainPercentage > 0)
|
||||
.setFogDensity(this.weatherState.fogDensity)
|
||||
.setIsFogEnabled(this.weatherState.fogDensity > 0)
|
||||
.save()
|
||||
} catch (error) {
|
||||
this.logError('save', error)
|
||||
|
Loading…
x
Reference in New Issue
Block a user