2019-04-11 14:40:54 +08:00
|
|
|
|
// Copyright (c) 2016-2018 Kiwano - Nomango
|
2019-03-31 01:37:06 +08:00
|
|
|
|
//
|
|
|
|
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
|
|
|
|
// in the Software without restriction, including without limitation the rights
|
|
|
|
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
|
|
|
|
// furnished to do so, subject to the following conditions:
|
|
|
|
|
|
//
|
|
|
|
|
|
// The above copyright notice and this permission notice shall be included in
|
|
|
|
|
|
// all copies or substantial portions of the Software.
|
|
|
|
|
|
//
|
|
|
|
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
|
|
|
// THE SOFTWARE.
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "ActionGroup.h"
|
|
|
|
|
|
#include "ActionTween.h"
|
|
|
|
|
|
#include "Animation.h"
|
|
|
|
|
|
|
2019-04-11 14:40:54 +08:00
|
|
|
|
namespace kiwano
|
2019-03-31 01:37:06 +08:00
|
|
|
|
{
|
|
|
|
|
|
struct ActionHelper
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
inline ActionHelper& SetLoops(int loops) { base->SetLoops(loops); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ӳ<EFBFBD>
|
|
|
|
|
|
inline ActionHelper& SetDelay(Duration delay) { base->SetDelay(delay); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
inline ActionHelper& SetDoneCallback(ActionCallback const& cb) { base->SetDoneCallback(cb); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
inline ActionHelper& SetLoopDoneCallback(ActionCallback const& cb) { base->SetLoopDoneCallback(cb); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ƴ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
|
inline ActionHelper& RemoveTargetWhenDone() { base->RemoveTargetWhenDone(); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
inline ActionHelper& SetName(String const& name) { base->SetName(name); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡָ<C8A1><D6B8>
|
|
|
|
|
|
inline ActionPtr const& Get() const { return base; }
|
|
|
|
|
|
|
|
|
|
|
|
inline ActionHelper(ActionPtr const& base) : base(base) {}
|
|
|
|
|
|
|
|
|
|
|
|
inline operator ActionPtr() const { return base; }
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
ActionPtr base;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
struct TweenHelper
|
|
|
|
|
|
{
|
|
|
|
|
|
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
|
inline TweenHelper& SetDuration(Duration dur) { base->SetDuration(dur); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
inline TweenHelper& SetLoops(int loops) { base->SetLoops(loops); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
inline TweenHelper& SetEaseFunc(EaseFunc ease) { base->SetEaseFunc(ease); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>ӳ<EFBFBD>
|
|
|
|
|
|
inline TweenHelper& SetDelay(Duration delay) { base->SetDelay(delay); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
inline TweenHelper& SetDoneCallback(ActionCallback const& cb) { base->SetDoneCallback(cb); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ļص<C4BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
inline TweenHelper& SetLoopDoneCallback(ActionCallback const& cb) { base->SetLoopDoneCallback(cb); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ƴ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ڵ<EFBFBD>
|
|
|
|
|
|
inline TweenHelper& RemoveTargetWhenDone() { base->RemoveTargetWhenDone(); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
inline TweenHelper& SetName(String const& name) { base->SetName(name); return (*this); }
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡָ<C8A1><D6B8>
|
|
|
|
|
|
inline ActionTweenPtr const& Get() const { return base; }
|
|
|
|
|
|
|
|
|
|
|
|
inline TweenHelper(ActionTweenPtr const& base) : base(base) {}
|
|
|
|
|
|
|
|
|
|
|
|
inline operator ActionPtr() const { return base; }
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
ActionTweenPtr base;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// Tween actions helper
|
|
|
|
|
|
struct Tween
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
MoveBy(Point const& vector)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionMoveBy(0, vector));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
MoveTo(Point const& pos)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionMoveTo(0, pos));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
JumpBy(
|
|
|
|
|
|
Point const& pos, /* Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
float height, /* <20><>Ծ<EFBFBD>߶<EFBFBD> */
|
|
|
|
|
|
int jumps = 1) /* <20><>Ծ<EFBFBD><D4BE><EFBFBD><EFBFBD> */
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionJumpBy(0, pos, height, jumps));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
JumpTo(
|
|
|
|
|
|
Point const& pos, /* Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
float height, /* <20><>Ծ<EFBFBD>߶<EFBFBD> */
|
|
|
|
|
|
int jumps = 1) /* <20><>Ծ<EFBFBD><D4BE><EFBFBD><EFBFBD> */
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionJumpTo(0, pos, height, jumps));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
ScaleBy(float scale)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionScaleBy(0, scale));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
ScaleBy(float scale_x, float scale_y)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionScaleBy(0, scale_x, scale_y));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
ScaleTo(float scale)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionScaleTo(0, scale));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
ScaleTo(float scale_x, float scale_y)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionScaleTo(0, scale_x, scale_y));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
OpacityBy(float opacity)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionOpacityBy(0, opacity));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
OpacityTo(float opacity)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionOpacityTo(0, opacity));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
FadeIn(Duration dur)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionFadeIn(dur));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
FadeOut(Duration dur)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionFadeOut(dur));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
RotateBy(float rotation)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionRotateBy(0, rotation));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
RotateTo(float rotation)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionRotateTo(0, rotation));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
Path(
|
|
|
|
|
|
GeometryPtr const& geo, /* <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC> */
|
|
|
|
|
|
bool rotating = false, /* <20><>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD><EFBFBD><EFBFBD>ת */
|
|
|
|
|
|
float start = 0.f, /* <20><><EFBFBD><EFBFBD> */
|
|
|
|
|
|
float end = 1.f) /* <20>յ<EFBFBD> */
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::ActionPath(0, geo, rotating, start, end));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline TweenHelper
|
|
|
|
|
|
Animation(FramesPtr const& frames)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return TweenHelper(new kiwano::Animation(0, frames));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline ActionHelper
|
|
|
|
|
|
Group(Array<ActionPtr> const& actions, bool sequence = true)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return ActionHelper(new kiwano::ActionGroup(actions, sequence));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static inline ActionHelper
|
|
|
|
|
|
Multiple(Array<ActionPtr> const& actions)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return ActionHelper(new kiwano::ActionGroup(actions, false));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-04-11 14:40:54 +08:00
|
|
|
|
KGE_DEPRECATED("Tween::Sequence is deprecated, use Tween::Group instead")
|
2019-03-31 01:37:06 +08:00
|
|
|
|
static inline ActionHelper
|
|
|
|
|
|
Sequence(Array<ActionPtr> const& actions)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return ActionHelper(new kiwano::ActionGroup(actions, true));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-04-11 14:40:54 +08:00
|
|
|
|
KGE_DEPRECATED("Tween::Spawn is deprecated, use Tween::Multiple instead")
|
2019-03-31 01:37:06 +08:00
|
|
|
|
static inline ActionHelper
|
|
|
|
|
|
Spawn(Array<ActionPtr> const& actions)
|
|
|
|
|
|
{
|
2019-04-11 14:40:54 +08:00
|
|
|
|
return ActionHelper(new kiwano::ActionGroup(actions, false));
|
2019-03-31 01:37:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|