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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -52,11 +52,6 @@
#include <kiwano/core/Resource.h> #include <kiwano/core/Resource.h>
#include <kiwano/core/SmartPtr.hpp> #include <kiwano/core/SmartPtr.hpp>
#include <kiwano/core/Time.h> #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/Event.h>
#include <kiwano/core/event/KeyEvent.h> #include <kiwano/core/event/KeyEvent.h>
#include <kiwano/core/event/MouseEvent.h> #include <kiwano/core/event/MouseEvent.h>
@ -98,7 +93,7 @@
#include <kiwano/2d/action/ActionDelay.h> #include <kiwano/2d/action/ActionDelay.h>
#include <kiwano/2d/action/ActionGroup.h> #include <kiwano/2d/action/ActionGroup.h>
#include <kiwano/2d/action/ActionHelper.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/ActionTween.h>
#include <kiwano/2d/action/ActionWalk.h> #include <kiwano/2d/action/ActionWalk.h>
#include <kiwano/2d/action/Animation.h> #include <kiwano/2d/action/Animation.h>
@ -120,3 +115,8 @@
#include <kiwano/utils/LocalStorage.h> #include <kiwano/utils/LocalStorage.h>
#include <kiwano/utils/ResourceCache.h> #include <kiwano/utils/ResourceCache.h>
#include <kiwano/utils/UserData.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); KGE_ASSERT(runner);
runner_ = runner; runner_ = runner;
timer_ = Timer::Create();
running_ = true;
// Setup all modules // Setup all modules
for (auto c : modules_) for (auto c : modules_)
@ -68,8 +70,6 @@ void Application::Run(RunnerPtr runner, bool debug)
// Everything is ready // Everything is ready
runner->OnReady(); runner->OnReady();
running_ = true;
timer_ = Timer::Create();
while (running_) while (running_)
{ {
timer_->Tick(); timer_->Tick();

View File

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

View File

@ -29,8 +29,10 @@ Window::Window()
, is_fullscreen_(false) , is_fullscreen_(false)
, width_(0) , width_(0)
, height_(0) , height_(0)
, min_width_(100) , min_width_(0)
, min_height_(50) , 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; 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 * \~chinese
* @brief * @brief
@ -213,6 +221,8 @@ protected:
uint32_t height_; uint32_t height_;
uint32_t min_width_; uint32_t min_width_;
uint32_t min_height_; uint32_t min_height_;
uint32_t max_width_;
uint32_t max_height_;
WindowHandle handle_; WindowHandle handle_;
String title_; String title_;
std::queue<EventPtr> event_queue_; std::queue<EventPtr> event_queue_;

View File

@ -59,6 +59,8 @@ public:
void SetMinimumSize(uint32_t width, uint32_t height) override; void SetMinimumSize(uint32_t width, uint32_t height) override;
void SetMaximumSize(uint32_t width, uint32_t height) override;
void SetCursor(CursorType cursor) override; void SetCursor(CursorType cursor) override;
void SetResolution(uint32_t width, uint32_t height, bool fullscreen) 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; height = win_height;
} }
handle_ = ::CreateWindowExA(fullscreen ? WS_EX_TOPMOST : 0, "KiwanoAppWnd", title.c_str(), GetStyle(), width_ = width;
left, top, width, height, nullptr, nullptr, hinst, nullptr); 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) 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"); KGE_THROW_SYSTEM_ERROR(HRESULT_FROM_WIN32(GetLastError()), "Create window failed");
} }
width_ = width;
height_ = height;
resizable_ = resizable;
// disable imm // disable imm
::ImmAssociateContext(handle_, nullptr); ::ImmAssociateContext(handle_, nullptr);
@ -339,6 +340,12 @@ void WindowWin32Impl::SetMinimumSize(uint32_t width, uint32_t height)
min_height_ = height; min_height_ = height;
} }
void WindowWin32Impl::SetMaximumSize(uint32_t width, uint32_t height)
{
max_width_ = width;
max_height_ = height;
}
void WindowWin32Impl::SetCursor(CursorType cursor) void WindowWin32Impl::SetCursor(CursorType cursor)
{ {
mouse_cursor_ = cursor; mouse_cursor_ = cursor;
@ -576,13 +583,15 @@ LRESULT WindowWin32Impl::MessageProc(HWND hwnd, UINT32 msg, WPARAM wparam, LPARA
} }
else if (SIZE_MAXIMIZED == wparam) else if (SIZE_MAXIMIZED == wparam)
{ {
KGE_SYS_LOG("Window maximized");
if (is_minimized_) if (is_minimized_)
{ {
is_minimized_ = false; is_minimized_ = false;
if (Application::GetInstance().IsRunning()) if (Application::GetInstance().IsRunning())
{ {
TimerPtr timer = Application::GetInstance().GetTimer(); 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()) if (Application::GetInstance().IsRunning())
{ {
TimerPtr timer = Application::GetInstance().GetTimer(); TimerPtr timer = Application::GetInstance().GetTimer();
timer->Pause(); timer->Resume();
} }
} }
else if (is_resizing_) else if (is_resizing_)
@ -606,8 +615,6 @@ LRESULT WindowWin32Impl::MessageProc(HWND hwnd, UINT32 msg, WPARAM wparam, LPARA
} }
else else
{ {
KGE_SYS_LOG("Window resized");
this->width_ = ((uint32_t)(short)LOWORD(lparam)); this->width_ = ((uint32_t)(short)LOWORD(lparam));
this->height_ = ((uint32_t)(short)HIWORD(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->width = this->GetWidth();
evt->height = this->GetHeight(); evt->height = this->GetHeight();
this->PushEvent(evt); 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; return 0;
} }
break;
case WM_EXITSIZEMOVE: case WM_EXITSIZEMOVE:
{ {
@ -640,17 +648,40 @@ LRESULT WindowWin32Impl::MessageProc(HWND hwnd, UINT32 msg, WPARAM wparam, LPARA
TimerPtr timer = Application::GetInstance().GetTimer(); TimerPtr timer = Application::GetInstance().GetTimer();
timer->Resume(); 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; return 0;
} }
break;
case WM_GETMINMAXINFO: case WM_GETMINMAXINFO:
{ {
// prevent the window from becoming too small if (min_width_ || min_height_)
((MINMAXINFO*)lparam)->ptMinTrackSize.x = LONG(min_width_); {
((MINMAXINFO*)lparam)->ptMinTrackSize.y = LONG(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: case WM_MOVE:
{ {

View File

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

View File

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

View File

@ -19,11 +19,11 @@
// THE SOFTWARE. // THE SOFTWARE.
#pragma once #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/Frame.h>
#include <kiwano/render/FrameSequence.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/Font.h>
#include <kiwano/render/GifImage.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 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE. // THE SOFTWARE.
#include <kiwano/core/Task.h> #include <kiwano/utils/Task.h>
namespace kiwano namespace kiwano
{ {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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