// Ryzom - MMORPG Framework // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . #ifndef RY_LIGHT_CYCLE_H #define RY_LIGHT_CYCLE_H #include "season.h" namespace NLGEORGES { class UFormElm; } /** Description of light cycle for a single season */ struct CSeasonLightCycle { float DayHour; float DayToDuskHour; float DuskToNightHour; float NightHour; float NightToDayHour; /////////////////////////////////////////////////////////////// // ctor CSeasonLightCycle(); // build from a Georges form void build(const NLGEORGES::UFormElm &item); // serial in a stream void serial(class NLMISC::IStream &f) throw(NLMISC::EStream) { f.serial(DayHour, DayToDuskHour, DuskToNightHour, NightHour, NightToDayHour); } }; /** Description of a complete light cycle for each season */ struct CLightCycle { float RealDayLength; // real length of the day, in seconds float NumHours; // number of ryzom hours in a day uint32 MaxNumColorSteps; // the max number of color steps CSeasonLightCycle SeasonLightCycle[EGSPD::CSeason::Invalid]; // description of each season /////////////////////////////////////////////////////////////// // ctor CLightCycle(); // build from a Georges form void build(const NLGEORGES::UFormElm &item); // Build from a sheet file void build(const char *sheetName); // void serial(class NLMISC::IStream &f) throw(NLMISC::EStream) { f.serial(RealDayLength, NumHours, MaxNumColorSteps); for(uint k = 0; k < EGSPD::CSeason::Invalid; ++k) { f.serial(SeasonLightCycle[k]); } } }; #endif