add: Scene::Update
This commit is contained in:
parent
422c7cbdc7
commit
318103b148
|
|
@ -223,6 +223,10 @@ namespace e2d
|
|||
// 结束
|
||||
void Quit();
|
||||
|
||||
// 关闭窗口时触发
|
||||
// 返回值:返回 false 将阻止窗口关闭
|
||||
virtual bool OnExit() { return true; }
|
||||
|
||||
// 修改窗体大小
|
||||
void SetSize(
|
||||
int width, /* 窗体宽度 */
|
||||
|
|
|
|||
|
|
@ -152,9 +152,8 @@ namespace e2d
|
|||
// 退出场景
|
||||
virtual void OnExit() {}
|
||||
|
||||
// 关闭窗口
|
||||
// 说明:返回 false 将阻止窗口关闭
|
||||
virtual bool OnCloseWindow() { return true; }
|
||||
// 更新场景
|
||||
virtual void Update() {}
|
||||
|
||||
// 设置根节点
|
||||
void SetRoot(
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ float e2d::MouseEvent::GetX() const
|
|||
{
|
||||
HDC hdc = ::GetDC(0);
|
||||
int dpi_x = ::GetDeviceCaps(hdc, LOGPIXELSX);
|
||||
::ReleaseDC(0, hdc);
|
||||
return ((float)(short)LOWORD(l_param_)) * 96.f / dpi_x;
|
||||
}
|
||||
|
||||
|
|
@ -39,6 +40,7 @@ float e2d::MouseEvent::GetY() const
|
|||
{
|
||||
HDC hdc = ::GetDC(0);
|
||||
int dpi_y = ::GetDeviceCaps(hdc, LOGPIXELSY);
|
||||
::ReleaseDC(0, hdc);
|
||||
return ((float)(short)HIWORD(l_param_)) * 96.f / dpi_y;
|
||||
}
|
||||
|
||||
|
|
@ -47,6 +49,7 @@ e2d::Point e2d::MouseEvent::GetPosition() const
|
|||
HDC hdc = ::GetDC(0);
|
||||
int dpi_x = ::GetDeviceCaps(hdc, LOGPIXELSX);
|
||||
int dpi_y = ::GetDeviceCaps(hdc, LOGPIXELSY);
|
||||
::ReleaseDC(0, hdc);
|
||||
return Point(
|
||||
((float)(short)LOWORD(l_param_)) * 96.f / dpi_x,
|
||||
((float)(short)HIWORD(l_param_)) * 96.f / dpi_y
|
||||
|
|
|
|||
|
|
@ -209,6 +209,16 @@ void e2d::Game::UpdateScene()
|
|||
curr_scene_ = next_scene_;
|
||||
next_scene_ = nullptr;
|
||||
}
|
||||
|
||||
if (curr_scene_)
|
||||
{
|
||||
curr_scene_->Update();
|
||||
}
|
||||
|
||||
if (next_scene_)
|
||||
{
|
||||
next_scene_->Update();
|
||||
}
|
||||
}
|
||||
|
||||
void e2d::Game::DrawScene()
|
||||
|
|
@ -357,6 +367,7 @@ e2d::Rect e2d::Game::Locate(int width, int height)
|
|||
HDC hdc = ::GetDC(0);
|
||||
int dpi_x = GetDeviceCaps(hdc, LOGPIXELSX);
|
||||
int dpi_y = GetDeviceCaps(hdc, LOGPIXELSY);
|
||||
::ReleaseDC(0, hdc);
|
||||
RECT rect = { 0, 0, LONG(ceil(width * dpi_x / 96.f)), LONG(ceil(height * dpi_y / 96.f)) };
|
||||
|
||||
// 计算合适的窗口大小
|
||||
|
|
@ -543,6 +554,7 @@ LRESULT e2d::Game::WndProc(HWND hwnd, UINT msg, WPARAM w_param, LPARAM l_param)
|
|||
HDC hdc = ::GetDC(0);
|
||||
int dpi_x = GetDeviceCaps(hdc, LOGPIXELSX);
|
||||
int dpi_y = GetDeviceCaps(hdc, LOGPIXELSY);
|
||||
::ReleaseDC(0, hdc);
|
||||
game->width_ = static_cast<int>(width * 96.f / dpi_x);
|
||||
game->height_ = static_cast<int>(height * 96.f / dpi_y);
|
||||
}
|
||||
|
|
@ -588,8 +600,7 @@ LRESULT e2d::Game::WndProc(HWND hwnd, UINT msg, WPARAM w_param, LPARAM l_param)
|
|||
// 窗口关闭消息
|
||||
case WM_CLOSE:
|
||||
{
|
||||
auto currScene = game->GetCurrentScene();
|
||||
if (!currScene || currScene->OnCloseWindow())
|
||||
if (game->OnExit())
|
||||
{
|
||||
game->Quit();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ e2d::Point e2d::Input::GetMousePos()
|
|||
HDC hdc = ::GetDC(0);
|
||||
int dpi_x = GetDeviceCaps(hdc, LOGPIXELSX);
|
||||
int dpi_y = GetDeviceCaps(hdc, LOGPIXELSY);
|
||||
::ReleaseDC(0, hdc);
|
||||
|
||||
POINT mousePos;
|
||||
::GetCursorPos(&mousePos);
|
||||
|
|
|
|||
Loading…
Reference in New Issue