1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2014 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
7 // This program is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU Affero General Public License as
9 // published by the Free Software Foundation, either version 3 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU Affero General Public License for more details.
17 // You should have received a copy of the GNU Affero General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #ifndef RY_CONTINENT_SHEET
23 #define RY_CONTINENT_SHEET
26 #include "nel/misc/vector_2f.h"
28 #include "game_share/dir_light_setup.h"
29 #include "game_share/season.h"
30 #include "game_share/fog_map_build.h"
31 #include "entity_sheet.h"
33 #include "village_sheet.h"
34 #include "game_share/time_weather_season/weather_function_sheet.h"
37 // a location in a continent
41 NLMISC::CVector2f Pos;
42 std::string TitleTextID; // should be converted with CI18N to get the actual title in ucstring
44 void build(const NLGEORGES::UFormElm &item);
45 void serial(NLMISC::IStream &f);
48 // Parameters common to continent image in the client and to its sheet
49 class CContinentParameters
53 CContinentParameters();
54 virtual ~CContinentParameters() {}
56 /// Name of the continent.
59 /// PACS RBank filename.
60 std::string PacsRBank
;
65 /// LandscapeIG filename.
66 std::string LandscapeIG
;
68 // New Sky system : gives name of the sky sheet per season. If present, this bypass the SkyDay & SkyNight fields
69 std::string SkySheet
[EGSPD::CSeason::Invalid
];
74 /// SkyNight filename.
77 // SkyFogPart filename
78 std::string SkyFogPartName
;
80 /// Background IG filename.
81 std::string BackgroundIGName
;
83 // Name of IGs for canopy, depending on season. If the string is empty, then the value in BackgroundIGName is used instead
84 std::string CanopyIGfileName
[EGSPD::CSeason::Invalid
];
86 /// MicroVeg filename.
87 std::string MicroVeget
;
89 /// SmallBank filename.
90 std::string SmallBank
;
95 /// CoarseMeshMap filename.
96 std::string CoarseMeshMap
;
102 /// Entity sun contribution power
103 float EntitySunContributionPower
;
105 /// Entity sun contribution max threshold
106 float EntitySunContributionMaxThreshold
;
109 CDirLightSetup LandscapeLightDay
;
112 CDirLightSetup LandscapeLightDusk
;
115 CDirLightSetup LandscapeLightNight
;
117 // Lanscape - PointLight Material.
118 NLMISC::CRGBA LandscapePointLightMaterial
;
121 CDirLightSetup EntityLightDay
;
124 CDirLightSetup EntityLightDusk
;
127 CDirLightSetup EntityLightNight
;
130 CDirLightSetup RootLightDay
;
133 CDirLightSetup RootLightDusk
;
136 CDirLightSetup RootLightNight
;
138 // Zone constructible
146 bool EnableRuins
; // Allow the display of shape of ruins (else building shape displayed through bot objects)
147 void serial (NLMISC::IStream
&f
);
151 ForceLoadDist
= 0.0f
;
157 std::vector
<CZC
> ZCList
;
160 CFogMapBuild FogMapBuild
;
166 // Indoor continent ?
169 // name of the texture for the world map
170 std::string WorldMap
;
172 // position of landmarks
173 //std::vector<CLandMark> LandMarks;
176 std::string LocalizedName
;
178 // list of .primitive containing micro-life zones
179 std::vector
<std::string
> MicroLifeZones
;
181 // Is the landscape tile colors on/off
182 bool TileColorMono
[EGSPD::CSeason::Invalid
];
183 float TileColorFactor
[EGSPD::CSeason::Invalid
];
184 // Landscape lightmap factor
185 float StaticLightingFactor
[EGSPD::CSeason::Invalid
];
187 // Mapping from Logical season, to visual season
188 EGSPD::CSeason::TSeason ForceDisplayedSeason
[EGSPD::CSeason::Invalid
];
191 void build(const NLGEORGES::UFormElm
&item
);
192 void serial(NLMISC::IStream
&f
);
196 void buildFogMapBuild(const NLGEORGES::UFormElm
&item
);
199 class CContinentSheet
: public CEntitySheet
202 CContinentParameters Continent
; // base parameters for continents
204 std::vector
<CVillageSheet
> Villages
;
206 CWeatherFunctionSheet WeatherFunction
[EGSPD::CSeason::Invalid
];
211 virtual void build(const NLGEORGES::UFormElm
&item
);
212 virtual void serial(NLMISC::IStream
&f
);