rename some protected functions

This commit is contained in:
Nomango 2018-03-03 11:46:57 +08:00
parent 49783dbf8d
commit 627f04d7ce
13 changed files with 74 additions and 52 deletions

View File

@ -115,7 +115,7 @@ int e2d::Game::run()
}
else
{
ObjectManager::__flush(); // 刷新内存池
ObjectManager::__clearObjects(); // 刷新内存池
Time::__sleep(); // 挂起线程
}
}
@ -164,7 +164,7 @@ void e2d::Game::uninit()
// 清空图片缓存
Image::clearCache();
// 刷新内存池
ObjectManager::__flush();
ObjectManager::__clearObjects();
// 删除渲染相关资源
Renderer::__discardResources();
// 销毁窗口

View File

@ -1,27 +1,27 @@
#include "..\ebase.h"
#include "..\emanagers.h"
e2d::Obj::Obj()
e2d::Object::Object()
: m_nRefCount(0)
, m_bManaged(false)
{
ObjectManager::preload(this); // 将该对象放入释放池中
ObjectManager::add(this); // 将该对象放入释放池中
}
e2d::Obj::~Obj()
e2d::Object::~Object()
{
}
// 引用计数加一
void e2d::Obj::retain()
void e2d::Object::retain()
{
m_nRefCount++;
}
// 引用计数减一
void e2d::Obj::release()
void e2d::Object::release()
{
m_nRefCount--;
// 通知对象管理池刷新
ObjectManager::notifyFlush();
ObjectManager::clear();
}

View File

@ -51,7 +51,7 @@ void e2d::Scene::setAutoUpdate(bool bAutoUpdate)
m_bAutoUpdate = bAutoUpdate;
}
void e2d::Scene::preload(Node * child, int order /* = 0 */)
void e2d::Scene::add(Node * child, int order /* = 0 */)
{
m_pRoot->addChild(child, order);
}

View File

@ -9,17 +9,17 @@
// 让其自动释放
// 释放池容器
static std::vector<e2d::Obj*> s_vPool;
static std::vector<e2d::Object*> s_vPool;
// 标志释放池执行状态
static bool s_bNotifyed = false;
void e2d::ObjectManager::__flush()
void e2d::ObjectManager::__clearObjects()
{
if (!s_bNotifyed) return;
s_bNotifyed = false;
// 创建迭代器
static std::vector<e2d::Obj*>::iterator iter;
static std::vector<e2d::Object*>::iterator iter;
// 循环遍历容器中的所有对象
for (iter = s_vPool.begin(); iter != s_vPool.end();)
{
@ -37,7 +37,7 @@ void e2d::ObjectManager::__flush()
}
}
void e2d::ObjectManager::preload(e2d::Obj * nptr)
void e2d::ObjectManager::add(e2d::Object * nptr)
{
if (!nptr->m_bManaged)
{
@ -46,7 +46,7 @@ void e2d::ObjectManager::preload(e2d::Obj * nptr)
}
}
void e2d::ObjectManager::notifyFlush()
void e2d::ObjectManager::clear()
{
s_bNotifyed = true;
}

View File

@ -8,7 +8,7 @@ static e2d::Scene * s_pNextScene = nullptr;
static e2d::Transition * s_pTransition = nullptr;
static std::stack<e2d::Scene*> s_SceneStack;
void e2d::SceneManager::enterScene(Scene * scene, Transition * transition /* = nullptr */, bool saveCurrentScene /* = true */)
void e2d::SceneManager::enter(Scene * scene, Transition * transition /* = nullptr */, bool saveCurrentScene /* = true */)
{
ASSERT(scene != nullptr, "Next scene NULL pointer exception!");
scene->retain();
@ -33,7 +33,7 @@ void e2d::SceneManager::enterScene(Scene * scene, Transition * transition /* = n
}
}
void e2d::SceneManager::backScene(Transition * transition /* = nullptr */)
void e2d::SceneManager::back(Transition * transition /* = nullptr */)
{
// 栈为空时,调用返回场景函数失败
WARN_IF(s_SceneStack.size() == 0, "Scene stack now is empty!");
@ -61,7 +61,7 @@ void e2d::SceneManager::backScene(Transition * transition /* = nullptr */)
}
}
void e2d::SceneManager::clearScene()
void e2d::SceneManager::clear()
{
// 清空场景栈
while (s_SceneStack.size())
@ -168,5 +168,5 @@ void e2d::SceneManager::__uninit()
SafeRelease(&s_pCurrentScene);
SafeRelease(&s_pNextScene);
SafeRelease(&s_pTransition);
SceneManager::clearScene();
SceneManager::clear();
}

View File

