ToyPaletteNode.cpp
2.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//
// ToyPaletteNode.cpp
// SteveMaggieCpp
//
// Created by Katarzyna Kalinowska-Górska on 17.05.2017.
//
//
#include <stdio.h>
#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<void(ToyPaletteNode*, ToyPaletteComponentSprite*, bool, bool)> 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<ToyLayoutObject*>(child);
if(childToyLayoutObject->className == "PaletteComponentSprite"){
auto childComponentSprite = dynamic_cast<ToyPaletteComponentSprite*>(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<ToyLayoutObject*>(children.at(i));
if(child->className == "PaletteComponentSprite" && child != paletteComponentSprite){
auto childComponentSprite = dynamic_cast<ToyPaletteComponentSprite*>(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<void()> callback)
{
if(methodName == "setOpacity"){
if((*arguments).IsArray()){
this->setOpacity((*arguments).GetArray()[0].GetInt());
}
}
else if(methodName == "clearOnPaletteStateChangedCallback"){
this->clearOnPaletteStateChangedCallback();
}
}