234 lines
3.2 KiB
C
234 lines
3.2 KiB
C
|
|
#pragma once
|
|||
|
|
#include "emacros.h"
|
|||
|
|
#include "ecommon.h"
|
|||
|
|
#include <vector>
|
|||
|
|
|
|||
|
|
// Base Classes
|
|||
|
|
|
|||
|
|
namespace e2d
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
class EScene;
|
|||
|
|
class ENode;
|
|||
|
|
class EObjectManager;
|
|||
|
|
|
|||
|
|
class EApp
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
EApp();
|
|||
|
|
|
|||
|
|
~EApp();
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
|
static EApp * get();
|
|||
|
|
|
|||
|
|
// Register the window class and call methods for instantiating drawing resources
|
|||
|
|
bool init(
|
|||
|
|
e2d::EString title,
|
|||
|
|
e2d::ESize size,
|
|||
|
|
bool bShowConsole = false
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// Register the window class and call methods for instantiating drawing resources
|
|||
|
|
bool init(
|
|||
|
|
e2d::EString title,
|
|||
|
|
UINT32 width,
|
|||
|
|
UINT32 height,
|
|||
|
|
bool bShowConsole = false
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void run();
|
|||
|
|
|
|||
|
|
// <20>Ĵ<DEB8><C4B4>ڴ<EFBFBD>С
|
|||
|
|
void setWindowSize(
|
|||
|
|
int width,
|
|||
|
|
int height
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// <20>Ĵ<DEB8><C4B4>ڴ<EFBFBD>С
|
|||
|
|
void setWindowSize(
|
|||
|
|
e2d::ESize size
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ô<EFBFBD><C3B4>ڱ<EFBFBD><DAB1><EFBFBD>
|
|||
|
|
void setWindowTitle(
|
|||
|
|
e2d::EString title
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>
|
|||
|
|
e2d::EString getTitle();
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڴ<EFBFBD>С
|
|||
|
|
e2d::ESize getSize();
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD>
|
|||
|
|
UINT32 getWidth();
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڸ߶<DAB8>
|
|||
|
|
UINT32 getHeight();
|
|||
|
|
|
|||
|
|
// <20>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void enterScene(
|
|||
|
|
EScene * scene,
|
|||
|
|
bool save = true
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
|||
|
|
void backScene();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD>
|
|||
|
|
void clearScene();
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|||
|
|
EScene * getCurrentScene();
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD>еij<D0B5><C4B3><EFBFBD>
|
|||
|
|
EScene * getLoadingScene();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD>еij<D0B5><C4B3><EFBFBD>
|
|||
|
|
void setLoadingScene(EScene * scene);
|
|||
|
|
|
|||
|
|
// <20><>ȡ AppName
|
|||
|
|
e2d::EString getAppName();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> AppName
|
|||
|
|
void setAppName(
|
|||
|
|
e2d::EString appname
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// <20>Ĵ<DEB8><C4B4>ڱ<EFBFBD><DAB1><EFBFBD>ɫ
|
|||
|
|
void setBkColor(
|
|||
|
|
EColor::Enum color
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// <20>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>Դ
|
|||
|
|
void free();
|
|||
|
|
|
|||
|
|
// <20>رմ<D8B1><D5B4><EFBFBD>
|
|||
|
|
void close();
|
|||
|
|
|
|||
|
|
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
|
void show();
|
|||
|
|
|
|||
|
|
// <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
|
|||
|
|
void quit();
|
|||
|
|
|
|||
|
|
// <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
|
|||
|
|
void end();
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
// Initialize device-independent resources.
|
|||
|
|
HRESULT _createDeviceIndependentResources();
|
|||
|
|
|
|||
|
|
// Initialize device-dependent resources.
|
|||
|
|
HRESULT _createDeviceResources();
|
|||
|
|
|
|||
|
|
// Release device-dependent resource.
|
|||
|
|
void _discardDeviceResources();
|
|||
|
|
|
|||
|
|
void _mainLoop();
|
|||
|
|
|
|||
|
|
void _onControl();
|
|||
|
|
|
|||
|
|
// Draw content.
|
|||
|
|
bool _onRender();
|
|||
|
|
|
|||
|
|
void _enterNextScene();
|
|||
|
|
|
|||
|
|
// ReSize the render target.
|
|||
|
|
void _onResize(
|
|||
|
|
UINT width,
|
|||
|
|
UINT height
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// The windows procedure.
|
|||
|
|
static LRESULT CALLBACK WndProc(
|
|||
|
|
HWND hWnd,
|
|||
|
|
UINT message,
|
|||
|
|
WPARAM wParam,
|
|||
|
|
LPARAM lParam
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
bool m_bRunning;
|
|||
|
|
bool m_bSaveScene;
|
|||
|
|
EString m_sTitle;
|
|||
|
|
EString m_sAppName;
|
|||
|
|
EColor::Enum m_ClearColor;
|
|||
|
|
|
|||
|
|
EScene * m_pCurrentScene;
|
|||
|
|
EScene * m_pNextScene;
|
|||
|
|
EScene * m_pLoadingScene;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class EScene
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
|
|||
|
|
EScene();
|
|||
|
|
|
|||
|
|
~EScene();
|
|||
|
|
|
|||
|
|
// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual void init();
|
|||
|
|
|
|||
|
|
// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD>ִ<EFBFBD><D6B4>
|
|||
|
|
virtual void onEnter();
|
|||
|
|
|
|||
|
|
// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뿪<EFBFBD><EBBFAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Զ<EFBFBD>ִ<EFBFBD><D6B4>
|
|||
|
|
virtual void onExit();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void add(
|
|||
|
|
e2d::ENode * child,
|
|||
|
|
int zOrder = 0
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// ɾ<><C9BE><EFBFBD>ӳ<EFBFBD>Ա
|
|||
|
|
bool del(
|
|||
|
|
e2d::ENode * child
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ӽڵ<D3BD>
|
|||
|
|
std::vector<e2d::ENode*> &getChildren();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>Ա
|
|||
|
|
void clearAllChildren();
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
friend EApp;
|
|||
|
|
std::vector<e2d::ENode*> m_vChildren;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
void _exec();
|
|||
|
|
|
|||
|
|
void _onDraw();
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
class EObject
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
EObject();
|
|||
|
|
|
|||
|
|
virtual ~EObject();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>һ
|
|||
|
|
void retain();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD>һ
|
|||
|
|
void release();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void autoRelease();
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
friend EObjectManager;
|
|||
|
|
int m_nRefCount;
|
|||
|
|
bool m_bManaged;
|
|||
|
|
bool m_bAutoRelease;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|