@ -19,12 +19,23 @@ void e2d::TimerManager::__update()
}
}
void e2d::TimerManager::preload(Timer * pTimer, Scene * pParentScene)
void e2d::TimerManager::add(double timeOut, TimerCallback callback)
{
TimerManager::preload(pTimer, pParentScene->getRoot());
auto pTimer = new Timer(callback, timeOut, 0, false);
TimerManager::add(pTimer, SceneManager::getCurrentScene());
}
void e2d::TimerManager::preload(Timer * pTimer, Node * pParentNode)
void e2d::TimerManager::add(Timer * pTimer, Scene * pParentScene)
{
WARN_IF(pParentScene == nullptr, "Bind Timer with a NULL Scene pointer!");
if (pParentScene)
{
TimerManager::add(pTimer, pParentScene->getRoot());
}
}
void e2d::TimerManager::add(Timer * pTimer, Node * pParentNode)
{
WARN_IF(pTimer == nullptr, "Timer NULL pointer exception!");
WARN_IF(pParentNode == nullptr, "Bind Timer with a NULL Node pointer!");
@ -32,7 +43,7 @@ void e2d::TimerManager::preload(Timer * pTimer, Node * pParentNode)
if (pTimer && pParentNode)
{
ASSERT(
!pTimer->m_pParentNode,
pTimer->m_pParentNode != nullptr,
"The timer is already binded, cannot be binded again!"
);

View File

@ -13,7 +13,7 @@ class EActionTwoAtSameTime;
class TransitionFade;
class Action :
public Obj
public Object
{
friend ActionManager;
friend ActionTwo;

View File

@ -388,14 +388,14 @@ public:
class ObjectManager;
// 基础对象
class Obj
class Object
{
friend ObjectManager;
public:
Obj();
Object();
virtual ~Obj();
virtual ~Object();
// 引用计数加一
void retain();
@ -412,7 +412,7 @@ private:
class Text;
class Font :
public Obj
public Object
{
friend Text;
@ -486,7 +486,7 @@ protected:
// 图片
class Image :
public Obj
public Object
{
public:
// 创建一个空的图片
@ -583,7 +583,7 @@ class Action;
// 场景
class Scene :
public Obj
public Object
{
friend SceneManager;
@ -619,7 +619,7 @@ public:
);
// 添加节点到场景
void preload(
void add(
Node * child,
int zOrder = 0
);
@ -665,11 +665,16 @@ typedef VoidFunction TimerCallback;
// 按钮点击回调函数
typedef VoidFunction ButtonCallback;
#ifndef CreateCallback
#define CreateCallback(Func) std::bind(&Func, this)
#endif
template<typename T>
inline void SafeDelete(T** p) { if (*p) { delete *p; *p = nullptr; } }
template<typename Obj>
inline void SafeRelease(Obj** p) { if (*p) { (*p)->release(); *p = nullptr; } }
template<typename Object>
inline void SafeRelease(Object** p) { if (*p) { (*p)->release(); *p = nullptr; } }
template<class Interface>
inline void SafeReleaseInterface(Interface **pp) { if (*pp != nullptr) { (*pp)->Release(); (*pp) = nullptr; } }

View File

@ -7,7 +7,7 @@ namespace e2d
class Game;
class Renderer;
class Obj;
class Object;
class Scene;
class Node;
class Timer;
@ -22,17 +22,17 @@ class ObjectManager
friend Game;
public:
// 将一个节点放入内存池
static void preload(
e2d::Obj * nptr
// 将一个对象放入内存池
static void add(
e2d::Object * nptr
);
// 通知内存池刷新
static void notifyFlush();
// 释放垃圾对象的内存空间
static void clear();
private:
// 刷新内存池
static void __flush();
// 释放引用计数为 0 的对象
static void __clearObjects();
};
@ -44,19 +44,19 @@ class SceneManager
public:
// 切换场景
static void enterScene(
static void enter(
Scene * scene, /* 下一个场景的指针 */
Transition * transition = nullptr, /* 场景切换动画 */
bool saveCurrentScene = true /* 是否保存当前场景 */
);
// 返回上一场景
static void backScene(
static void back(
Transition * transition = nullptr /* 场景切换动画 */
);
// 清空保存的所有场景
static void clearScene();
static void clear();
// 获取当前场景
static Scene * getCurrentScene();
@ -86,18 +86,24 @@ class TimerManager
friend Node;
public:
// 绑定定时器到场景
static void preload(
// 添加一个定时器,并将它绑定到场景
static void add(
Timer * pTimer,
Scene * pParentScene
);
// 绑定定时器到节点
static void preload(
// 添加一个定时器,并将它绑定到节点
static void add(
Timer * pTimer,
Node * pParentNode
);
// 等待一段时间后执行指定函数
static void add(
double timeOut, /* 等待的时长(秒) */
TimerCallback callback /* 执行的函数 */
);
// 启动具有相同名称的定时器
static void startTimers(
const String &name

View File

@ -10,7 +10,7 @@ class Shape;
class Transition;
class Node :
public Obj
public Object
{
friend Scene;
friend Shape;

View File

@ -10,7 +10,7 @@ class Node;
class Shape :
public Obj
public Object
{
friend ShapeManager;
friend Node;

View File

@ -42,7 +42,7 @@ public:
// 定时器
class Timer :
public Obj
public Object
{
friend TimerManager;
@ -210,7 +210,7 @@ public:
// 音乐播放器
class Music :
public Obj
public Object
{
friend MusicManager;

View File

@ -8,7 +8,7 @@ namespace e2d
class SceneManager;
class Transition :
public Obj
public Object
{
friend SceneManager;