2017-10-12 23:34:13 +08:00
|
|
|
|
#pragma once
|
2018-04-21 21:24:46 +08:00
|
|
|
|
#include "e2dmacros.h"
|
|
|
|
|
|
#include "e2dcommon.h"
|
2018-05-22 11:58:45 +08:00
|
|
|
|
#include "e2dcustom.h"
|
2017-10-12 23:34:13 +08:00
|
|
|
|
|
2017-10-13 11:42:36 +08:00
|
|
|
|
|
2017-10-12 23:34:13 +08:00
|
|
|
|
// Base Classes
|
|
|
|
|
|
|
|
|
|
|
|
namespace e2d
|
|
|
|
|
|
{
|
|
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
2018-07-28 20:48:25 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
class Config
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
Config();
|
|
|
|
|
|
|
|
|
|
|
|
virtual ~Config();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><EFBFBD><DEB8><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|
|
|
|
|
// Ĭ<>ϣ<EFBFBD><CFA3><EFBFBD>
|
|
|
|
|
|
void setGameName(
|
|
|
|
|
|
const String& name
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FPS
|
|
|
|
|
|
// Ĭ<>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void showFps(
|
|
|
|
|
|
bool show
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ؽڵ<D8BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// Ĭ<>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void setOutlineVisible(
|
|
|
|
|
|
bool visible
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><EFBFBD><F2BFAABB>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// Ĭ<>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void setSoundEnabled(
|
|
|
|
|
|
bool enabled
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><EFBFBD><F2BFAABB>ر<EFBFBD><D8B1><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>
|
|
|
|
|
|
// Ĭ<>ϣ<EFBFBD><CFA3>ر<EFBFBD>
|
|
|
|
|
|
void setCollisionEnabled(
|
|
|
|
|
|
bool enabled
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><EFBFBD><F2BFAABB>ر<EFBFBD><D8B1><EFBFBD>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD>
|
|
|
|
|
|
// Ĭ<>ϣ<EFBFBD><CFA3>ر<EFBFBD>
|
|
|
|
|
|
void setColliderVisible(
|
|
|
|
|
|
bool visible
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|
|
|
|
|
String getGameName() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|
|
|
|
|
bool isSoundEnabled() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ FPS <20><>ʾ״̬
|
|
|
|
|
|
bool isFpsShow() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ״̬
|
|
|
|
|
|
bool isOutlineVisible() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD>״̬
|
|
|
|
|
|
bool isCollisionEnabled() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD>ӻ<EFBFBD>״̬
|
|
|
|
|
|
bool isColliderVisible() const;
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
bool _showFps;
|
|
|
|
|
|
bool _soundEnabled;
|
|
|
|
|
|
bool _outlineVisible;
|
|
|
|
|
|
bool _collisionEnabled;
|
|
|
|
|
|
bool _colliderVisible;
|
|
|
|
|
|
String _gameName;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
2018-02-07 16:37:12 +08:00
|
|
|
|
class Game
|
2017-10-12 23:34:13 +08:00
|
|
|
|
{
|
|
|
|
|
|
public:
|
2018-07-03 18:16:26 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>Ϸʵ<CFB7><CAB5>
|
2018-07-03 01:49:20 +08:00
|
|
|
|
static Game * getInstance();
|
|
|
|
|
|
|
2018-07-03 18:16:26 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
|
static void destroyInstance();
|
|
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
|
2018-07-21 22:57:21 +08:00
|
|
|
|
void start();
|
2017-10-17 21:22:25 +08:00
|
|
|
|
|
2017-10-20 00:59:26 +08:00
|
|
|
|
// <20><>ͣ<EFBFBD><CDA3>Ϸ
|
2018-07-03 01:49:20 +08:00
|
|
|
|
void pause();
|
2017-10-12 23:34:13 +08:00
|
|
|
|
|
2017-10-20 00:59:26 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
|
2018-07-03 01:49:20 +08:00
|
|
|
|
void resume();
|
2017-10-12 23:34:13 +08:00
|
|
|
|
|
2017-12-08 19:50:59 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
|
2018-07-03 01:49:20 +08:00
|
|
|
|
void quit();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
|
|
|
|
|
void cleanup();
|
2017-10-12 23:34:13 +08:00
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// <20><>Ϸ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͣ
|
2018-07-03 01:49:20 +08:00
|
|
|
|
bool isPaused();
|
|
|
|
|
|
|
2018-07-04 17:00:21 +08:00
|
|
|
|
// <20><EFBFBD><DEB8><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|
|
|
|
|
void setConfig(
|
2018-07-24 12:49:32 +08:00
|
|
|
|
const Config& config
|
2018-07-04 17:00:21 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
2018-07-24 12:49:32 +08:00
|
|
|
|
const Config& getConfig();
|
2018-07-04 17:00:21 +08:00
|
|
|
|
|
2018-07-03 01:49:20 +08:00
|
|
|
|
private:
|
|
|
|
|
|
Game();
|
|
|
|
|
|
|
2018-07-03 18:16:26 +08:00
|
|
|
|
~Game();
|
|
|
|
|
|
|
2018-07-03 01:49:20 +08:00
|
|
|
|
E2D_DISABLE_COPY(Game);
|
2017-10-20 00:59:26 +08:00
|
|
|
|
|
2018-07-03 01:49:20 +08:00
|
|
|
|
private:
|
2018-07-24 12:49:32 +08:00
|
|
|
|
bool _quit;
|
2018-07-22 00:41:24 +08:00
|
|
|
|
bool _paused;
|
2018-07-24 12:49:32 +08:00
|
|
|
|
Config _config;
|
2018-07-04 17:00:21 +08:00
|
|
|
|
|
2018-07-03 01:49:20 +08:00
|
|
|
|
static Game * _instance;
|
2018-01-30 16:45:38 +08:00
|
|
|
|
};
|
2017-10-20 00:59:26 +08:00
|
|
|
|
|
|
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
2018-02-07 16:37:12 +08:00
|
|
|
|
class Window
|
2018-01-30 16:45:38 +08:00
|
|
|
|
{
|
2018-05-17 15:22:14 +08:00
|
|
|
|
public:
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
enum class Cursor : int
|
|
|
|
|
|
{
|
2018-05-24 20:37:34 +08:00
|
|
|
|
Normal, /* Ĭ<><C4AC>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʽ */
|
|
|
|
|
|
Hand, /* <20><>״ָ<D7B4><D6B8> */
|
|
|
|
|
|
No, /* <20><>ָֹ<D6B9><D6B8> */
|
|
|
|
|
|
Wait, /* ɳ©ָ<C2A9><D6B8> */
|
|
|
|
|
|
ArrowWait /* Ĭ<><C4AC>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Сɳ© */
|
2018-05-17 15:22:14 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
2018-07-17 00:35:27 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
2018-07-17 10:34:16 +08:00
|
|
|
|
enum class Popup : int
|
2018-07-17 00:35:27 +08:00
|
|
|
|
{
|
|
|
|
|
|
Information, /* <20><>Ϣ */
|
|
|
|
|
|
Warning, /* <20><><EFBFBD><EFBFBD> */
|
|
|
|
|
|
Error /* <20><><EFBFBD><EFBFBD> */
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
public:
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
2018-07-03 18:16:26 +08:00
|
|
|
|
static Window * getInstance();
|
|
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD>ʵ<EFBFBD><CAB5>
|
2018-07-03 18:16:26 +08:00
|
|
|
|
static void destroyInstance();
|
|
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>廥<EFBFBD><E5BBA5><EFBFBD><EFBFBD>
|
2018-07-04 00:27:14 +08:00
|
|
|
|
bool createMutex(
|
|
|
|
|
|
const String& mutex = L"" /* <20><><EFBFBD>̻<EFBFBD><CCBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20>Ĵ<DEB8><C4B4><EFBFBD><EFBFBD><EFBFBD>С
|
2018-07-03 18:16:26 +08:00
|
|
|
|
void setSize(
|
2018-07-13 01:33:53 +08:00
|
|
|
|
int width, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
int height /* <20><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD> */
|
2018-04-13 00:39:27 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-07-03 18:16:26 +08:00
|
|
|
|
void setTitle(
|
2018-07-13 01:33:53 +08:00
|
|
|
|
const String& title /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
2018-04-13 00:39:27 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ͼ<EFBFBD><CDBC>
|
2018-07-03 18:16:26 +08:00
|
|
|
|
void setIcon(
|
2018-05-07 15:48:06 +08:00
|
|
|
|
int iconID
|
2018-04-13 00:39:27 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2018-05-07 17:03:59 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʽ
|
2018-07-03 18:16:26 +08:00
|
|
|
|
void setCursor(
|
2018-05-07 17:03:59 +08:00
|
|
|
|
Cursor cursor
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-07-03 18:16:26 +08:00
|
|
|
|
String getTitle();
|
2017-10-20 00:59:26 +08:00
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-07-28 20:06:27 +08:00
|
|
|
|
float getWidth();
|
2017-10-20 00:59:26 +08:00
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
2018-07-28 20:06:27 +08:00
|
|
|
|
float getHeight();
|
2017-10-20 00:59:26 +08:00
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
2018-07-03 18:16:26 +08:00
|
|
|
|
Size getSize();
|
2017-11-03 12:51:01 +08:00
|
|
|
|
|
2018-07-28 22:22:58 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> DPI
|
|
|
|
|
|
float getDpi();
|
|
|
|
|
|
|
2017-10-17 23:50:02 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
2018-07-03 18:16:26 +08:00
|
|
|
|
HWND getHWnd();
|
2017-10-17 23:50:02 +08:00
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><EFBFBD><F2BFAABB><EFBFBD><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>̨
|
|
|
|
|
|
void setConsoleEnabled(
|
|
|
|
|
|
bool enabled
|
2017-10-12 23:34:13 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>뷨
|
2018-07-04 17:00:21 +08:00
|
|
|
|
void setTypewritingEnabled(
|
|
|
|
|
|
bool enabled
|
2017-10-17 21:22:25 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2018-07-17 10:34:16 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD><DAB0><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ťʱ<C5A5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ʾ<EFBFBD>û<EFBFBD><C3BB>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>ϰ<EFBFBD>ť
|
2018-07-17 00:35:27 +08:00
|
|
|
|
bool popup(
|
2018-07-17 10:34:16 +08:00
|
|
|
|
const String& text, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
const String& title, /* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD> */
|
|
|
|
|
|
Popup style = Popup::Information, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ */
|
|
|
|
|
|
bool hasCancel = false /* <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ť */
|
2018-05-10 18:18:02 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2018-07-13 01:33:53 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
2018-07-05 22:05:23 +08:00
|
|
|
|
void poll();
|
|
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
private:
|
2018-07-03 18:16:26 +08:00
|
|
|
|
Window();
|
2018-03-01 00:19:09 +08:00
|
|
|
|
|
2018-07-03 18:16:26 +08:00
|
|
|
|
~Window();
|
|
|
|
|
|
|
|
|
|
|
|
E2D_DISABLE_COPY(Window);
|
2017-12-08 19:50:59 +08:00
|
|
|
|
|
2018-07-03 23:39:00 +08:00
|
|
|
|
// ע<>ᴰ<EFBFBD><E1B4B0>
|
2018-08-02 00:27:45 +08:00
|
|
|
|
HWND __registerWindow();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ݿͻ<DDBF><CDBB><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵĴ<CAB5><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
Rect __adjustWindow(
|
|
|
|
|
|
int width,
|
|
|
|
|
|
int height
|
|
|
|
|
|
);
|
2018-07-03 23:39:00 +08:00
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// Win32 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
2018-07-03 18:42:00 +08:00
|
|
|
|
static LRESULT CALLBACK WndProc(
|
|
|
|
|
|
HWND hWnd,
|
|
|
|
|
|
UINT message,
|
|
|
|
|
|
WPARAM wParam,
|
|
|
|
|
|
LPARAM lParam
|
|
|
|
|
|
);
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
HWND _hWnd;
|
2018-07-05 22:05:23 +08:00
|
|
|
|
MSG _msg;
|
2018-07-03 18:16:26 +08:00
|
|
|
|
Size _size;
|
|
|
|
|
|
String _title;
|
2018-07-03 23:39:00 +08:00
|
|
|
|
int _iconID;
|
2018-07-28 22:22:58 +08:00
|
|
|
|
float _dpi;
|
2018-07-03 18:42:00 +08:00
|
|
|
|
|
2018-07-03 18:16:26 +08:00
|
|
|
|
static Window * _instance;
|
2018-01-30 16:45:38 +08:00
|
|
|
|
};
|
2017-12-08 19:50:59 +08:00
|
|
|
|
|
|
|
|
|
|
|
2018-07-04 15:33:09 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>豸
|
2018-02-07 16:37:12 +08:00
|
|
|
|
class Input
|
2017-10-12 23:34:13 +08:00
|
|
|
|
{
|
2017-10-13 14:34:33 +08:00
|
|
|
|
public:
|
2018-07-04 15:33:09 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>豸ʵ<E8B1B8><CAB5>
|
|
|
|
|
|
static Input * getInstance();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸ʵ<E8B1B8><CAB5>
|
|
|
|
|
|
static void destroyInstance();
|
|
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-07-04 15:33:09 +08:00
|
|
|
|
bool isDown(
|
2018-07-16 22:11:27 +08:00
|
|
|
|
KeyCode key
|
2018-01-30 16:45:38 +08:00
|
|
|
|
);
|
2017-10-12 23:34:13 +08:00
|
|
|
|
|
2018-05-17 15:22:14 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD><EAB0B4><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-07-04 15:33:09 +08:00
|
|
|
|
bool isDown(
|
2018-07-16 22:11:27 +08:00
|
|
|
|
MouseCode code
|
2018-05-17 15:22:14 +08:00
|
|
|
|
);
|
2017-10-12 23:34:13 +08:00
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2018-07-28 20:06:27 +08:00
|
|
|
|
float getMouseX();
|
2017-10-14 18:43:32 +08:00
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2018-07-28 20:06:27 +08:00
|
|
|
|
float getMouseY();
|
2017-10-20 00:59:26 +08:00
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2018-07-04 15:33:09 +08:00
|
|
|
|
Point getMousePos();
|
2017-10-12 23:34:13 +08:00
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-07-28 20:06:27 +08:00
|
|
|
|
float getMouseDeltaX();
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-07-28 20:06:27 +08:00
|
|
|
|
float getMouseDeltaY();
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>ᣨ<EFBFBD><E1A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-07-28 20:06:27 +08:00
|
|
|
|
float getMouseDeltaZ();
|
2017-10-26 17:17:30 +08:00
|
|
|
|
|
2018-07-05 22:05:23 +08:00
|
|
|
|
// ˢ<><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸״̬
|
|
|
|
|
|
void update();
|
|
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
private:
|
2018-07-04 15:33:09 +08:00
|
|
|
|
Input();
|
|
|
|
|
|
|
|
|
|
|
|
~Input();
|
|
|
|
|
|
|
|
|
|
|
|
E2D_DISABLE_COPY(Input);
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
2018-07-04 15:33:09 +08:00
|
|
|
|
private:
|
2018-07-17 22:16:56 +08:00
|
|
|
|
IDirectInput8W* _directInput;
|
|
|
|
|
|
IDirectInputDevice8W* _keyboardDevice;
|
|
|
|
|
|
IDirectInputDevice8W* _mouseDevice;
|
2018-07-04 15:33:09 +08:00
|
|
|
|
DIMOUSESTATE _mouseState;
|
2018-07-17 22:16:56 +08:00
|
|
|
|
char _keyBuffer[256];
|
2018-07-04 15:33:09 +08:00
|
|
|
|
|
|
|
|
|
|
static Input * _instance;
|
2018-01-30 16:45:38 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>Ⱦ<EFBFBD><C8BE>
|
2018-02-07 16:37:12 +08:00
|
|
|
|
class Renderer
|
2018-01-30 16:45:38 +08:00
|
|
|
|
{
|
|
|
|
|
|
public:
|
2018-07-03 18:16:26 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>Ⱦ<EFBFBD><C8BE>ʵ<EFBFBD><CAB5>
|
|
|
|
|
|
static Renderer * getInstance();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
|
static void destroyInstance();
|
|
|
|
|
|
|
2018-04-22 13:15:57 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ɫ
|
2018-07-03 18:16:26 +08:00
|
|
|
|
Color getBackgroundColor();
|
2018-04-22 13:15:57 +08:00
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
// <20>ı<DEB8><C4B1><EFBFBD>ɫ
|
2018-07-03 18:16:26 +08:00
|
|
|
|
void setBackgroundColor(
|
2018-04-22 13:15:57 +08:00
|
|
|
|
Color color
|
2017-10-29 23:48:32 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
2018-07-03 18:16:26 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>
|
|
|
|
|
|
TextRenderer * getTextRenderer();
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ ID2D1HwndRenderTarget <20><><EFBFBD><EFBFBD>
|
2018-07-03 18:16:26 +08:00
|
|
|
|
ID2D1HwndRenderTarget * getRenderTarget();
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ ID2D1SolidColorBrush <20><><EFBFBD><EFBFBD>
|
2018-07-03 18:16:26 +08:00
|
|
|
|
ID2D1SolidColorBrush * getSolidColorBrush();
|
|
|
|
|
|
|
2018-08-02 00:27:45 +08:00
|
|
|
|
// <20><>Ⱦ<EFBFBD><C8BE>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|
|
|
|
|
void render();
|
|
|
|
|
|
|
|
|
|
|
|
// ɾ<><C9BE><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
|
|
|
|
|
void discardDeviceResources();
|
|
|
|
|
|
|
2018-07-03 18:16:26 +08:00
|
|
|
|
// <20><>ȡ ID2D1Factory <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
static ID2D1Factory * getFactory();
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ IWICImagingFactory <20><><EFBFBD><EFBFBD>
|
2018-07-03 18:16:26 +08:00
|
|
|
|
static IWICImagingFactory * getImagingFactory();
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ IDWriteFactory <20><><EFBFBD><EFBFBD>
|
2018-07-03 18:16:26 +08:00
|
|
|
|
static IDWriteFactory * getWriteFactory();
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
2018-05-24 17:19:54 +08:00
|
|
|
|
// <20><>ȡ Miter <20><>ʽ<EFBFBD><CABD> ID2D1StrokeStyle
|
2018-07-03 18:16:26 +08:00
|
|
|
|
static ID2D1StrokeStyle * getMiterStrokeStyle();
|
2018-05-24 17:19:54 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ Bevel <20><>ʽ<EFBFBD><CABD> ID2D1StrokeStyle
|
2018-07-03 18:16:26 +08:00
|
|
|
|
static ID2D1StrokeStyle * getBevelStrokeStyle();
|
2018-05-24 17:19:54 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ Round <20><>ʽ<EFBFBD><CABD> ID2D1StrokeStyle
|
2018-07-03 18:16:26 +08:00
|
|
|
|
static ID2D1StrokeStyle * getRoundStrokeStyle();
|
2018-05-24 17:19:54 +08:00
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
private:
|
2018-07-03 18:16:26 +08:00
|
|
|
|
Renderer();
|
|
|
|
|
|
|
|
|
|
|
|
~Renderer();
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
2018-07-03 18:16:26 +08:00
|
|
|
|
E2D_DISABLE_COPY(Renderer);
|
|
|
|
|
|
|
2018-07-17 12:32:20 +08:00
|
|
|
|
// <20><>Ⱦ FPS
|
|
|
|
|
|
void _renderFps();
|
|
|
|
|
|
|
2018-07-03 18:16:26 +08:00
|
|
|
|
private:
|
2018-07-25 00:07:52 +08:00
|
|
|
|
int _renderTimes;
|
|
|
|
|
|
Time _lastRenderTime;
|
2018-07-03 18:16:26 +08:00
|
|
|
|
D2D1_COLOR_F _clearColor;
|
|
|
|
|
|
TextRenderer* _textRenderer;
|
2018-07-24 00:24:29 +08:00
|
|
|
|
IDWriteTextFormat* _fpsFormat;
|
2018-07-25 00:07:52 +08:00
|
|
|
|
IDWriteTextLayout* _fpsLayout;
|
2018-07-24 00:24:29 +08:00
|
|
|
|
ID2D1SolidColorBrush* _solidBrush;
|
|
|
|
|
|
ID2D1HwndRenderTarget* _renderTarget;
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
|
|
|
|
|
static ID2D1Factory* _d2dFactory;
|
|
|
|
|
|
static IWICImagingFactory* _imagingFactory;
|
|
|
|
|
|
static IDWriteFactory* _writeFactory;
|
|
|
|
|
|
static ID2D1StrokeStyle* _miterStrokeStyle;
|
|
|
|
|
|
static ID2D1StrokeStyle* _bevelStrokeStyle;
|
|
|
|
|
|
static ID2D1StrokeStyle* _roundStrokeStyle;
|
|
|
|
|
|
static Renderer * _instance;
|
2017-10-12 23:34:13 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
2018-05-19 01:10:37 +08:00
|
|
|
|
|
2018-07-05 22:05:23 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-05-19 01:10:37 +08:00
|
|
|
|
class GC
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
2018-07-22 21:22:27 +08:00
|
|
|
|
// <20><>ȡ GC ʵ<><CAB5>
|
|
|
|
|
|
static GC * getInstance();
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
2018-07-22 21:22:27 +08:00
|
|
|
|
// <20>Զ<EFBFBD><D4B6>ͷ<EFBFBD>
|
|
|
|
|
|
void autorelease(
|
2018-07-07 01:43:41 +08:00
|
|
|
|
Ref* ref
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2018-07-22 21:22:27 +08:00
|
|
|
|
// <20><>ȫ<EFBFBD><C8AB><EFBFBD>ͷŶ<CDB7><C5B6><EFBFBD>
|
|
|
|
|
|
void safeRelease(
|
2018-07-07 01:43:41 +08:00
|
|
|
|
Ref* ref
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2018-07-07 11:03:03 +08:00
|
|
|
|
// ˢ<><CBA2><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>
|
2018-07-22 21:22:27 +08:00
|
|
|
|
void flush();
|
2018-07-05 22:05:23 +08:00
|
|
|
|
|
2018-07-07 11:03:03 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
|
2018-07-22 21:22:27 +08:00
|
|
|
|
void clear();
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
|
|
|
|
|
private:
|
2018-07-06 00:47:50 +08:00
|
|
|
|
GC();
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
|
|
|
|
|
~GC();
|
|
|
|
|
|
|
|
|
|
|
|
E2D_DISABLE_COPY(GC);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
2018-07-07 01:43:41 +08:00
|
|
|
|
bool _notifyed;
|
2018-07-13 01:12:22 +08:00
|
|
|
|
bool _cleanup;
|
2018-07-22 21:22:27 +08:00
|
|
|
|
std::set<Ref*> _pool;
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
|
|
|
|
|
static GC _instance;
|
2018-05-19 01:10:37 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
2017-10-12 23:34:13 +08:00
|
|
|
|
}
|