#pragma once #include #include "GameScriptSkyLayer.h" #include "GameScriptMirror.h" #include "GameScriptColor.h" #include "GameScriptInventoryObject.h" #include enum class WeatherType { None, Rain, Snow }; static const std::unordered_map kWeatherTypes { {"None", WeatherType::None}, {"Rain", WeatherType::Rain}, {"Snow", WeatherType::Snow} }; enum LaraType { Normal = 1, Young = 2, Bunhead = 3, Catsuit = 4, Divesuit = 5, Invisible = 7 }; static const std::unordered_map kLaraTypes { {"Normal", LaraType::Normal}, {"Young", LaraType::Young}, {"Bunhead", LaraType::Bunhead}, {"Catsuit", LaraType::Catsuit}, {"Divesuit", LaraType::Divesuit}, {"Invisible", LaraType::Invisible} }; struct GameScriptLevel { std::string NameStringKey; std::string FileName; std::string ScriptFileName; std::string LoadScreenFileName; std::string AmbientTrack; GameScriptSkyLayer Layer1; GameScriptSkyLayer Layer2; bool Horizon{ false }; bool ColAddHorizon{ false }; GameScriptFog Fog; bool Storm{ false }; WeatherType Weather{ WeatherType::None }; float WeatherStrength{ 1.0f }; bool Rumble{ false }; LaraType LaraType{ LaraType::Normal }; GameScriptMirror Mirror; int LevelFarView{ 0 }; bool UnlimitedAir{ false }; std::vector InventoryObjects; void SetWeatherStrength(float val); void SetLevelFarView(byte val); static void Register(sol::state* state); };