mirror of https://github.com/OpenRCT2/OpenRCT2.git
Add climate information to Park API (#14636)
This commit is contained in:
parent
1fef332f6a
commit
d309a7c871
|
@ -5,6 +5,7 @@
|
||||||
- Feature: [#14296] Allow using early scenario completion in multiplayer.
|
- Feature: [#14296] Allow using early scenario completion in multiplayer.
|
||||||
- Feature: [#14538] [Plugin] Add property for getting current plugin api version.
|
- Feature: [#14538] [Plugin] Add property for getting current plugin api version.
|
||||||
- Feature: [#14620] [Plugin] Add properties related to guest generation.
|
- Feature: [#14620] [Plugin] Add properties related to guest generation.
|
||||||
|
- Feature: [#14636] [Plugin] Add properties related to climate and weather.
|
||||||
- Change: [#14496] [Plugin] Rename Object to LoadedObject to fix conflicts with Typescript's Object interface.
|
- Change: [#14496] [Plugin] Rename Object to LoadedObject to fix conflicts with Typescript's Object interface.
|
||||||
- Change: [#14536] [Plugin] Rename ListView to ListViewWidget to make it consistent with names of other widgets.
|
- Change: [#14536] [Plugin] Rename ListView to ListViewWidget to make it consistent with names of other widgets.
|
||||||
- Fix: [#11829] Visual glitches and crashes when using RCT1 assets from mismatched or corrupt CSG1.DAT and CSG1i.DAT files.
|
- Fix: [#11829] Visual glitches and crashes when using RCT1 assets from mismatched or corrupt CSG1.DAT and CSG1i.DAT files.
|
||||||
|
|
|
@ -37,6 +37,8 @@ declare global {
|
||||||
var park: Park;
|
var park: Park;
|
||||||
/** APIs for the current scenario. */
|
/** APIs for the current scenario. */
|
||||||
var scenario: Scenario;
|
var scenario: Scenario;
|
||||||
|
/** APIs for the climate and weather. */
|
||||||
|
var climate: Climate;
|
||||||
/**
|
/**
|
||||||
* APIs for creating and editing title sequences.
|
* APIs for creating and editing title sequences.
|
||||||
* These will only be available to clients that are not running headless mode.
|
* These will only be available to clients that are not running headless mode.
|
||||||
|
@ -1819,6 +1821,45 @@ declare global {
|
||||||
companyValueRecord: number;
|
companyValueRecord: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ClimateType =
|
||||||
|
"coolAndWet" |
|
||||||
|
"warm" |
|
||||||
|
"hotAndDry" |
|
||||||
|
"cold";
|
||||||
|
|
||||||
|
type WeatherType =
|
||||||
|
"sunny" |
|
||||||
|
"partiallyCloudy" |
|
||||||
|
"cloudy" |
|
||||||
|
"rain" |
|
||||||
|
"heavyRain" |
|
||||||
|
"thunder" |
|
||||||
|
"snow" |
|
||||||
|
"heavySnow" |
|
||||||
|
"blizzard";
|
||||||
|
|
||||||
|
interface ClimateState {
|
||||||
|
readonly weather: WeatherType;
|
||||||
|
readonly temperature: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Climate {
|
||||||
|
/**
|
||||||
|
* The climate of the park.
|
||||||
|
*/
|
||||||
|
readonly type: ClimateType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The current weather in the park.
|
||||||
|
*/
|
||||||
|
readonly current: ClimateState;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The next weather the park will experience.
|
||||||
|
*/
|
||||||
|
readonly future: ClimateState;
|
||||||
|
}
|
||||||
|
|
||||||
interface Cheats {
|
interface Cheats {
|
||||||
allowArbitraryRideTypeChanges: boolean;
|
allowArbitraryRideTypeChanges: boolean;
|
||||||
allowTrackPlaceInvalidHeights: boolean;
|
allowTrackPlaceInvalidHeights: boolean;
|
||||||
|
|
|
@ -408,6 +408,7 @@
|
||||||
<ClInclude Include="scripting\HookEngine.h" />
|
<ClInclude Include="scripting\HookEngine.h" />
|
||||||
<ClInclude Include="scripting\Plugin.h" />
|
<ClInclude Include="scripting\Plugin.h" />
|
||||||
<ClInclude Include="scripting\ScCheats.hpp" />
|
<ClInclude Include="scripting\ScCheats.hpp" />
|
||||||
|
<ClInclude Include="scripting\ScClimate.hpp" />
|
||||||
<ClInclude Include="scripting\ScConfiguration.hpp" />
|
<ClInclude Include="scripting\ScConfiguration.hpp" />
|
||||||
<ClInclude Include="scripting\ScConsole.hpp" />
|
<ClInclude Include="scripting\ScConsole.hpp" />
|
||||||
<ClInclude Include="scripting\ScContext.hpp" />
|
<ClInclude Include="scripting\ScContext.hpp" />
|
||||||
|
|
|
@ -0,0 +1,129 @@
|
||||||
|
/*****************************************************************************
|
||||||
|
* Copyright (c) 2014-2021 OpenRCT2 developers
|
||||||
|
*
|
||||||
|
* For a complete list of all authors, please refer to contributors.md
|
||||||
|
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||||
|
*
|
||||||
|
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef ENABLE_SCRIPTING
|
||||||
|
|
||||||
|
# include "../Context.h"
|
||||||
|
# include "../common.h"
|
||||||
|
# include "../core/String.hpp"
|
||||||
|
# include "../world/Climate.h"
|
||||||
|
# include "Duktape.hpp"
|
||||||
|
# include "ScriptEngine.h"
|
||||||
|
|
||||||
|
namespace OpenRCT2::Scripting
|
||||||
|
{
|
||||||
|
class ScClimateState
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
std::string _weather;
|
||||||
|
int8_t _temperature;
|
||||||
|
|
||||||
|
public:
|
||||||
|
ScClimateState(std::string weather, int8_t temperature)
|
||||||
|
: _weather(weather)
|
||||||
|
, _temperature(temperature)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string weather_get() const
|
||||||
|
{
|
||||||
|
return _weather;
|
||||||
|
}
|
||||||
|
|
||||||
|
int8_t temperature_get() const
|
||||||
|
{
|
||||||
|
return _temperature;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Register(duk_context* ctx)
|
||||||
|
{
|
||||||
|
dukglue_register_property(ctx, &ScClimateState::weather_get, nullptr, "weather");
|
||||||
|
dukglue_register_property(ctx, &ScClimateState::temperature_get, nullptr, "temperature");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class ScClimate
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static std::string ClimateTypeToString(ClimateType token)
|
||||||
|
{
|
||||||
|
switch (token)
|
||||||
|
{
|
||||||
|
case ClimateType::CoolAndWet:
|
||||||
|
return "coolAndWet";
|
||||||
|
case ClimateType::Warm:
|
||||||
|
return "warm";
|
||||||
|
case ClimateType::HotAndDry:
|
||||||
|
return "hotAndDry";
|
||||||
|
case ClimateType::Cold:
|
||||||
|
return "cold";
|
||||||
|
case ClimateType::Count:
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::string WeatherTypeToString(WeatherType token)
|
||||||
|
{
|
||||||
|
switch (token)
|
||||||
|
{
|
||||||
|
case WeatherType::Sunny:
|
||||||
|
return "sunny";
|
||||||
|
case WeatherType::PartiallyCloudy:
|
||||||
|
return "partiallyCloudy";
|
||||||
|
case WeatherType::Cloudy:
|
||||||
|
return "cloudy";
|
||||||
|
case WeatherType::Rain:
|
||||||
|
return "rain";
|
||||||
|
case WeatherType::HeavyRain:
|
||||||
|
return "heavyRain";
|
||||||
|
case WeatherType::Thunder:
|
||||||
|
return "thunder";
|
||||||
|
case WeatherType::Snow:
|
||||||
|
return "snow";
|
||||||
|
case WeatherType::HeavySnow:
|
||||||
|
return "heavySnow";
|
||||||
|
case WeatherType::Blizzard:
|
||||||
|
return "blizzard";
|
||||||
|
case WeatherType::Count:
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string type_get() const
|
||||||
|
{
|
||||||
|
return ClimateTypeToString(gClimate);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<ScClimateState> current_get() const
|
||||||
|
{
|
||||||
|
std::string weatherType = WeatherTypeToString(gClimateCurrent.Weather);
|
||||||
|
return std::make_shared<ScClimateState>(weatherType, gClimateCurrent.Temperature);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<ScClimateState> future_get() const
|
||||||
|
{
|
||||||
|
std::string weatherType = WeatherTypeToString(gClimateNext.Weather);
|
||||||
|
return std::make_shared<ScClimateState>(weatherType, gClimateNext.Temperature);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Register(duk_context* ctx)
|
||||||
|
{
|
||||||
|
dukglue_register_property(ctx, &ScClimate::type_get, nullptr, "type");
|
||||||
|
dukglue_register_property(ctx, &ScClimate::current_get, nullptr, "current");
|
||||||
|
dukglue_register_property(ctx, &ScClimate::future_get, nullptr, "future");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace OpenRCT2::Scripting
|
||||||
|
|
||||||
|
#endif
|
|
@ -24,6 +24,7 @@
|
||||||
# include "../platform/Platform2.h"
|
# include "../platform/Platform2.h"
|
||||||
# include "Duktape.hpp"
|
# include "Duktape.hpp"
|
||||||
# include "ScCheats.hpp"
|
# include "ScCheats.hpp"
|
||||||
|
# include "ScClimate.hpp"
|
||||||
# include "ScConsole.hpp"
|
# include "ScConsole.hpp"
|
||||||
# include "ScContext.hpp"
|
# include "ScContext.hpp"
|
||||||
# include "ScDate.hpp"
|
# include "ScDate.hpp"
|
||||||
|
@ -377,6 +378,8 @@ void ScriptEngine::Initialise()
|
||||||
{
|
{
|
||||||
auto ctx = static_cast<duk_context*>(_context);
|
auto ctx = static_cast<duk_context*>(_context);
|
||||||
ScCheats::Register(ctx);
|
ScCheats::Register(ctx);
|
||||||
|
ScClimate::Register(ctx);
|
||||||
|
ScClimateState::Register(ctx);
|
||||||
ScConfiguration::Register(ctx);
|
ScConfiguration::Register(ctx);
|
||||||
ScConsole::Register(ctx);
|
ScConsole::Register(ctx);
|
||||||
ScContext::Register(ctx);
|
ScContext::Register(ctx);
|
||||||
|
@ -409,6 +412,7 @@ void ScriptEngine::Initialise()
|
||||||
ScStaff::Register(ctx);
|
ScStaff::Register(ctx);
|
||||||
|
|
||||||
dukglue_register_global(ctx, std::make_shared<ScCheats>(), "cheats");
|
dukglue_register_global(ctx, std::make_shared<ScCheats>(), "cheats");
|
||||||
|
dukglue_register_global(ctx, std::make_shared<ScClimate>(), "climate");
|
||||||
dukglue_register_global(ctx, std::make_shared<ScConsole>(_console), "console");
|
dukglue_register_global(ctx, std::make_shared<ScConsole>(_console), "console");
|
||||||
dukglue_register_global(ctx, std::make_shared<ScContext>(_execInfo, _hookEngine), "context");
|
dukglue_register_global(ctx, std::make_shared<ScContext>(_execInfo, _hookEngine), "context");
|
||||||
dukglue_register_global(ctx, std::make_shared<ScDate>(), "date");
|
dukglue_register_global(ctx, std::make_shared<ScDate>(), "date");
|
||||||
|
|
|
@ -46,7 +46,7 @@ namespace OpenRCT2
|
||||||
|
|
||||||
namespace OpenRCT2::Scripting
|
namespace OpenRCT2::Scripting
|
||||||
{
|
{
|
||||||
static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 29;
|
static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 30;
|
||||||
|
|
||||||
# ifndef DISABLE_NETWORK
|
# ifndef DISABLE_NETWORK
|
||||||
class ScSocketBase;
|
class ScSocketBase;
|
||||||
|
|
Loading…
Reference in New Issue