2017-10-12 23:34:13 +08:00
|
|
|
|
#pragma once
|
2018-09-05 13:17:07 +08:00
|
|
|
|
#include "e2dimpl.h"
|
2018-09-06 23:26:32 +08:00
|
|
|
|
#include "e2dobject.h"
|
2018-09-05 13:17:07 +08:00
|
|
|
|
#include "e2dtransition.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
|
|
|
|
namespace e2d
|
|
|
|
|
|
{
|
|
|
|
|
|
|
2018-01-30 16:45:38 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
class Window
|
2018-05-17 15:22:14 +08:00
|
|
|
|
{
|
2018-09-05 13:38:30 +08:00
|
|
|
|
public:
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
enum class Cursor : int
|
|
|
|
|
|
{
|
|
|
|
|
|
Normal, /* Ĭ<><C4AC>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʽ */
|
|
|
|
|
|
Hand, /* <20><>״ָ<D7B4><D6B8> */
|
|
|
|
|
|
No, /* <20><>ָֹ<D6B9><D6B8> */
|
|
|
|
|
|
Wait, /* ɳ©ָ<C2A9><D6B8> */
|
|
|
|
|
|
ArrowWait /* Ĭ<><C4AC>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Сɳ© */
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
enum class PopupStyle : int
|
|
|
|
|
|
{
|
|
|
|
|
|
Info, /* <20><>ʾ */
|
|
|
|
|
|
Warning, /* <20><><EFBFBD><EFBFBD> */
|
|
|
|
|
|
Error /* <20><><EFBFBD><EFBFBD> */
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
|
static Window * GetInstance();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
|
static void DestroyInstance();
|
|
|
|
|
|
|
2018-09-07 17:26:21 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>Ļ<EFBFBD><C4BB>С
|
|
|
|
|
|
static Size GetScreenSize();
|
|
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
const String& GetTitle() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
int GetWidth() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
|
|
|
|
|
|
int GetHeight() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
|
Size GetSize() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> DPI
|
|
|
|
|
|
float GetDpi() const;
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
|
|
|
|
|
HWND GetHWnd();
|
|
|
|
|
|
|
|
|
|
|
|
// <20>Ĵ<DEB8><C4B4><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
|
void SetSize(
|
|
|
|
|
|
int width, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
int height /* <20><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD> */
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetTitle(
|
|
|
|
|
|
const String& title /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ͼ<EFBFBD><CDBC>
|
|
|
|
|
|
void SetIcon(
|
2018-09-07 18:00:56 +08:00
|
|
|
|
int resource_id /* ͼ<><CDBC><EFBFBD><EFBFBD>Դ ID */
|
2018-09-05 13:38:30 +08:00
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
void SetCursor(
|
|
|
|
|
|
Cursor cursor
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><EFBFBD><F2BFAABB><EFBFBD><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>̨
|
|
|
|
|
|
void SetConsoleEnabled(
|
|
|
|
|
|
bool enabled
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>뷨
|
|
|
|
|
|
void SetTypewritingEnabled(
|
|
|
|
|
|
bool enabled
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2018-09-05 17:24:44 +08:00
|
|
|
|
// <20><><EFBFBD>ⴰ<EFBFBD><E2B4B0><EFBFBD>Ƿ<EFBFBD>Ψһ
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> false ˵<><CBB5><EFBFBD><EFBFBD>Ϸ<EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>Է<EFBFBD>ֹ<EFBFBD>û<EFBFBD>ͬʱ<CDAC><EFBFBD><F2BFAAB6><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool CheckUnique();
|
|
|
|
|
|
|
2018-09-05 13:38:30 +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>ť
|
|
|
|
|
|
bool Popup(
|
|
|
|
|
|
const String& text, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
const String& title, /* <20><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD> */
|
|
|
|
|
|
PopupStyle style = PopupStyle::Info,/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ */
|
|
|
|
|
|
bool has_cancel = false /* <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ť */
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
void Poll();
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
Window();
|
|
|
|
|
|
|
|
|
|
|
|
~Window();
|
|
|
|
|
|
|
|
|
|
|
|
E2D_DISABLE_COPY(Window);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ݿͻ<DDBF><CDBB><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|
|
|
|
|
Rect Locate(
|
|
|
|
|
|
int width,
|
|
|
|
|
|
int height
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// Win32 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static LRESULT CALLBACK WndProc(
|
|
|
|
|
|
HWND hWnd,
|
|
|
|
|
|
UINT msg,
|
|
|
|
|
|
WPARAM w_param,
|
|
|
|
|
|
LPARAM l_param
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
HWND hWnd_;
|
|
|
|
|
|
MSG msg_;
|
|
|
|
|
|
int width_;
|
|
|
|
|
|
int height_;
|
|
|
|
|
|
int icon_id_;
|
|
|
|
|
|
float dpi_;
|
2018-09-07 17:56:03 +08:00
|
|
|
|
String title_;
|
2018-09-05 13:38:30 +08:00
|
|
|
|
|
|
|
|
|
|
static Window * instance_;
|
2018-05-17 15:22:14 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
2018-07-17 00:35:27 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>Ⱦ<EFBFBD><C8BE>
|
|
|
|
|
|
class Renderer
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>Ⱦ<EFBFBD><C8BE>ʵ<EFBFBD><CAB5>
|
|
|
|
|
|
static Renderer * GetInstance();
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
|
static void DestroyInstance();
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
2018-09-07 17:26:21 +08:00
|
|
|
|
// <20><>ȡ ID2D1Factory <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
static ID2D1Factory * GetFactory();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ IWICImagingFactory <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
static IWICImagingFactory * GetImagingFactory();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ IDWriteFactory <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
static IDWriteFactory * GetWriteFactory();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ Miter <20><>ʽ<EFBFBD><CABD> ID2D1StrokeStyle
|
|
|
|
|
|
static ID2D1StrokeStyle * GetMiterStrokeStyle();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ Bevel <20><>ʽ<EFBFBD><CABD> ID2D1StrokeStyle
|
|
|
|
|
|
static ID2D1StrokeStyle * GetBevelStrokeStyle();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ Round <20><>ʽ<EFBFBD><CABD> ID2D1StrokeStyle
|
|
|
|
|
|
static ID2D1StrokeStyle * GetRoundStrokeStyle();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE>
|
|
|
|
|
|
E2DTextRenderer * GetTextRenderer();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ ID2D1HwndRenderTarget <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
ID2D1HwndRenderTarget * GetRenderTarget();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ ID2D1SolidColorBrush <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
ID2D1SolidColorBrush * GetSolidBrush();
|
|
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ɫ
|
|
|
|
|
|
Color GetBackgroundColor();
|
2018-04-22 13:15:57 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20>ı<DEB8><C4B1><EFBFBD>ɫ
|
|
|
|
|
|
void SetBackgroundColor(
|
|
|
|
|
|
const Color& color
|
|
|
|
|
|
);
|
2017-10-29 23:48:32 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FPS
|
|
|
|
|
|
// Ĭ<>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ShowFps(
|
|
|
|
|
|
bool show
|
|
|
|
|
|
);
|
2018-08-19 15:11:20 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>ʼ<EFBFBD><CABC>Ⱦ
|
|
|
|
|
|
void BeginDraw();
|
2018-08-28 00:06:10 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ
|
|
|
|
|
|
void EndDraw();
|
2018-08-28 00:06:10 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
protected:
|
|
|
|
|
|
Renderer();
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
~Renderer();
|
2018-08-15 23:30:23 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
E2D_DISABLE_COPY(Renderer);
|
2018-08-15 23:30:23 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
protected:
|
|
|
|
|
|
bool show_fps_;
|
|
|
|
|
|
int render_times_;
|
|
|
|
|
|
Time last_render_time_;
|
|
|
|
|
|
D2D1_COLOR_F clear_color_;
|
|
|
|
|
|
E2DTextRenderer* text_renderer_;
|
|
|
|
|
|
IDWriteTextFormat* fps_text_format_;
|
|
|
|
|
|
IDWriteTextLayout* fps_text_layout_;
|
|
|
|
|
|
ID2D1SolidColorBrush* solid_brush_;
|
|
|
|
|
|
ID2D1HwndRenderTarget* render_target_;
|
2018-09-04 22:42:34 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
static ID2D1Factory* factory_;
|
|
|
|
|
|
static IWICImagingFactory* imaging_factory_;
|
|
|
|
|
|
static IDWriteFactory* write_factory_;
|
|
|
|
|
|
static ID2D1StrokeStyle* miter_stroke_style_;
|
|
|
|
|
|
static ID2D1StrokeStyle* bevel_stroke_style_;
|
|
|
|
|
|
static ID2D1StrokeStyle* round_stroke_style_;
|
|
|
|
|
|
static Renderer * instance_;
|
|
|
|
|
|
};
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>豸
|
|
|
|
|
|
class Input
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>豸ʵ<E8B1B8><CAB5>
|
|
|
|
|
|
static Input * GetInstance();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸ʵ<E8B1B8><CAB5>
|
|
|
|
|
|
static void DestroyInstance();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool IsDown(
|
|
|
|
|
|
KeyCode key
|
|
|
|
|
|
);
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>갴<EFBFBD><EAB0B4><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool IsDown(
|
|
|
|
|
|
MouseCode code
|
|
|
|
|
|
);
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
float GetMouseX();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
float GetMouseY();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
Point GetMousePos();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
float GetMouseDeltaX();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
float GetMouseDeltaY();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +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>
|
|
|
|
|
|
float GetMouseDeltaZ();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// ˢ<><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸״̬
|
|
|
|
|
|
void Update();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
protected:
|
|
|
|
|
|
Input();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
~Input();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
E2D_DISABLE_COPY(Input);
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
protected:
|
2018-09-07 17:56:03 +08:00
|
|
|
|
IDirectInput8W * direct_input_;
|
2018-09-05 13:38:30 +08:00
|
|
|
|
IDirectInputDevice8W* keyboard_device_;
|
|
|
|
|
|
IDirectInputDevice8W* mouse_device_;
|
|
|
|
|
|
DIMOUSESTATE mouse_state_;
|
|
|
|
|
|
char key_buffer_[256];
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
static Input * instance_;
|
|
|
|
|
|
};
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
|
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>Ƶ<EFBFBD>豸
|
|
|
|
|
|
class Audio
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>Ƶ<EFBFBD>豸ʵ<E8B1B8><CAB5>
|
|
|
|
|
|
static Audio * GetInstance();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
|
static void DestroyInstance();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>ȡ XAudio2 ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
IXAudio2 * GetXAudio2();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>ȡ MasteringVoice ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
IXAudio2MasteringVoice* GetMasteringVoice();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
protected:
|
|
|
|
|
|
Audio();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
virtual ~Audio();
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
E2D_DISABLE_COPY(Audio);
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
protected:
|
|
|
|
|
|
IXAudio2 * x_audio2_;
|
|
|
|
|
|
IXAudio2MasteringVoice* mastering_voice_;
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
static Audio * instance_;
|
|
|
|
|
|
};
|
2018-09-02 14:30:48 +08:00
|
|
|
|
|
|
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>Ϸ
|
|
|
|
|
|
class Game
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
// <20><>ȡ Game ʵ<><CAB5>
|
|
|
|
|
|
static Game * GetInstance();
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
|
|
|
|
|
static void DestroyInstance();
|
2018-08-15 23:30:23 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
|
|
|
|
|
|
void Start();
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>ͣ<EFBFBD><CDA3>Ϸ
|
|
|
|
|
|
void Pause();
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
|
|
|
|
|
|
void Resume();
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
|
|
|
|
|
|
void Quit();
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>Ϸ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ͣ
|
|
|
|
|
|
bool IsPaused();
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ
|
|
|
|
|
|
void EnterScene(
|
|
|
|
|
|
Scene * scene /* <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
|
|
|
|
|
);
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ
|
|
|
|
|
|
void EnterScene(
|
|
|
|
|
|
Transition * transition /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
);
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|
|
|
|
|
Scene * GetCurrentScene();
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
bool IsTransitioning() const;
|
2018-08-15 23:30:23 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><><EFBFBD>³<EFBFBD><C2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void UpdateScene();
|
2018-08-15 23:30:23 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
// <20><>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void DrawScene();
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
protected:
|
|
|
|
|
|
Game();
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
~Game();
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
E2D_DISABLE_COPY(Game);
|
2018-08-15 00:06:03 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
private:
|
|
|
|
|
|
bool quit_;
|
|
|
|
|
|
bool paused_;
|
|
|
|
|
|
Scene* curr_scene_;
|
|
|
|
|
|
Scene* next_scene_;
|
|
|
|
|
|
Transition* transition_;
|
2018-09-04 22:42:34 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
static Game * instance_;
|
|
|
|
|
|
};
|
2017-10-12 23:34:13 +08:00
|
|
|
|
|
2018-05-19 01:10:37 +08:00
|
|
|
|
|
2018-09-07 00:28:54 +08:00
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2018-09-05 13:38:30 +08:00
|
|
|
|
class GC
|
|
|
|
|
|
{
|
|
|
|
|
|
private:
|
|
|
|
|
|
GC();
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
~GC();
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
E2D_DISABLE_COPY(GC);
|
2018-07-03 18:16:26 +08:00
|
|
|
|
|
2018-09-07 00:28:54 +08:00
|
|
|
|
static GC instance_;
|
2018-09-05 13:38:30 +08:00
|
|
|
|
};
|
2018-05-19 01:10:37 +08:00
|
|
|
|
|
2018-09-05 13:38:30 +08:00
|
|
|
|
}
|