From dae0d365d5d66295662a7d496d18d3e93d96bd85 Mon Sep 17 00:00:00 2001 From: Andrei Date: Wed, 22 Jan 2025 20:33:11 -0600 Subject: [PATCH] Changed toggle functions to set, and refactored the random weather value gen --- .../chat/gameMaster/toggleFogCommand.ts | 2 +- .../chat/gameMaster/toggleRainCommand.ts | 3 +- src/managers/weatherManager.ts | 40 +++++++++++-------- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/events/chat/gameMaster/toggleFogCommand.ts b/src/events/chat/gameMaster/toggleFogCommand.ts index 82df6e0..8500e09 100644 --- a/src/events/chat/gameMaster/toggleFogCommand.ts +++ b/src/events/chat/gameMaster/toggleFogCommand.ts @@ -22,7 +22,7 @@ export default class ToggleFogCommand extends BaseEvent { const args = ChatService.getArgs('fog', data.message) - await WeatherManager.toggleFog(Number(args![0])) + await WeatherManager.setFogValue(Number(args![0])) } catch (error: any) { this.logger.error('command error', error.message) diff --git a/src/events/chat/gameMaster/toggleRainCommand.ts b/src/events/chat/gameMaster/toggleRainCommand.ts index 6675f96..e83fe3d 100644 --- a/src/events/chat/gameMaster/toggleRainCommand.ts +++ b/src/events/chat/gameMaster/toggleRainCommand.ts @@ -22,7 +22,8 @@ export default class ToggleRainCommand extends BaseEvent { let args = ChatService.getArgs('rain', data.message) - await WeatherManager.toggleRain(Number(args![0])) + //if no arguments are given, should default to random + await WeatherManager.setRainValue(Number(args![0])) } catch (error: any) { this.logger.error('command error', error.message) diff --git a/src/managers/weatherManager.ts b/src/managers/weatherManager.ts index e272607..e1f1f3b 100644 --- a/src/managers/weatherManager.ts +++ b/src/managers/weatherManager.ts @@ -39,12 +39,29 @@ class WeatherManager { return { ...this.weatherState } } - public async toggleRain(value? : number): Promise { + public randomWeatherValue(type: 'rain' | 'fog' ) { + switch (type) { + case 'rain': + return this.getRandomNumber(WeatherManager.CONFIG.RAIN_PERCENTAGE_RANGE.min, WeatherManager.CONFIG.RAIN_PERCENTAGE_RANGE.max) + case 'fog': + return this.getRandomNumber(WeatherManager.CONFIG.FOG_DENSITY_RANGE.min, WeatherManager.CONFIG.FOG_DENSITY_RANGE.max) + } + } + + public async setRainValue(value? : number): Promise { + if (value === undefined) { + value = this.weatherState.fogDensity > 0 ? 0 : this.randomWeatherValue('fog') + } + this.updateWeatherProperty('rain', value) await this.saveAndEmitWeather() } - public async toggleFog(value? : number): Promise { + public async setFogValue(value? : number): Promise { + if (value === undefined) { + value = this.weatherState.fogDensity > 0 ? 0 : this.randomWeatherValue('fog') + } + this.updateWeatherProperty('fog', value) await this.saveAndEmitWeather() } @@ -77,32 +94,20 @@ class WeatherManager { private updateRandomWeather(): void { if (Math.random() < WeatherManager.CONFIG.RAIN_CHANCE) { - this.updateWeatherProperty('rain') + this.updateWeatherProperty('rain', this.randomWeatherValue('rain') ) } if (Math.random() < WeatherManager.CONFIG.FOG_CHANCE) { - this.updateWeatherProperty('fog') + this.updateWeatherProperty('fog', this.randomWeatherValue('fog')) } } - private updateWeatherProperty(type: 'rain' | 'fog', value?: number): void { + private updateWeatherProperty(type: 'rain' | 'fog', value: number): void { if (type === 'rain') { - 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') { - 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) - } } } @@ -122,6 +127,7 @@ class WeatherManager { let world = await worldRepository.getFirst() if (!world) world = new World() + //left them in here because the await world .setRainPercentage(this.weatherState.rainPercentage) .setIsRainEnabled(this.weatherState.rainPercentage > 0)