#ifndef __EFFECTMGR_H__
#define __EFFECTMGR_H__
#include "GameFrameHead.h"
namespace cocos2d
{
class CCFiniteTimeAction;
}
class GAMEFRAME_API CEffectMgr
{
public:
enum ActionType
{
_Act_Sequence = 0, //顺序执行
_Act_Spawn = 1, //同时执行
};
enum Action
{
_CCMoveTo = 10,
_CCMoveBy = 11,
_CCJumpTo = 12,
_CCJumpBy = 13,
_CCBezierBy = 14,
_CCScaleTo = 15,
_CCScaleBy = 16,
_CCRotateTo = 17,
_CCRotateBy = 18,
_CCBlink = 19,
_CCTintTo = 20,
_CCTintBy = 21,
_CCFadeTo = 22,
_CCFadeIn = 23,
_CCFadeOut = 24,
};
public:
~CEffectMgr();
static CEffectMgr* getInstance();
static void destroy();
cocos2d::CCFiniteTimeAction* getAction(const char* psKey);
private:
CEffectMgr();
private:
static CEffectMgr* g_pEffectMgr;
};
#endif //__EFFECTMGR_H__
#include "EffectMgr.h"
#include "Config.h"
#include "XCommon.h"
CEffectMgr* CEffectMgr::g_pEffectMgr = NULL;
CEffectMgr::CEffectMgr()
{
}
CEffectMgr::~CEffectMgr()
{
}
CEffectMgr* CEffectMgr::getInstance()
{
if (!g_pEffectMgr)
{
g_pEffectMgr = new CEffectMgr();
}
return g_pEffectMgr;
}
void CEffectMgr::destroy()
{
SAFE_DELETE(g_pEffectMgr);
}
cocos2d::CCFiniteTimeAction* CEffectMgr::getAction( const char* psKey )
{
ActionInfo& actionInfo = *CConfig::getInstance()->getActionInfoByKey(psKey);
vector<float> vecParam;
vector<string> vecBuf;
CXCommon::split(actionInfo.strParm, string(" "), vecBuf);
for (int i = 0; i < vecBuf.size(); i++)
{
vecParam.push_back(atof(vecBuf[i].c_str()));
}
CCFiniteTimeAction* pAct = NULL;
switch(actionInfo.nAction)
{
case _CCMoveTo:
{
pAct = CCMoveTo::create(vecParam[0], ccp(vecParam[1], vecParam[2]));
}
break;
case _CCMoveBy:
{
pAct = CCMoveBy::create(vecParam[0], ccp(vecParam[1], vecParam[2]));
}
break;
case _CCJumpBy:
{
pAct = CCJumpBy::create(vecParam[0], ccp(vecParam[1], vecParam[2]), vecParam[3], vecParam[4]);
}
break;
case _CCJumpTo:
{
pAct = CCJumpTo::create(vecParam[0], ccp(vecParam[1], vecParam[2]), vecParam[3], vecParam[4]);
}
break;
case _CCBezierBy:
{
//暂未实现
}
break;
case _CCScaleTo:
{
pAct = CCScaleTo::create(vecParam[0], vecParam[1], vecParam[2]);
}
break;
case _CCScaleBy:
{
pAct = CCScaleBy::create(vecParam[0], vecParam[1], vecParam[2]);
}
break;
case _CCRotateTo:
{
pAct = CCRotateTo::create(vecParam[0], vecParam[1]);
}
break;
case _CCBlink:
{
pAct = CCBlink::create(vecParam[0], vecParam[1]);
}
break;
case _CCTintTo:
{
pAct = CCTintTo::create(vecParam[0], vecParam[1], vecParam[2], vecParam[3]);
}
break;
case _CCTintBy:
{
pAct = CCTintBy::create(vecParam[0], vecParam[1], vecParam[2], vecParam[3]);
}
break;
case _CCFadeTo:
{
pAct = CCFadeTo::create(vecParam[0], vecParam[1]);
}
break;
case _CCFadeIn:
{
pAct = CCFadeIn::create(vecParam[0]);
}
break;
case _CCFadeOut:
{
pAct = CCFadeOut::create(vecParam[0]);
}
default:
{
CCLog("error: action creation fails!");
}
break;
}
ASSERT(pAct);
return pAct;
}