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_CMS_SHEETS_H
23 #define RY_CMS_SHEETS_H
25 #include "nel/misc/types_nl.h"
26 #include "nel/misc/smart_ptr.h"
27 #include "nel/misc/sheet_id.h"
30 #include "nel/georges/u_form.h"
31 #include "nel/georges/u_form_elm.h"
35 * Singleton containing database on information for actors
37 * \author Nevrax France
46 CSheet(): WalkSpeed(1.3f
), RunSpeed(6.0f
), Radius(0.5f
), Height(2.0f
), BoundingRadius(0.5), Scale(1.0f
) {}
50 float Radius
; // pacs primitive's radius
51 float Height
; // pacs primitive's height
52 float BoundingRadius
; // fighting radius
53 float Scale
; // entity scale
55 void readGeorges (const NLMISC::CSmartPtr
<NLGEORGES::UForm
> &form
, const NLMISC::CSheetId
&sheetId
)
57 // the form was found so read the true values from George
58 form
->getRootNode ().getValueByName (WalkSpeed
, "Basics.MovementSpeeds.WalkSpeed");
59 form
->getRootNode ().getValueByName (RunSpeed
, "Basics.MovementSpeeds.RunSpeed");
60 form
->getRootNode ().getValueByName (Radius
, "Collision.CollisionRadius");
61 form
->getRootNode ().getValueByName (Height
, "Collision.Height");
62 form
->getRootNode ().getValueByName (BoundingRadius
, "Collision.BoundingRadius");
63 form
->getRootNode ().getValueByName (Scale
, "3d data.Scale");
66 void serial (NLMISC::IStream
&s
)
68 s
.serial (WalkSpeed
, RunSpeed
, Radius
, Height
, BoundingRadius
, Scale
);
71 static uint
getVersion () { return 1; }
76 // load the creature data from the george files
79 // display the creature data for all known creature types
80 static void display();
83 static void release() {}
86 // get a data record from the database
87 static const CSheet
*lookup( NLMISC::CSheetId id
);
90 // prohibit cnstructor as this is a singleton
93 static std::map
<NLMISC::CSheetId
,CSheet
> _sheets
;
94 static bool _initialised
;
98 #endif // RY_CMS_SHEETS_H