// 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_BASIC_EFFECT_H
#define RY_BASIC_EFFECT_H
#include "nel/misc/types_nl.h"
#include "game_share/base_types.h"
#include "game_share/effect_families.h"
/**
*
* \author David Fleury
* \author Nevrax France
* \date 2003
*/
class CBasicEffect
{
public:
/// Constructor
CBasicEffect(EFFECT_FAMILIES::TEffectFamily family, const TDataSetRow & creatorId, const TDataSetRow & targetRowId)
: _CreatorRowId(creatorId), _TargetRowId(targetRowId), _Family(family), _EffectId(0)
{
_EffectId = ++_EffectCounter;
}
CBasicEffect( EFFECT_FAMILIES::TEffectFamily family, const TDataSetRow & creatorId, const TDataSetRow & targetRowId, uint32 effectId )
: _CreatorRowId(creatorId), _TargetRowId(targetRowId), _Family(family), _EffectId(effectId)
{
}
/// Destructor
virtual ~CBasicEffect() {}
/// get the effect creator Id
inline const TDataSetRow &creatorRowId() const { return _CreatorRowId; }
/// get the effect target rowId
inline const TDataSetRow &targetRowId() const { return _TargetRowId; }
/// get the effect family
inline EFFECT_FAMILIES::TEffectFamily family() const { return _Family; }
/// get the effect Id
inline uint32 effectId() const { return _EffectId; }
/// get the effect counter
inline static uint32 effectCounter() { return _EffectCounter; }
protected:
/// effect creator Id
TDataSetRow _CreatorRowId;
/// effect target Id
TDataSetRow _TargetRowId;
/// effect family
EFFECT_FAMILIES::TEffectFamily _Family;
/// effect ID
uint32 _EffectId;
/// counter, increased by one with every effect creation, give a unique Id per effect
static uint32 _EffectCounter;
};
#endif // RY_BASIC_EFFECT_H
/* End of basic_effect.h */