This commit is contained in:
Nomango 2020-05-22 21:07:43 +08:00
commit 093e422135
28 changed files with 169 additions and 124 deletions

View File

@ -5,7 +5,7 @@
<ClInclude Include="..\..\src\kiwano\2d\action\ActionDelay.h" />
<ClInclude Include="..\..\src\kiwano\2d\action\ActionGroup.h" />
<ClInclude Include="..\..\src\kiwano\2d\action\ActionHelper.h" />
<ClInclude Include="..\..\src\kiwano\2d\action\ActionManager.h" />
<ClInclude Include="..\..\src\kiwano\2d\action\ActionScheduler.h" />
<ClInclude Include="..\..\src\kiwano\2d\action\ActionWalk.h" />
<ClInclude Include="..\..\src\kiwano\2d\action\ActionTween.h" />
<ClInclude Include="..\..\src\kiwano\2d\action\Animation.h" />
@ -17,7 +17,6 @@
<ClInclude Include="..\..\src\kiwano\core\Cloneable.h" />
<ClInclude Include="..\..\src\kiwano\core\Common.h" />
<ClInclude Include="..\..\src\kiwano\core\Director.h" />
<ClInclude Include="..\..\src\kiwano\core\EventTicker.h" />
<ClInclude Include="..\..\src\kiwano\core\event\Event.h" />
<ClInclude Include="..\..\src\kiwano\core\event\EventType.h" />
<ClInclude Include="..\..\src\kiwano\core\event\KeyEvent.h" />
@ -26,16 +25,12 @@
<ClInclude Include="..\..\src\kiwano\core\Exception.h" />
<ClInclude Include="..\..\src\kiwano\core\Function.h" />
<ClInclude Include="..\..\src\kiwano\core\IntrusiveList.h" />
<ClInclude Include="..\..\src\kiwano\core\Json.h" />
<ClInclude Include="..\..\src\kiwano\core\Keys.h" />
<ClInclude Include="..\..\src\kiwano\core\Library.h" />
<ClInclude Include="..\..\src\kiwano\core\Serializable.h" />
<ClInclude Include="..\..\src\kiwano\core\Singleton.h" />
<ClInclude Include="..\..\src\kiwano\core\String.h" />
<ClInclude Include="..\..\src\kiwano\core\Ticker.h" />
<ClInclude Include="..\..\src\kiwano\core\Time.h" />
<ClInclude Include="..\..\src\kiwano\core\Timer.h" />
<ClInclude Include="..\..\src\kiwano\core\Xml.h" />
<ClInclude Include="..\..\src\kiwano\kiwano.h" />
<ClInclude Include="..\..\src\kiwano\config.h" />
<ClInclude Include="..\..\src\kiwano\macros.h" />
@ -56,8 +51,6 @@
<ClInclude Include="..\..\src\kiwano\core\RefCounter.h" />
<ClInclude Include="..\..\src\kiwano\core\Resource.h" />
<ClInclude Include="..\..\src\kiwano\core\SmartPtr.hpp" />
<ClInclude Include="..\..\src\kiwano\core\Task.h" />
<ClInclude Include="..\..\src\kiwano\core\TaskManager.h" />
<ClInclude Include="..\..\src\kiwano\math\Constants.h" />
<ClInclude Include="..\..\src\kiwano\math\EaseFunctions.h" />
<ClInclude Include="..\..\src\kiwano\math\Math.h" />
@ -102,15 +95,22 @@
<ClInclude Include="..\..\src\kiwano\render\TextStyle.hpp" />
<ClInclude Include="..\..\src\kiwano\render\Texture.h" />
<ClInclude Include="..\..\src\kiwano\render\TextureCache.h" />
<ClInclude Include="..\..\src\kiwano\utils\EventTicker.h" />
<ClInclude Include="..\..\src\kiwano\utils\Json.h" />
<ClInclude Include="..\..\src\kiwano\utils\LocalStorage.h" />
<ClInclude Include="..\..\src\kiwano\utils\ResourceCache.h" />
<ClInclude Include="..\..\src\kiwano\utils\Task.h" />
<ClInclude Include="..\..\src\kiwano\utils\TaskScheduler.h" />
<ClInclude Include="..\..\src\kiwano\utils\Ticker.h" />
<ClInclude Include="..\..\src\kiwano\utils\Timer.h" />
<ClInclude Include="..\..\src\kiwano\utils\UserData.h" />
<ClInclude Include="..\..\src\kiwano\utils\Xml.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\kiwano\2d\action\Action.cpp" />
<ClCompile Include="..\..\src\kiwano\2d\action\ActionDelay.cpp" />
<ClCompile Include="..\..\src\kiwano\2d\action\ActionGroup.cpp" />
<ClCompile Include="..\..\src\kiwano\2d\action\ActionManager.cpp" />
<ClCompile Include="..\..\src\kiwano\2d\action\ActionScheduler.cpp" />
<ClCompile Include="..\..\src\kiwano\2d\action\ActionWalk.cpp" />
<ClCompile Include="..\..\src\kiwano\2d\action\ActionTween.cpp" />
<ClCompile Include="..\..\src\kiwano\2d\action\Animation.cpp" />
@ -127,7 +127,6 @@
<ClCompile Include="..\..\src\kiwano\2d\TextActor.cpp" />
<ClCompile Include="..\..\src\kiwano\2d\Transition.cpp" />
<ClCompile Include="..\..\src\kiwano\core\Allocator.cpp" />
<ClCompile Include="..\..\src\kiwano\core\EventTicker.cpp" />
<ClCompile Include="..\..\src\kiwano\core\Module.cpp" />
<ClCompile Include="..\..\src\kiwano\core\Director.cpp" />
<ClCompile Include="..\..\src\kiwano\core\EventDispatcher.cpp" />
@ -143,11 +142,7 @@
<ClCompile Include="..\..\src\kiwano\core\RefCounter.cpp" />
<ClCompile Include="..\..\src\kiwano\core\Resource.cpp" />
<ClCompile Include="..\..\src\kiwano\core\String.cpp" />
<ClCompile Include="..\..\src\kiwano\core\Ticker.cpp" />
<ClCompile Include="..\..\src\kiwano\core\Time.cpp" />
<ClCompile Include="..\..\src\kiwano\core\Task.cpp" />
<ClCompile Include="..\..\src\kiwano\core\TaskManager.cpp" />
<ClCompile Include="..\..\src\kiwano\core\Timer.cpp" />
<ClCompile Include="..\..\src\kiwano\platform\Application.cpp" />
<ClCompile Include="..\..\src\kiwano\platform\FileSystem.cpp" />
<ClCompile Include="..\..\src\kiwano\platform\Input.cpp" />
@ -177,8 +172,13 @@
<ClCompile Include="..\..\src\kiwano\render\TextLayout.cpp" />
<ClCompile Include="..\..\src\kiwano\render\Texture.cpp" />
<ClCompile Include="..\..\src\kiwano\render\TextureCache.cpp" />
<ClCompile Include="..\..\src\kiwano\utils\EventTicker.cpp" />
<ClCompile Include="..\..\src\kiwano\utils\LocalStorage.cpp" />
<ClCompile Include="..\..\src\kiwano\utils\ResourceCache.cpp" />
<ClCompile Include="..\..\src\kiwano\utils\Task.cpp" />
<ClCompile Include="..\..\src\kiwano\utils\TaskScheduler.cpp" />
<ClCompile Include="..\..\src\kiwano\utils\Ticker.cpp" />
<ClCompile Include="..\..\src\kiwano\utils\Timer.cpp" />
<ClCompile Include="..\..\src\kiwano\utils\UserData.cpp" />
</ItemGroup>
<ItemGroup Label="ProjectConfigurations">

