// 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 NL_FORAGE_SOURCE_CL_H #define NL_FORAGE_SOURCE_CL_H #include "nel/misc/types_nl.h" #include "fx_cl.h" /** * * \author Olivier Cado * \author Nevrax France * \date 2003 */ class CForageSourceCL : public CFxCL { public: enum TFSBarIndex { FSBTime, FSBQuantiy, FSBD, FSBE, FSBK, NbFSBarIndices }; static NLMISC::CRGBA SafeSourceColor; /// Constructor CForageSourceCL(); /// Destructor virtual ~CForageSourceCL(); /// Build the entity from a sheet. virtual bool build( const CEntitySheet *sheet ); /// Rebuild in scene interfaces virtual void buildInSceneInterface (); /// Called when clipped out virtual void updateClipped (const NLMISC::TTime ¤tTimeInMs, CEntityCL *target); /// Method called each frame to manage the entity after the clipping test if the primitive is visible. virtual void updateVisible(const NLMISC::TTime &time, CEntityCL *target); /// Update the entity after all positions done. virtual void updateVisiblePostPos(const NLMISC::TTime &time, CEntityCL *target); /// Return true if at least an extraction is in progress bool isExtractionInProgress() const { return _IsExtractionInProgress; } /// Return the knowledge level [0..2] uint8 getKnowledge() const { return (_KnowledgeLevel & 0x80) != 0 ? 0 : _KnowledgeLevel; } /// Return the icon filename (valid if the knowledge > 0, otherwise returns NULL) const std::string *getKnowledgeIcon() const { return _IconFilename; } /// Return the value of the K (max=127) uint8 getKamiAngerBar() const { return _BarDestValues[4]; } /// Return true if the source is in "extra time" bool isInExtraTime() const { return _BarDestValues[0] < _ExtraTime; } /// Return true if the source is in "prospection extra time" (not bonus extra time or normal extra time) bool isInProspectionExtraTime() const { return _BarDestValues[0] < _ExtraTime - _InclBonusExtraTime; } /// Return the current quantity available in the source uint8 getCurrentQuantity() const { return _CurrentQuantity; } void resetVP(); void displayInscenePos(); /// Current Display Value for bars uint8 getTimeBar() const {return _TimeBar;} uint8 getQuantityBar() const {return _QuantityBar;} uint8 getDBar() const {return _DBar;} uint8 getEBar() const {return _EBar;} bool isSafe() { return _SafeSource; } protected: /// Initialize properties of the entity (according to the class). virtual void initProperties(); // Update Entity Visual Property B //virtual void updateVisualPropertyVpb(const NLMISC::TGameCycle &gameCycle, const sint64 &prop); /// Update Entity Bars virtual void updateVisualPropertyBars(const NLMISC::TGameCycle &gameCycle, const sint64 &prop); /// Visual FX virtual void updateVisualPropertyVisualFX(const NLMISC::TGameCycle &gameCycle, const sint64 &prop); /// Update Entity Name. virtual void updateVisualPropertyName (const NLMISC::TGameCycle &gameCycle, const sint64 &prop); /// Update Entity Target. virtual void updateVisualPropertyTarget (const NLMISC::TGameCycle &gameCycle, const sint64 &prop); /// Update Entity Orientation. virtual void updateVisualPropertyOrient (const NLMISC::TGameCycle &gameCycle, const sint64 &prop); /// Display the modifiers virtual void displayModifiers(); /// Destroy inscene interfaces void releaseInSceneInterfaces(); /// Inscene interface class CGroupInSceneUserInfo *_InSceneUserInterface; private: /// Knowledge icon (valid only if _KnowledgeLevel > 0, otherwise NULL) const std::string *_IconFilename; /// Destination values for bars uint8 _BarDestValues[NbFSBarIndices]; /// Current value for bars (except the K bar) float _BarCurrentValues[NbFSBarIndices-1]; /// Current Display Value for bars uint8 _TimeBar; uint8 _QuantityBar; uint8 _DBar; uint8 _EBar; /// When an extraction is in progress, display all bars bool _IsExtractionInProgress; /// If the source is safe display its explosion bar green bool _SafeSource; /// 0=nothing 1=group 2=family. Bit 7 set means "knowledge info not received yet" (by visual fx) uint8 _KnowledgeLevel; /// Memorize the last received explosion bit uint8 _LastExplosionSwitch; /// The prospector slot (received in target) uint8 _ProspectorSlot; /// When the source is in "extra time", change the display of the time bar uint8 _ExtraTime; /// When the source is in "bonus extra time", change the display of the time bar uint8 _InclBonusExtraTime; /// First received value of quantity uint8 _InitialQuantity; /// Current quantity uint8 _CurrentQuantity; }; #endif // NL_FORAGE_SOURCE_CL_H /* End of forage_source_cl.h */