Magic_Game/Easy2D/etransitions.h

124 lines
1.8 KiB
C
Raw Normal View History

#pragma once
#include "ebase.h"
#include <chrono>
namespace e2d
{
class ETransition :
public EObject
{
friend EApp;
public:
ETransition(float duration);
// <20><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
bool isEnding();
protected:
// <20><><EFBFBD><EFBFBD><C2B6><EFBFBD>
virtual void _update() = 0;
virtual void _init() = 0;
virtual void _reset() = 0;
virtual bool _isDelayEnough();
virtual void _stop();
// <20><><EFBFBD>浱ǰ<E6B5B1><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
void _setTarget(
EScene * prev,
EScene * next
);
protected:
bool m_bEnd;
float m_fTotalDuration;
float m_fDuration;
float m_fRateOfProgress;
EScene * m_pPrevScene;
EScene * m_pNextScene;
std::chrono::steady_clock::time_point m_tLast;
};
class ETransitionFade :
public ETransition
{
public:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5AD>ʽ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ETransitionFade(
float fadeOutDuration, /* ǰһ<C7B0><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
float fadeInDuration /* <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
);
protected:
// <20><><EFBFBD><EFBFBD><C2B6><EFBFBD>
virtual void _update() override;
virtual void _init() override;
virtual void _reset() override;
protected:
float m_fFadeOutDuration;
float m_fFadeInDuration;
bool m_bFadeOutTransioning;
};
2017-10-21 19:09:31 +08:00
class ETransitionEmerge :
public ETransition
{
public:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ETransitionEmerge(
float duration /* <20><><EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
2017-10-21 19:09:31 +08:00
);
protected:
// <20><><EFBFBD><EFBFBD><C2B6><EFBFBD>
virtual void _update() override;
2017-10-21 19:09:31 +08:00
virtual void _init() override;
virtual void _reset() override;
2017-10-21 19:09:31 +08:00
};
class ETransitionMove :
public ETransition
{
public:
enum MOVE_DIRECT
{
UP,
DOWN,
LEFT,
RIGHT
};
// <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>ʽ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
ETransitionMove(
float moveDuration, /* <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
MOVE_DIRECT direct = LEFT /* <20><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD> */
2017-10-21 19:09:31 +08:00
);
protected:
// <20><><EFBFBD><EFBFBD><C2B6><EFBFBD>
virtual void _update() override;
2017-10-21 19:09:31 +08:00
virtual void _init() override;
2017-10-21 19:09:31 +08:00
virtual void _reset() override;
2017-10-21 19:09:31 +08:00
protected:
MOVE_DIRECT m_Direct;
EVec m_Vec;
EPoint m_NextPos;
2017-10-21 19:09:31 +08:00
};
}