View File

@ -90,9 +90,6 @@
<ClInclude Include="..\..\src\kiwano\2d\action\ActionTween.h">
<Filter>2d\action</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\2d\action\ActionManager.h">
<Filter>2d\action</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\2d\action\Animation.h">
<Filter>2d\action</Filter>
</ClInclude>
@ -285,12 +282,6 @@
<ClInclude Include="..\..\src\kiwano\core\Any.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\core\Json.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\core\Xml.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\core\IntrusiveList.h">
<Filter>core</Filter>
</ClInclude>
@ -321,20 +312,29 @@
<ClInclude Include="..\..\src\kiwano\render\FrameSequence.h">
<Filter>render</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\core\Task.h">
<Filter>core</Filter>
<ClInclude Include="..\..\src\kiwano\utils\EventTicker.h">
<Filter>utils</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\core\TaskManager.h">
<Filter>core</Filter>
<ClInclude Include="..\..\src\kiwano\utils\Json.h">
<Filter>utils</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\core\Timer.h">
<Filter>core</Filter>
<ClInclude Include="..\..\src\kiwano\utils\Task.h">
<Filter>utils</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\core\Ticker.h">
<Filter>core</Filter>
<ClInclude Include="..\..\src\kiwano\utils\Ticker.h">
<Filter>utils</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\core\EventTicker.h">
<Filter>core</Filter>
<ClInclude Include="..\..\src\kiwano\utils\Timer.h">
<Filter>utils</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\utils\Xml.h">
<Filter>utils</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\utils\TaskScheduler.h">
<Filter>utils</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\2d\action\ActionScheduler.h">
<Filter>2d\action</Filter>
</ClInclude>
<ClInclude Include="..\..\src\kiwano\render\DirectX\D3DDeviceResources.h">
<Filter>render\DirectX</Filter>
@ -380,9 +380,6 @@
<ClCompile Include="..\..\src\kiwano\2d\action\ActionTween.cpp">
<Filter>2d\action</Filter>
</ClCompile>
<ClCompile Include="..\..\src\kiwano\2d\action\ActionManager.cpp">
<Filter>2d\action</Filter>
</ClCompile>
<ClCompile Include="..\..\src\kiwano\2d\action\Animation.cpp">
<Filter>2d\action</Filter>
</ClCompile>
@ -545,20 +542,23 @@
<ClCompile Include="..\..\src\kiwano\render\FrameSequence.cpp">
<Filter>render</Filter>
</ClCompile>
<ClCompile Include="..\..\src\kiwano\core\TaskManager.cpp">
<Filter>core</Filter>
<ClCompile Include="..\..\src\kiwano\utils\EventTicker.cpp">
<Filter>utils</Filter>
</ClCompile>
<ClCompile Include="..\..\src\kiwano\core\Task.cpp">
<Filter>core</Filter>
<ClCompile Include="..\..\src\kiwano\utils\Task.cpp">
<Filter>utils</Filter>
</ClCompile>
<ClCompile Include="..\..\src\kiwano\core\Timer.cpp">
<Filter>core</Filter>
<ClCompile Include="..\..\src\kiwano\utils\Ticker.cpp">
<Filter>utils</Filter>
</ClCompile>
<ClCompile Include="..\..\src\kiwano\core\Ticker.cpp">
<Filter>core</Filter>
<ClCompile Include="..\..\src\kiwano\utils\Timer.cpp">
<Filter>utils</Filter>
</ClCompile>
<ClCompile Include="..\..\src\kiwano\core\EventTicker.cpp">
<Filter>core</Filter>
<ClCompile Include="..\..\src\kiwano\utils\TaskScheduler.cpp">
<Filter>utils</Filter>
</ClCompile>
<ClCompile Include="..\..\src\kiwano\2d\action\ActionScheduler.cpp">
<Filter>2d\action</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>

