// // ToyPaletteNode.cpp // SteveMaggieCpp // // Created by Katarzyna Kalinowska-Górska on 17.05.2017. // // #include #include "ToyPaletteNode.h" ToyPaletteNode* ToyPaletteNode::create() { ToyPaletteNode * node = new (std::nothrow) ToyPaletteNode(); if(node && node->init()) { node->autorelease(); return node; } CC_SAFE_DELETE(node); return nullptr; } bool ToyPaletteNode::init() { if(!ToyPlainNode::init()){ return false; } _onPaletteStateChangedCallback = [](ToyPaletteNode*, ToyPaletteComponentSprite*, bool, bool){}; return true; } void ToyPaletteNode::setOnPaletteStateChangedCallback(std::function callback) { _onPaletteStateChangedCallback = callback; } void ToyPaletteNode::clearOnPaletteStateChangedCallback() { _onPaletteStateChangedCallback = [](ToyPaletteNode*, ToyPaletteComponentSprite*, bool, bool){}; } ToyPaletteComponentSprite* ToyPaletteNode::getChosenComponent() { auto children = this->getChildren(); for(const auto& child : children){ auto childToyLayoutObject = dynamic_cast(child); if(childToyLayoutObject->className == "PaletteComponentSprite"){ auto childComponentSprite = dynamic_cast(childToyLayoutObject); if(childComponentSprite->isChosen()){ return childComponentSprite; } } } return nullptr; } void ToyPaletteNode::paletteComponentStateChanged(ToyPaletteComponentSprite* paletteComponentSprite, bool componentChosen, bool componentPressed) { if(componentPressed){ auto children = this->getChildren(); for(int i = 0; i < children.size(); ++i){ auto child = dynamic_cast(children.at(i)); if(child->className == "PaletteComponentSprite" && child != paletteComponentSprite){ auto childComponentSprite = dynamic_cast(child); childComponentSprite->setChosen(false, true, true, false); } } } _onPaletteStateChangedCallback(this, paletteComponentSprite, componentChosen, componentPressed); } void ToyPaletteNode::callFunctionByName(std::string methodName, const rapidjson::Value* arguments, ActionParseDelegate* parseDelegate, std::function callback) { if(methodName == "setOpacity"){ if((*arguments).IsArray()){ this->setOpacity((*arguments).GetArray()[0].GetInt()); } } else if(methodName == "clearOnPaletteStateChangedCallback"){ this->clearOnPaletteStateChangedCallback(); } }