Allow different light cycle for different continents [breaks packed sheets]

This commit is contained in:
kaetemi 2014-12-12 01:22:19 +01:00
parent 8595053853
commit ef711e2cbf
8 changed files with 26 additions and 7 deletions

View file

@ -300,6 +300,9 @@ void CContinentParameters::build(const NLGEORGES::UFormElm &item)
if(readSeason<EGSPD::CSeason::Invalid)
ForceDisplayedSeason[season]= readSeason;
}
// Read light cycle
item.getValueByName(LightCycle, "LightCycle");
}
@ -393,6 +396,8 @@ void CContinentParameters::serial(class NLMISC::IStream &f) throw(NLMISC::EStrea
f.serial(SkySheet[i]);
f.serialEnum(ForceDisplayedSeason[i]);
}
//
f.serial(LightCycle);
}
//=========================================================================

View file

@ -62,9 +62,12 @@ public:
/// LandscapeIG filename.
std::string LandscapeIG;
// New Sky system : gives name of the sky sheet per season. If present, this bypass the SkyDay & SkyNight fields
/// New Sky system : gives name of the sky sheet per season. If present, this bypass the SkyDay & SkyNight fields
std::string SkySheet[EGSPD::CSeason::Invalid];
/// Light Cycle sheet
std::string LightCycle;
/// SkyDay filename.
std::string SkyDay;

View file

@ -420,6 +420,11 @@ void CContinent::select(const CVectorD &pos, NLMISC::IProgressCallback &progress
progress.progress (0);
progress.pushCropedValues (0, 1.f/3.f);
{
H_AUTO(InitRZWorldLightCycle)
loadWorldLightCycle(CSheetId(LightCycle));
}
{
H_AUTO(InitRZWorldIndoor)
if (!ClientCfg.Light)

View file

@ -587,7 +587,7 @@ void CContinentManager::reloadWeather()
WeatherManager.init();
// Load description of light cycles for each season.
loadWorldLightCycle();
loadWorldLightCycle(CSheetId::Unknown); //FIXME
// Load global weather function parameters
loadWeatherFunctionParams();

View file

@ -411,7 +411,7 @@ static void initWeather()
{
WeatherManager.init();
// Load description of light cycles for each season.
loadWorldLightCycle();
loadWorldLightCycle(CSheetId::Unknown); // FIXME
// Load global weather function parameters
loadWeatherFunctionParams();
//

View file

@ -442,7 +442,7 @@ class CAHReloadSeason: public IActionHandler
virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */)
{
// reload all parameters for weather
loadWorldLightCycle();
loadWorldLightCycle(CSheetId::Unknown); // FIXME
loadWeatherFunctionParams();
WeatherManager.init();
ContinentMngr.reloadWeather();

View file

@ -87,9 +87,14 @@ void buildLightCycleDesc(CLightCycleDesc &dest,EGSPD::CSeason::TSeason season)
else dest.DuskRatio = 0.5f;
}
void loadWorldLightCycle()
void loadWorldLightCycle(CSheetId lightCycle)
{
CEntitySheet *sheet = SheetMngr.get(CSheetId("ryzom.light_cycle"));
nldebug("Load light cycle '%s'", lightCycle.toString().c_str());
if (lightCycle == CSheetId::Unknown)
lightCycle = CSheetId("ryzom.light_cycle");
CEntitySheet *sheet = SheetMngr.get(lightCycle);
nlassert(sheet);
if (sheet->type() != CEntitySheet::LIGHT_CYCLE)
{

View file

@ -20,6 +20,7 @@
#define CL_WORLD_LIGHT_CYCLE_H
#include <nel/misc/sheet_id.h>
#include "game_share/season.h"
struct CLightCycleDesc;
@ -47,7 +48,7 @@ extern EGSPD::CSeason::TSeason StartupSeason;
extern CWeatherFunctionParamsSheet *WeatherFunctionParams;
// load the world light cycle from a sheet
void loadWorldLightCycle();
void loadWorldLightCycle(NLMISC::CSheetId lightCycleSheet);
// load the weather function params
void loadWeatherFunctionParams();