View File

@ -21,7 +21,7 @@
#pragma once
#include <kiwano/core/Common.h>
#include <kiwano/core/ObjectBase.h>
#include <kiwano/core/Json.h>
#include <kiwano/utils/Json.h>
namespace kiwano
{

View File

@ -77,9 +77,9 @@ Actor::~Actor()
void Actor::Update(Duration dt)
{
UpdateActions(this, dt);
ActionScheduler::Update(this, dt);
TaskScheduler::Update(dt);
UpdateComponents(dt);
UpdateTasks(dt);
if (!update_pausing_)
{

View File

@ -19,12 +19,12 @@
// THE SOFTWARE.
#pragma once
#include <kiwano/math/Math.h>
#include <kiwano/core/ObjectBase.h>
#include <kiwano/core/Time.h>
#include <kiwano/core/TaskManager.h>
#include <kiwano/core/EventDispatcher.h>
#include <kiwano/math/Math.h>
#include <kiwano/2d/action/ActionManager.h>
#include <kiwano/utils/TaskScheduler.h>
#include <kiwano/2d/action/ActionScheduler.h>
#include <kiwano/2d/Component.h>
namespace kiwano
@ -62,8 +62,8 @@ typedef IntrusiveList<ActorPtr> ActorList;
*/
class KGE_API Actor
: public ObjectBase
, public TaskManager
, public ActionManager
, public TaskScheduler
, public ActionScheduler
, public EventDispatcher
, protected IntrusiveListValue<ActorPtr>
{

View File

@ -30,7 +30,7 @@
namespace kiwano
{
class Actor;
class ActionManager;
class ActionScheduler;
KGE_DECLARE_SMART_PTR(Action);
@ -55,7 +55,7 @@ class KGE_API Action
, public Cloneable<Action>
, protected IntrusiveListValue<ActionPtr>
{
friend class ActionManager;
friend class ActionScheduler;
friend class ActionGroup;
friend IntrusiveList<ActionPtr>;

View File

@ -19,12 +19,13 @@
// THE SOFTWARE.
#include <kiwano/2d/Actor.h>
#include <kiwano/2d/action/ActionManager.h>
#include <kiwano/2d/action/ActionScheduler.h>
#include <kiwano/core/Logger.h>
namespace kiwano
{
void ActionManager::UpdateActions(Actor* target, Duration dt)
void ActionScheduler::Update(Actor* target, Duration dt)
{
if (actions_.IsEmpty() || !target)
return;
@ -42,7 +43,7 @@ void ActionManager::UpdateActions(Actor* target, Duration dt)
}
}
Action* ActionManager::AddAction(ActionPtr action)
Action* ActionScheduler::AddAction(ActionPtr action)
{
KGE_ASSERT(action && "AddAction failed, NULL pointer exception");
@ -53,7 +54,7 @@ Action* ActionManager::AddAction(ActionPtr action)
return action.Get();
}
void ActionManager::ResumeAllActions()
void ActionScheduler::ResumeAllActions()
{
if (actions_.IsEmpty())
return;
@ -64,7 +65,7 @@ void ActionManager::ResumeAllActions()
}
}
void ActionManager::PauseAllActions()
void ActionScheduler::PauseAllActions()
{
if (actions_.IsEmpty())
return;
@ -75,7 +76,7 @@ void ActionManager::PauseAllActions()
}
}
void ActionManager::StopAllActions()
void ActionScheduler::StopAllActions()
{
if (actions_.IsEmpty())
return;
@ -86,7 +87,7 @@ void ActionManager::StopAllActions()
}
}
ActionPtr ActionManager::GetAction(const String& name)
ActionPtr ActionScheduler::GetAction(const String& name)
{
if (actions_.IsEmpty())
return nullptr;
@ -97,7 +98,7 @@ ActionPtr ActionManager::GetAction(const String& name)
return nullptr;
}
const ActionList& ActionManager::GetAllActions() const
const ActionList& ActionScheduler::GetAllActions() const
{
return actions_;
}

View File

@ -30,9 +30,9 @@ namespace kiwano
/**
* \~chinese
* @brief
* @brief
*/
class KGE_API ActionManager
class KGE_API ActionScheduler
{
public:
/// \~chinese
@ -60,10 +60,9 @@ public:
/// @brief 获取所有动画
const ActionList& GetAllActions() const;
protected:
/// \~chinese
/// @brief 更新动画
void UpdateActions(Actor* target, Duration dt);
void Update(Actor* target, Duration dt);
private:
ActionList actions_;

View File

@ -20,7 +20,7 @@
#include <kiwano/core/ObjectBase.h>
#include <kiwano/core/Logger.h>
#include <kiwano/core/Json.h>
#include <kiwano/utils/Json.h>
#include <typeinfo>
namespace kiwano

View File

@ -52,11 +52,6 @@
#include <kiwano/core/Resource.h>
#include <kiwano/core/SmartPtr.hpp>
#include <kiwano/core/Time.h>
#include <kiwano/core/Timer.h>
#include <kiwano/core/Ticker.h>
#include <kiwano/core/EventTicker.h>
#include <kiwano/core/Task.h>
#include <kiwano/core/TaskManager.h>
#include <kiwano/core/event/Event.h>
#include <kiwano/core/event/KeyEvent.h>
#include <kiwano/core/event/MouseEvent.h>
@ -98,7 +93,7 @@
#include <kiwano/2d/action/ActionDelay.h>
#include <kiwano/2d/action/ActionGroup.h>
#include <kiwano/2d/action/ActionHelper.h>
#include <kiwano/2d/action/ActionManager.h>
#include <kiwano/2d/action/ActionScheduler.h>
#include <kiwano/2d/action/ActionTween.h>
#include <kiwano/2d/action/ActionWalk.h>
#include <kiwano/2d/action/Animation.h>
@ -120,3 +115,8 @@
#include <kiwano/utils/LocalStorage.h>
#include <kiwano/utils/ResourceCache.h>
#include <kiwano/utils/UserData.h>
#include <kiwano/utils/Timer.h>
#include <kiwano/utils/Ticker.h>
#include <kiwano/utils/EventTicker.h>
#include <kiwano/utils/Task.h>
#include <kiwano/utils/TaskScheduler.h>

View File

@ -52,6 +52,8 @@ void Application::Run(RunnerPtr runner, bool debug)
{
KGE_ASSERT(runner);
runner_ = runner;
timer_ = Timer::Create();
running_ = true;
// Setup all modules
for (auto c : modules_)
@ -68,8 +70,6 @@ void Application::Run(RunnerPtr runner, bool debug)
// Everything is ready
runner->OnReady();
running_ = true;
timer_ = Timer::Create();
while (running_)
{
timer_->Tick();

View File

@ -23,11 +23,11 @@
#include <kiwano/core/Common.h>
#include <kiwano/core/Module.h>
#include <kiwano/core/Time.h>
#include <kiwano/core/Timer.h>
#include <kiwano/core/Singleton.h>
#include <kiwano/core/event/Event.h>
#include <kiwano/platform/Runner.h>
#include <kiwano/platform/Window.h>
#include <kiwano/utils/Timer.h>
namespace kiwano
{

View File

@ -29,8 +29,10 @@ Window::Window()
, is_fullscreen_(false)
, width_(0)
, height_(0)
, min_width_(100)
, min_height_(50)
, min_width_(0)
, min_height_(0)
, max_width_(0)
, max_height_(0)
{
}

View File

@ -147,6 +147,14 @@ public:
*/
virtual void SetMinimumSize(uint32_t width, uint32_t height) = 0;
/**
* \~chinese
* @brief
* @param width
* @param height
*/
virtual void SetMaximumSize(uint32_t width, uint32_t height) = 0;
/**
* \~chinese
* @brief
@ -213,6 +221,8 @@ protected:
uint32_t height_;
uint32_t min_width_;
uint32_t min_height_;
uint32_t max_width_;
uint32_t max_height_;
WindowHandle handle_;
String title_;
std::queue<EventPtr> event_queue_;

View File

@ -59,6 +59,8 @@ public:
void SetMinimumSize(uint32_t width, uint32_t height) override;
void SetMaximumSize(uint32_t width, uint32_t height) override;
void SetCursor(CursorType cursor) override;
void SetResolution(uint32_t width, uint32_t height, bool fullscreen) override;
@ -263,8 +265,11 @@ void WindowWin32Impl::Init(const String& title, uint32_t width, uint32_t height,
height = win_height;
}
handle_ = ::CreateWindowExA(fullscreen ? WS_EX_TOPMOST : 0, "KiwanoAppWnd", title.c_str(), GetStyle(),
left, top, width, height, nullptr, nullptr, hinst, nullptr);
width_ = width;
height_ = height;
resizable_ = resizable;
handle_ = ::CreateWindowExA(fullscreen ? WS_EX_TOPMOST : 0, "KiwanoAppWnd", title.c_str(), GetStyle(), left, top,
width, height, nullptr, nullptr, hinst, nullptr);
if (handle_ == nullptr)
{
@ -272,10 +277,6 @@ void WindowWin32Impl::Init(const String& title, uint32_t width, uint32_t height,
KGE_THROW_SYSTEM_ERROR(HRESULT_FROM_WIN32(GetLastError()), "Create window failed");
}
width_ = width;
height_ = height;
resizable_ = resizable;
// disable imm
::ImmAssociateContext(handle_, nullptr);
@ -339,6 +340,12 @@ void WindowWin32Impl::SetMinimumSize(uint32_t width, uint32_t height)
min_height_ = height;
}
void WindowWin32Impl::SetMaximumSize(uint32_t width, uint32_t height)
{
max_width_ = width;
max_height_ = height;
}
void WindowWin32Impl::SetCursor(CursorType cursor)
{
mouse_cursor_ = cursor;
@ -576,13 +583,15 @@ LRESULT WindowWin32Impl::MessageProc(HWND hwnd, UINT32 msg, WPARAM wparam, LPARA
}
else if (SIZE_MAXIMIZED == wparam)
{
KGE_SYS_LOG("Window maximized");
if (is_minimized_)
{
is_minimized_ = false;
if (Application::GetInstance().IsRunning())
{
TimerPtr timer = Application::GetInstance().GetTimer();
timer->Pause();
timer->Resume();
}
}
}
@ -597,7 +606,7 @@ LRESULT WindowWin32Impl::MessageProc(HWND hwnd, UINT32 msg, WPARAM wparam, LPARA
if (Application::GetInstance().IsRunning())
{
TimerPtr timer = Application::GetInstance().GetTimer();
timer->Pause();
timer->Resume();
}
}
else if (is_resizing_)
@ -606,8 +615,6 @@ LRESULT WindowWin32Impl::MessageProc(HWND hwnd, UINT32 msg, WPARAM wparam, LPARA
}
else
{
KGE_SYS_LOG("Window resized");
this->width_ = ((uint32_t)(short)LOWORD(lparam));
this->height_ = ((uint32_t)(short)HIWORD(lparam));
@ -615,6 +622,8 @@ LRESULT WindowWin32Impl::MessageProc(HWND hwnd, UINT32 msg, WPARAM wparam, LPARA
evt->width = this->GetWidth();
evt->height = this->GetHeight();
this->PushEvent(evt);
KGE_SYS_LOG("Window resized to (%d, %d)", this->width_, this->height_);
}
}
}
@ -630,7 +639,6 @@ LRESULT WindowWin32Impl::MessageProc(HWND hwnd, UINT32 msg, WPARAM wparam, LPARA
}
return 0;
}
break;
case WM_EXITSIZEMOVE:
{
@ -640,17 +648,40 @@ LRESULT WindowWin32Impl::MessageProc(HWND hwnd, UINT32 msg, WPARAM wparam, LPARA
TimerPtr timer = Application::GetInstance().GetTimer();
timer->Resume();
}
// Send window resized event when client size changed
RECT client_rect = { 0 };
::GetClientRect(hwnd, &client_rect);
uint32_t client_width = uint32_t(client_rect.right - client_rect.left);
uint32_t client_height = uint32_t(client_rect.bottom - client_rect.top);
if (client_width != this->GetWidth() || client_height != this->GetHeight())
{
KGE_SYS_LOG("Window resized to (%d, %d)", client_width, client_height);
this->width_ = client_width;
this->height_ = client_height;
WindowResizedEventPtr evt = new WindowResizedEvent;
evt->width = this->GetWidth();
evt->height = this->GetHeight();
this->PushEvent(evt);
}
return 0;
}
break;
case WM_GETMINMAXINFO:
{
// prevent the window from becoming too small
((MINMAXINFO*)lparam)->ptMinTrackSize.x = LONG(min_width_);
((MINMAXINFO*)lparam)->ptMinTrackSize.y = LONG(min_height_);
if (min_width_ || min_height_)
{
((MINMAXINFO*)lparam)->ptMinTrackSize = POINT{ LONG(min_width_), LONG(min_height_) };
}
if (max_width_ || max_height_)
{
((MINMAXINFO*)lparam)->ptMaxTrackSize = POINT{ LONG(max_width_), LONG(max_height_) };
}
return 0;
}
return 0;
case WM_MOVE:
{

View File

@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#include <kiwano/core/EventTicker.h>
#include <kiwano/utils/EventTicker.h>
namespace kiwano
{

View File

@ -19,7 +19,7 @@
// THE SOFTWARE.
#pragma once
#include <kiwano/core/Ticker.h>
#include <kiwano/utils/Ticker.h>
#include <kiwano/core/EventDispatcher.h>
#include <kiwano/core/event/Event.h>
@ -63,6 +63,8 @@ public:
/// @param times 报时次数(设 -1 为永久)
static EventTickerPtr Create(Duration interval, int times = -1);
using Ticker::Tick;
bool Tick(Duration dt) override;
};

View File

@ -19,11 +19,11 @@
// THE SOFTWARE.
#pragma once
#include <kiwano/core/Resource.h>
#include <kiwano/utils/Json.h>
#include <kiwano/utils/Xml.h>
#include <kiwano/render/Frame.h>
#include <kiwano/render/FrameSequence.h>
#include <kiwano/core/Resource.h>
#include <kiwano/core/Json.h>
#include <kiwano/core/Xml.h>
#include <kiwano/render/Font.h>
#include <kiwano/render/GifImage.h>

View File

@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#include <kiwano/core/Task.h>
#include <kiwano/utils/Task.h>
namespace kiwano
{

View File

@ -19,12 +19,12 @@
// THE SOFTWARE.
#pragma once
#include <kiwano/core/Ticker.h>
#include <kiwano/utils/Ticker.h>
#include <kiwano/core/IntrusiveList.h>
namespace kiwano
{
class TaskManager;
class TaskScheduler;
KGE_DECLARE_SMART_PTR(Task);
@ -39,7 +39,7 @@ class KGE_API Task
: public ObjectBase
, protected IntrusiveListValue<TaskPtr>
{
friend class TaskManager;
friend class TaskScheduler;
friend IntrusiveList<TaskPtr>;
public:

View File

@ -19,11 +19,11 @@
// THE SOFTWARE.
#include <kiwano/core/Logger.h>
#include <kiwano/core/TaskManager.h>
#include <kiwano/utils/TaskScheduler.h>
namespace kiwano
{
void TaskManager::UpdateTasks(Duration dt)
void TaskScheduler::Update(Duration dt)
{
if (tasks_.IsEmpty())
return;
@ -40,7 +40,7 @@ void TaskManager::UpdateTasks(Duration dt)
}
}
Task* TaskManager::AddTask(TaskPtr task)
Task* TaskScheduler::AddTask(TaskPtr task)
{
KGE_ASSERT(task && "AddTask failed, NULL pointer exception");
@ -53,7 +53,7 @@ Task* TaskManager::AddTask(TaskPtr task)
return task.Get();
}
void TaskManager::StopTasks(const String& name)
void TaskScheduler::StopTasks(const String& name)
{
if (tasks_.IsEmpty())
return;
@ -67,7 +67,7 @@ void TaskManager::StopTasks(const String& name)
}
}
void TaskManager::StartTasks(const String& name)
void TaskScheduler::StartTasks(const String& name)
{
if (tasks_.IsEmpty())
return;
@ -81,7 +81,7 @@ void TaskManager::StartTasks(const String& name)
}
}
void TaskManager::RemoveTasks(const String& name)
void TaskScheduler::RemoveTasks(const String& name)
{
if (tasks_.IsEmpty())
return;
@ -95,7 +95,7 @@ void TaskManager::RemoveTasks(const String& name)
}
}
void TaskManager::StopAllTasks()
void TaskScheduler::StopAllTasks()
{
if (tasks_.IsEmpty())
return;
@ -106,7 +106,7 @@ void TaskManager::StopAllTasks()
}
}
void TaskManager::StartAllTasks()
void TaskScheduler::StartAllTasks()
{
if (tasks_.IsEmpty())
return;
@ -117,12 +117,12 @@ void TaskManager::StartAllTasks()
}
}
void TaskManager::RemoveAllTasks()
void TaskScheduler::RemoveAllTasks()
{
tasks_.Clear();
}
const TaskList& TaskManager::GetAllTasks() const
const TaskList& TaskScheduler::GetAllTasks() const
{
return tasks_;
}

View File

@ -19,15 +19,15 @@
// THE SOFTWARE.
#pragma once
#include <kiwano/core/Task.h>
#include <kiwano/utils/Task.h>
namespace kiwano
{
/**
* \~chinese
* @brief
* @brief
*/
class KGE_API TaskManager
class KGE_API TaskScheduler
{
public:
/// \~chinese
@ -62,12 +62,12 @@ public:
/// @brief 获取所有任务
const TaskList& GetAllTasks() const;
protected:
/// \~chinese
/// @brief 更新任务
void UpdateTasks(Duration dt);
/// @brief 更新调度器
void Update(Duration dt);
private:
TaskList tasks_;
};
} // namespace kiwano

View File

@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#include <kiwano/core/Ticker.h>
#include <kiwano/utils/Ticker.h>
namespace kiwano
{

View File

@ -19,7 +19,7 @@
// THE SOFTWARE.
#pragma once
#include <kiwano/core/Timer.h>
#include <kiwano/utils/Timer.h>
namespace kiwano
{

View File

@ -18,7 +18,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
#include <kiwano/core/Timer.h>
#include <kiwano/utils/Timer.h>
#include <kiwano/core/Allocator.h>
namespace kiwano