mirror of https://github.com/axmolengine/axmol.git
417 lines
9.5 KiB
C++
417 lines
9.5 KiB
C++
|
|
#include "cons.h"
|
|
|
|
using namespace cocos2d;
|
|
using namespace cocostudio;
|
|
|
|
|
|
IMPLEMENT_CLASS_INFO(TimeElapsed)
|
|
|
|
TimeElapsed::TimeElapsed(void)
|
|
:_totalTime(0.0f)
|
|
,_tmpTime(0.0f)
|
|
,_scheduler(nullptr)
|
|
,_suc(false)
|
|
{
|
|
_scheduler = Director::getInstance()->getScheduler();
|
|
_scheduler->retain();
|
|
}
|
|
|
|
TimeElapsed::~TimeElapsed(void)
|
|
{
|
|
CC_SAFE_RELEASE(_scheduler);
|
|
}
|
|
|
|
bool TimeElapsed::init()
|
|
{
|
|
_scheduler->schedule(schedule_selector(TimeElapsed::update), this, 0.0f , kRepeatForever, 0.0f, false);
|
|
return true;
|
|
}
|
|
|
|
bool TimeElapsed::detect()
|
|
{
|
|
return _suc;
|
|
}
|
|
|
|
void TimeElapsed::serialize(const rapidjson::Value &val)
|
|
{
|
|
int count = DICTOOL->getArrayCount_json(val, "dataitems");
|
|
for (int i = 0; i < count; ++i)
|
|
{
|
|
const rapidjson::Value &subDict = DICTOOL->getSubDictionary_json(val, "dataitems", i);
|
|
std::string key = DICTOOL->getStringValue_json(subDict, "key");
|
|
if (key == "TotalTime")
|
|
{
|
|
_totalTime = DICTOOL->getFloatValue_json(subDict, "value");
|
|
}
|
|
}
|
|
}
|
|
|
|
void TimeElapsed::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode)
|
|
{
|
|
int length = pCocoNode->GetChildNum();
|
|
int count = 0;
|
|
stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader);
|
|
std::string key;
|
|
const char *str = nullptr;
|
|
for (int i = 0; i < length; ++i)
|
|
{
|
|
count = pDataItemsArray[i].GetChildNum();
|
|
stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader);
|
|
key = pDataItemArray[0].GetValue(pCocoLoader);
|
|
str = pDataItemArray[1].GetValue(pCocoLoader);
|
|
if (key == "TotalTime")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_totalTime = utils::atof(str); //DICTOOL->getFloatValue_json(subDict, "value");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
void TimeElapsed::removeAll()
|
|
{
|
|
_scheduler->unschedule(schedule_selector(TimeElapsed::update), this);
|
|
}
|
|
|
|
void TimeElapsed::update(float dt)
|
|
{
|
|
_tmpTime += dt;
|
|
if (_tmpTime > _totalTime)
|
|
{
|
|
_tmpTime = 0.0f;
|
|
_suc = true;
|
|
}
|
|
}
|
|
|
|
IMPLEMENT_CLASS_INFO(ArmatureActionState)
|
|
ArmatureActionState::ArmatureActionState(void)
|
|
: _tag(-1)
|
|
, _state(-1)
|
|
, _suc(false)
|
|
{
|
|
}
|
|
|
|
ArmatureActionState::~ArmatureActionState(void)
|
|
{
|
|
}
|
|
|
|
bool ArmatureActionState::init()
|
|
{
|
|
do
|
|
{
|
|
Node *pNode = SceneReader::getInstance()->getNodeByTag(_tag);
|
|
CC_BREAK_IF(pNode == nullptr);
|
|
ComRender *pRender = (ComRender*)(pNode->getComponent(_comName.c_str()));
|
|
CC_BREAK_IF(pRender == nullptr);
|
|
Armature *pAr = (Armature *)(pRender->getNode());
|
|
CC_BREAK_IF(pAr == nullptr);
|
|
TriggerMng::getInstance()->addArmatureMovementCallBack(pAr, this, movementEvent_selector(ArmatureActionState::animationEvent));
|
|
} while (0);
|
|
|
|
return true;
|
|
}
|
|
|
|
bool ArmatureActionState::detect()
|
|
{
|
|
return _suc;
|
|
}
|
|
|
|
void ArmatureActionState::serialize(const rapidjson::Value &val)
|
|
{
|
|
int count = DICTOOL->getArrayCount_json(val, "dataitems");
|
|
for (int i = 0; i < count; ++i)
|
|
{
|
|
const rapidjson::Value &subDict = DICTOOL->getSubDictionary_json(val, "dataitems", i);
|
|
std::string key = DICTOOL->getStringValue_json(subDict, "key");
|
|
if (key == "Tag")
|
|
{
|
|
_tag = DICTOOL->getIntValue_json(subDict, "value");
|
|
continue;
|
|
}
|
|
else if (key == "componentName")
|
|
{
|
|
_comName = DICTOOL->getStringValue_json(subDict, "value");
|
|
continue;
|
|
}
|
|
else if (key == "AnimationName")
|
|
{
|
|
_aniname = DICTOOL->getStringValue_json(subDict, "value");
|
|
continue;
|
|
}
|
|
else if (key == "ActionType")
|
|
{
|
|
_state = DICTOOL->getIntValue_json(subDict, "value");
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
void ArmatureActionState::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode)
|
|
{
|
|
int length = pCocoNode->GetChildNum();
|
|
int count = 0;
|
|
stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader);
|
|
std::string key;
|
|
const char *str = nullptr;
|
|
for (int i = 0; i < length; ++i)
|
|
{
|
|
count = pDataItemsArray[i].GetChildNum();
|
|
stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader);
|
|
key = pDataItemArray[0].GetValue(pCocoLoader);
|
|
str = pDataItemArray[1].GetValue(pCocoLoader);
|
|
if (key == "Tag")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_tag = atoi(str);//DICTOOL->getIntValue_json(subDict, "value");
|
|
}
|
|
}
|
|
else if (key == "componentName")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_comName = str; //DICTOOL->getStringValue_json(subDict, "value");
|
|
}
|
|
|
|
}
|
|
else if (key == "AnimationName")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_aniname = str; //DICTOOL->getStringValue_json(subDict, "value");
|
|
}
|
|
}
|
|
else if (key == "ActionType")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_state = atoi(str); //DICTOOL->getIntValue_json(subDict, "value");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
void ArmatureActionState::removeAll()
|
|
{
|
|
do
|
|
{
|
|
Node *pNode = SceneReader::getInstance()->getNodeByTag(_tag);
|
|
CC_BREAK_IF(pNode == nullptr);
|
|
ComRender *pRender = (ComRender*)(pNode->getComponent(_comName.c_str()));
|
|
CC_BREAK_IF(pRender == nullptr);
|
|
Armature *pAr = (Armature *)(pRender->getNode());
|
|
CC_BREAK_IF(pAr == nullptr);
|
|
TriggerMng::getInstance()->removeArmatureMovementCallBack(pAr, this, movementEvent_selector(ArmatureActionState::animationEvent));
|
|
} while (0);
|
|
}
|
|
|
|
void ArmatureActionState::animationEvent(cocostudio::Armature *armature, cocostudio::MovementEventType movementType, const std::string& movementID)
|
|
{
|
|
std::string id = movementID;
|
|
if (movementType == _state && id.compare(_aniname) == 0)
|
|
{
|
|
_suc = true;
|
|
}
|
|
}
|
|
|
|
IMPLEMENT_CLASS_INFO(NodeInRect)
|
|
NodeInRect::NodeInRect(void)
|
|
:_tag(-1)
|
|
{
|
|
}
|
|
|
|
NodeInRect::~NodeInRect(void)
|
|
{
|
|
}
|
|
|
|
bool NodeInRect::init()
|
|
{
|
|
|
|
return true;
|
|
}
|
|
|
|
bool NodeInRect::detect()
|
|
{
|
|
Node *pNode = SceneReader::getInstance()->getNodeByTag(_tag);
|
|
if (pNode != nullptr && abs(pNode->getPositionX() - _origin.x) <= _size.width && abs(pNode->getPositionY() - _origin.y) <= _size.height)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void NodeInRect::serialize(const rapidjson::Value &val)
|
|
{
|
|
int count = DICTOOL->getArrayCount_json(val, "dataitems");
|
|
for (int i = 0; i < count; ++i)
|
|
{
|
|
const rapidjson::Value &subDict = DICTOOL->getSubDictionary_json(val, "dataitems", i);
|
|
std::string key = DICTOOL->getStringValue_json(subDict, "key");
|
|
if (key == "Tag")
|
|
{
|
|
_tag = DICTOOL->getIntValue_json(subDict, "value");
|
|
continue;
|
|
}
|
|
else if (key == "originX")
|
|
{
|
|
_origin.x = DICTOOL->getIntValue_json(subDict, "value");
|
|
continue;
|
|
}
|
|
else if (key == "originY")
|
|
{
|
|
_origin.y = DICTOOL->getIntValue_json(subDict, "value");
|
|
continue;
|
|
}
|
|
else if (key == "sizeWidth")
|
|
{
|
|
_size.width = DICTOOL->getIntValue_json(subDict, "value");
|
|
continue;
|
|
}
|
|
else if (key == "sizeHeight")
|
|
{
|
|
_size.height = DICTOOL->getIntValue_json(subDict, "value");
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
void NodeInRect::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode)
|
|
{
|
|
int length = pCocoNode->GetChildNum();
|
|
int count = 0;
|
|
stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader);
|
|
std::string key;
|
|
const char *str = nullptr;
|
|
for (int i = 0; i < length; ++i)
|
|
{
|
|
count = pDataItemsArray[i].GetChildNum();
|
|
stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader);
|
|
key = pDataItemArray[0].GetValue(pCocoLoader);
|
|
str = pDataItemArray[1].GetValue(pCocoLoader);
|
|
if (key == "Tag")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_tag = atoi(str);//DICTOOL->getIntValue_json(subDict, "value");
|
|
}
|
|
}
|
|
else if (key == "originX")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_origin.x = atoi(str); //DICTOOL->getIntValue_json(subDict, "value");
|
|
}
|
|
}
|
|
else if (key == "originY")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_origin.y = atoi(str); //DICTOOL->getIntValue_json(subDict, "value");
|
|
}
|
|
}
|
|
else if (key == "sizeWidth")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_size.width = atoi(str); //DICTOOL->getIntValue_json(subDict, "value");
|
|
}
|
|
}
|
|
else if (key == "sizeHeight")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_size.height = atoi(str); //DICTOOL->getIntValue_json(subDict, "value");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
void NodeInRect::removeAll()
|
|
{
|
|
CCLOG("NodeInRect::removeAll");
|
|
}
|
|
|
|
|
|
IMPLEMENT_CLASS_INFO(NodeVisible)
|
|
NodeVisible::NodeVisible(void)
|
|
: _tag(-1)
|
|
, _visible(false)
|
|
{
|
|
}
|
|
|
|
NodeVisible::~NodeVisible(void)
|
|
{
|
|
}
|
|
|
|
bool NodeVisible::init()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool NodeVisible::detect()
|
|
{
|
|
Node *pNode = SceneReader::getInstance()->getNodeByTag(_tag);
|
|
if (pNode != nullptr && pNode->isVisible() == _visible)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void NodeVisible::serialize(const rapidjson::Value &val)
|
|
{
|
|
int count = DICTOOL->getArrayCount_json(val, "dataitems");
|
|
for (int i = 0; i < count; ++i)
|
|
{
|
|
const rapidjson::Value &subDict = DICTOOL->getSubDictionary_json(val, "dataitems", i);
|
|
std::string key = DICTOOL->getStringValue_json(subDict, "key");
|
|
if (key == "Tag")
|
|
{
|
|
_tag = DICTOOL->getIntValue_json(subDict, "value");
|
|
continue;
|
|
}
|
|
else if (key == "Visible")
|
|
{
|
|
_visible = DICTOOL->getIntValue_json(subDict, "value") ? true : false;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
void NodeVisible::serialize(cocostudio::CocoLoader *pCocoLoader, cocostudio::stExpCocoNode *pCocoNode)
|
|
{
|
|
int length = pCocoNode->GetChildNum();
|
|
int count = 0;
|
|
stExpCocoNode *pDataItemsArray = pCocoNode->GetChildArray(pCocoLoader);
|
|
std::string key;
|
|
const char *str = nullptr;
|
|
for (int i = 0; i < length; ++i)
|
|
{
|
|
count = pDataItemsArray[i].GetChildNum();
|
|
stExpCocoNode *pDataItemArray = pDataItemsArray[i].GetChildArray(pCocoLoader);
|
|
key = pDataItemArray[0].GetValue(pCocoLoader);
|
|
str = pDataItemArray[1].GetValue(pCocoLoader);
|
|
if (key == "Tag")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_tag = atoi(str);//DICTOOL->getIntValue_json(subDict, "value");
|
|
}
|
|
}
|
|
else if (key == "Visible")
|
|
{
|
|
if (str != nullptr)
|
|
{
|
|
_visible = atoi(str) != 0? true:false;//DICTOOL->getIntValue_json(subDict, "value") != 0? true:false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
void NodeVisible::removeAll()
|
|
{
|
|
CCLOG("NodeVisible::removeAll");
|
|
}
|
|
|
|
|
|
|
|
|