移除va_list和std::initializer_list两种添加多个对象的方法,统一为std::vector

This commit is contained in:
Nomango 2018-05-10 17:02:18 +08:00
parent 01882e73d4
commit 77d064a0c4
10 changed files with 28 additions and 296 deletions

View File

@ -5,28 +5,11 @@ e2d::Sequence::Sequence()
{
}
e2d::Sequence::Sequence(int number, Action * action, ...) :
_currIndex(0)
{
va_list args;
va_start(args, action);
this->add(action);
for (int i = 1; i < number; i++)
{
this->add(va_arg(args, Action*));
}
va_end(args);
}
#ifdef HIGHER_THAN_VS2012
e2d::Sequence::Sequence(const std::initializer_list<Action*>& actions)
e2d::Sequence::Sequence(const std::vector<Action*>& actions)
: _currIndex(0)
{
this->add(actions);
}
#endif
e2d::Sequence::~Sequence()
{
@ -104,29 +87,13 @@ void e2d::Sequence::add(Action * action)
}
}
void e2d::Sequence::add(int number, Action * action, ...)
{
va_list args;
va_start(args, action);
this->add(action);
for (int i = 1; i < number; i++)
{
this->add(va_arg(args, Action*));
}
va_end(args);
}
#ifdef HIGHER_THAN_VS2012
void e2d::Sequence::add(const std::initializer_list<Action*>& actions)
void e2d::Sequence::add(const std::vector<Action*>& actions)
{
for (const auto &action : actions)
{
this->add(action);
}
}
#endif
e2d::Sequence * e2d::Sequence::clone() const
{

View File

@ -4,26 +4,10 @@ e2d::Spawn::Spawn()
{
}
e2d::Spawn::Spawn(int number, Action * action, ...)
{
va_list args;
va_start(args, action);
this->add(action);
for (int i = 1; i < number; i++)
{
this->add(va_arg(args, Action*));
}
va_end(args);
}
#ifdef HIGHER_THAN_VS2012
e2d::Spawn::Spawn(const std::initializer_list<Action*>& actions)
e2d::Spawn::Spawn(const std::vector<Action*>& actions)
{
this->add(actions);
}
#endif
e2d::Spawn::~Spawn()
{
@ -101,29 +85,13 @@ void e2d::Spawn::add(Action * action)
}
}
void e2d::Spawn::add(int number, Action * action, ...)
{
va_list args;
va_start(args, action);
this->add(action);
for (int i = 1; i < number; i++)
{
this->add(va_arg(args, Action*));
}
va_end(args);
}
#ifdef HIGHER_THAN_VS2012
void e2d::Spawn::add(const std::initializer_list<Action*>& actions)
void e2d::Spawn::add(const std::vector<Action*>& actions)
{
for (const auto &action : actions)
{
this->add(action);
}
}
#endif
e2d::Spawn * e2d::Spawn::clone() const
{

View File

@ -13,58 +13,15 @@ e2d::Animation::Animation(double interval)
e2d::Animation::Animation(double interval, const std::vector<Image*>& frames)
: _interval(interval)
{
for (auto frame : frames)
{
this->add(frame);
}
this->add(frames);
}
e2d::Animation::Animation(int number, Image * frame, ...)
: _interval(1)
{
va_list args;
va_start(args, frame);
this->add(frame);
for (int i = 1; i < number; i++)
{
this->add(va_arg(args, Image*));
}
va_end(args);
}
e2d::Animation::Animation(double interval, int number, Image * frame, ...)
: _interval(interval)
{
va_list args;
va_start(args, frame);
this->add(frame);
for (int i = 1; i < number; i++)
{
this->add(va_arg(args, Image*));
}
va_end(args);
}
#ifdef HIGHER_THAN_VS2012
e2d::Animation::Animation(const std::initializer_list<Image*>& frames)
e2d::Animation::Animation(const std::vector<Image*>& frames)
: _interval(1)
{
this->add(frames);
}
e2d::Animation::Animation(double interval, const std::initializer_list<Image*>& frames)
: _interval(interval)
{
this->add(frames);
}
#endif
e2d::Animation::~Animation()
{
}
@ -91,32 +48,13 @@ void e2d::Animation::add(Image * frame)
}
}
void e2d::Animation::add(int number, Image * frame, ...)
{
va_list args;
va_start(args, frame);
this->add(frame);
--number;
while (number > 0)
{
this->add(va_arg(args, Image*));
--number;
}
va_end(args);
}
#ifdef HIGHER_THAN_VS2012
void e2d::Animation::add(const std::initializer_list<Image*>& frames)
void e2d::Animation::add(const std::vector<Image*>& frames)
{
for (const auto &image : frames)
{
this->add(image);
}
}
#endif
double e2d::Animation::getInterval() const
{

View File

@ -49,15 +49,13 @@ void e2d::Scene::add(Node * child, int order /* = 0 */)
_root->addChild(child, order);
}
#ifdef HIGHER_THAN_VS2012
void e2d::Scene::add(const std::initializer_list<Node*>& nodes, int order)
void e2d::Scene::add(const std::vector<Node*>& nodes, int order)
{
for (const auto &node : nodes)
for (auto node : nodes)
{
this->add(node, order);
}
}
#endif
bool e2d::Scene::remove(Node * child)
{

View File

@ -5,31 +5,14 @@ e2d::Menu::Menu()
{
}
e2d::Menu::Menu(int number, Button * button1, ...)
e2d::Menu::Menu(const std::vector<Button*>& buttons)
: _enable(true)
{
va_list args;
va_start(args, button1);
this->addButton(button1);
for (int i = 1; i < number; i++)
{
this->addButton(va_arg(args, Button*));
}
va_end(args);
}
#ifdef HIGHER_THAN_VS2012
e2d::Menu::Menu(const std::initializer_list<Button*>& vButtons)
: _enable(true)
{
for (auto button : vButtons)
for (auto button : buttons)
{
this->addButton(button);
}
}
#endif
bool e2d::Menu::isEnable() const
{

View File

@ -597,29 +597,13 @@ void e2d::Node::addColliableName(const String& collliderName)
_colliders.insert(hash);
}
void e2d::Node::addColliableName(int number, String collliderName, ...)
{
va_list args;
va_start(args, collliderName);
this->addColliableName(collliderName);
for (int i = 1; i < number; i++)
{
this->addColliableName(va_arg(args, String));
}
va_end(args);
}
#ifdef HIGHER_THAN_VS2012
void e2d::Node::addColliableName(const std::initializer_list<String>& colliderNames)
void e2d::Node::addColliableName(const std::vector<String>& colliderNames)
{
for (const auto &name : colliderNames)
{
this->addColliableName(name);
}
}
#endif
void e2d::Node::removeColliableName(const String& collliderName)
{
@ -662,15 +646,13 @@ void e2d::Node::addChild(Node * child, int order /* = 0 */)
}
}
#ifdef HIGHER_THAN_VS2012
void e2d::Node::addChild(const std::initializer_list<Node*>& nodes, int order)
void e2d::Node::addChild(const std::vector<Node*>& nodes, int order)
{
for (const auto &node : nodes)
for (auto node : nodes)
{
this->addChild(node, order);
}
}
#endif
e2d::Node * e2d::Node::getParent() const
{

View File

@ -529,18 +529,9 @@ public:
// 创建顺序动作
Sequence(
int number, /* 动作数量 */
Action * action, /* 第一个动作 */
...
const std::vector<Action*>& actions /* 动作列表 */
);
#ifdef HIGHER_THAN_VS2012
// 创建顺序动作
Sequence(
const std::initializer_list<Action*>& actions /* 动作列表 */
);
#endif
virtual ~Sequence();
// 在结尾添加动作
@ -550,18 +541,9 @@ public:
// 在结尾添加多个动作
void add(
int number, /* 动作数量 */
Action * action, /* 第一个动作 */
...
const std::vector<Action*>& actions /* 动作列表 */
);
#ifdef HIGHER_THAN_VS2012
// 在结尾添加多个动作
void add(
const std::initializer_list<Action*>& actions /* 动作列表 */
);
#endif
// 获取该动作的拷贝对象
virtual Sequence * clone() const override;
@ -600,18 +582,9 @@ public:
// 创建同步动作
Spawn(
int number, /* 动作数量 */
Action * action, /* 第一个动作 */
...
const std::vector<Action*>& actions /* 动作列表 */
);
#ifdef HIGHER_THAN_VS2012
// 创建同步动作
Spawn(
const std::initializer_list<Action*>& actions /* 动作列表 */
);
#endif
virtual ~Spawn();
// 在结尾添加动作
@ -621,18 +594,9 @@ public:
// 在结尾添加多个动作
void add(
int number, /* 动作数量 */
Action * action, /* 第一个动作 */
...
const std::vector<Action*>& actions /* 动作列表 */
);
#ifdef HIGHER_THAN_VS2012
// 在结尾添加多个动作
void add(
const std::initializer_list<Action*>& actions /* 动作列表 */
);
#endif
// 获取该动作的拷贝对象
virtual Spawn * clone() const override;

View File

@ -559,8 +559,8 @@ public:
template<typename Func, typename Object>
Function(
Func&& func,
Object&& obj
Func&& func, /* 对象的成员函数 */
Object&& obj /* 对象指针 */
)
{
_func = std::bind(func, obj);
@ -733,32 +733,9 @@ public:
// 创建帧动画
Animation(
int number, /* 帧数量 */
Image * frame, /* 第一帧 */
...
const std::vector<Image*>& frames /* 关键帧列表 */
);
// 创建特定帧间隔的帧动画
Animation(
double interval, /* 帧间隔(秒) */
int number, /* 帧数量 */
Image * frame, /* 第一帧 */
...
);
#ifdef HIGHER_THAN_VS2012
// 创建帧动画
Animation(
const std::initializer_list<Image*>& frames /* 关键帧列表 */
);
// 创建特定帧间隔的帧动画
Animation(
double interval, /* 帧间隔(秒) */
const std::initializer_list<Image*>& frames /* 关键帧列表 */
);
#endif
virtual ~Animation();
// 添加关键帧
@ -768,18 +745,9 @@ public:
// 添加多个关键帧
void add(
int number, /* 帧数量 */
Image * frame, /* 第一帧 */
...
const std::vector<Image*>& frames /* 关键帧列表 */
);
#ifdef HIGHER_THAN_VS2012
// 添加多个关键帧
void add(
const std::initializer_list<Image*>& frames /* 关键帧列表 */
);
#endif
// 获取帧间隔
double getInterval() const;
@ -848,13 +816,11 @@ public:
int zOrder = 0 /* 渲染顺序 */
);
#ifdef HIGHER_THAN_VS2012
// 添加多个节点到场景
virtual void add(
const std::initializer_list<Node*>& nodes, /* 节点列表 */
int order = 0 /* 渲染顺序 */
const std::vector<Node*>& nodes, /* 节点数组 */
int order = 0 /* 渲染顺序 */
);
#endif
// 删除子节点
bool remove(

View File

@ -72,17 +72,3 @@ EXTERN_C IMAGE_DOS_HEADER __ImageBase;
#endif
#endif
#if _MSC_VER > 1700
#ifndef HIGHER_THAN_VS2012
#define HIGHER_THAN_VS2012
#endif
#else
#ifdef HIGHER_THAN_VS2012
#undef HIGHER_THAN_VS2012
#endif
#endif

View File

@ -340,18 +340,9 @@ public:
// 添加多个可碰撞节点的名称
virtual void addColliableName(
int number, /* 名称数量 */
String collliderName, /* 第一个名称 */
...
const std::vector<String>& colliderNames /* 名称数组 */
);
#ifdef HIGHER_THAN_VS2012
// 添加多个可碰撞节点的名称
virtual void addColliableName(
const std::initializer_list<String>& colliderNames /* 名称列表 */
);
#endif
// 移除可碰撞节点的名称
virtual void removeColliableName(
const String& collliderName
@ -363,13 +354,11 @@ public:
int order = 0 /* 渲染顺序 */
);
#ifdef HIGHER_THAN_VS2012
// 添加多个子节点
virtual void addChild(
const std::initializer_list<Node*>& nodes, /* 节点列表 */
int order = 0 /* 渲染顺序 */
const std::vector<Node*>& nodes, /* 节点数组 */
int order = 0 /* 渲染顺序 */
);
#endif
// 执行动作
virtual void runAction(
@ -967,18 +956,9 @@ public:
// 创建菜单
Menu(
int number, /* 菜单中按钮的数量 */
Button * button1, /* 第一个按钮 */
...
const std::vector<Button*>& buttons /* 按钮数组 */
);
#ifdef HIGHER_THAN_VS2012
// 创建菜单
Menu(
const std::initializer_list<Button*>& vButtons /* 按钮列表 */
);
#endif
// 获取菜单是否禁用
bool isEnable() const;