# HG changeset patch # User David Demelier # Date 1461093203 -7200 # Node ID 80736513d6998cb771f998afc36cea8a7535b915 # Parent 0a1adf7dcca0f093f474718091b87dc642d6b584 Client: prepare client targets, #473 diff -r 0a1adf7dcca0 -r 80736513d699 client/main.cpp --- a/client/main.cpp Tue Apr 12 13:53:11 2016 +0200 +++ b/client/main.cpp Tue Apr 19 21:13:23 2016 +0200 @@ -185,6 +185,7 @@ int main(int argc, char **argv) { +#if 0 -- argc; ++ argv; @@ -193,4 +194,17 @@ } return boot(argv[0]); +#endif + Client client; + ElapsedTimer timer; + + while (timer.elapsed() < 5000) { + client.poll(); + client.update(); + client.draw(); + + std::this_thread::sleep_for(std::chrono::milliseconds(50)); + } + + return 0; } diff -r 0a1adf7dcca0 -r 80736513d699 libclient/CMakeLists.txt --- a/libclient/CMakeLists.txt Tue Apr 12 13:53:11 2016 +0200 +++ b/libclient/CMakeLists.txt Tue Apr 19 21:13:23 2016 +0200 @@ -22,6 +22,9 @@ ${CMAKE_CURRENT_SOURCE_DIR}/malikania/animator.h ${CMAKE_CURRENT_SOURCE_DIR}/malikania/client.h ${CMAKE_CURRENT_SOURCE_DIR}/malikania/client-resources-loader.h + ${CMAKE_CURRENT_SOURCE_DIR}/malikania/client-target.h + ${CMAKE_CURRENT_SOURCE_DIR}/malikania/client-target-loading.h + ${CMAKE_CURRENT_SOURCE_DIR}/malikania/client-target-map.h ${CMAKE_CURRENT_SOURCE_DIR}/malikania/color.h ${CMAKE_CURRENT_SOURCE_DIR}/malikania/font.h ${CMAKE_CURRENT_SOURCE_DIR}/malikania/image.h @@ -54,6 +57,8 @@ ${CMAKE_CURRENT_SOURCE_DIR}/malikania/animator.cpp ${CMAKE_CURRENT_SOURCE_DIR}/malikania/client.cpp ${CMAKE_CURRENT_SOURCE_DIR}/malikania/client-resources-loader.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/malikania/client-target-loading.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/malikania/client-target-map.cpp ${CMAKE_CURRENT_SOURCE_DIR}/malikania/color.cpp ${CMAKE_CURRENT_SOURCE_DIR}/malikania/font.cpp ${CMAKE_CURRENT_SOURCE_DIR}/malikania/image.cpp diff -r 0a1adf7dcca0 -r 80736513d699 libclient/malikania/client-target-loading.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libclient/malikania/client-target-loading.cpp Tue Apr 19 21:13:23 2016 +0200 @@ -0,0 +1,31 @@ +/* + * client-target-loading.cpp -- client loading target + * + * Copyright (c) 2013-2016 Malikania Authors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "client-target-loading.h" + +namespace malikania { + +void Client::LoadingTarget::update(Client &) +{ +} + +void Client::LoadingTarget::draw(Client &) +{ +} + +} // !malikania diff -r 0a1adf7dcca0 -r 80736513d699 libclient/malikania/client-target-loading.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libclient/malikania/client-target-loading.h Tue Apr 19 21:13:23 2016 +0200 @@ -0,0 +1,35 @@ +/* + * client-target-loading.h -- client loading target + * + * Copyright (c) 2013-2016 Malikania Authors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef MALIKANIA_CLIENT_TARGET_LOADING_H +#define MALIKANIA_CLIENT_TARGET_LOADING_H + +#include "client-target.h" + +namespace malikania { + +class Client::LoadingTarget : public Client::Target { +public: + virtual void update(Client &client); + + virtual void draw(Client &client); +}; + +} // !malikania + +#endif // !MALIKANIA_CLIENT_TARGET_LOADING_H diff -r 0a1adf7dcca0 -r 80736513d699 libclient/malikania/client-target-map.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libclient/malikania/client-target-map.cpp Tue Apr 19 21:13:23 2016 +0200 @@ -0,0 +1,31 @@ +/* + * client-target-map.cpp -- client map target + * + * Copyright (c) 2013-2016 Malikania Authors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "client-target-map.h" + +namespace malikania { + +void Client::MapTarget::update(Client &) +{ +} + +void Client::MapTarget::draw(Client &) +{ +} + +} // !malikania diff -r 0a1adf7dcca0 -r 80736513d699 libclient/malikania/client-target-map.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libclient/malikania/client-target-map.h Tue Apr 19 21:13:23 2016 +0200 @@ -0,0 +1,35 @@ +/* + * client-target-map.h -- client map target + * + * Copyright (c) 2013-2016 Malikania Authors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef MALIKANIA_CLIENT_TARGET_MAP_H +#define MALIKANIA_CLIENT_TARGET_MAP_H + +#include "client-target.h" + +namespace malikania { + +class Client::MapTarget : public Client::Target { +public: + virtual void update(Client &client); + + virtual void draw(Client &client); +}; + +} // !malikania + +#endif // !MALIKANIA_CLIENT_TARGET_MAP_H diff -r 0a1adf7dcca0 -r 80736513d699 libclient/malikania/client-target.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libclient/malikania/client-target.h Tue Apr 19 21:13:23 2016 +0200 @@ -0,0 +1,55 @@ +/* + * client-target.h -- client graphical target state + * + * Copyright (c) 2013-2016 Malikania Authors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef MALIKANIA_CLIENT_TARGET_H +#define MALIKANIA_CLIENT_TARGET_H + +#include "client.h" + +namespace malikania { + +class Client::Target : public duk::Bindable { +public: + Target() = default; + + virtual ~Target() = default; + + virtual void load(Client &client) + { + (void)client; + } + + virtual void update(Client &client) + { + (void)client; + } + + virtual void draw(Client &client) + { + (void)client; + } + + virtual void unload(Client &client) + { + (void)client; + } +}; + +} // !malikania + +#endif // !MALIKANIA_CLIENT_TARGET_H diff -r 0a1adf7dcca0 -r 80736513d699 libclient/malikania/client.cpp --- a/libclient/malikania/client.cpp Tue Apr 12 13:53:11 2016 +0200 +++ b/libclient/malikania/client.cpp Tue Apr 19 21:13:23 2016 +0200 @@ -1,12 +1,33 @@ -#include "client.h" +/* + * client.cpp -- main client class + * + * Copyright (c) 2013-2016 Malikania Authors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "client-target-loading.h" +#include "client-target-map.h" #include "window.h" namespace malikania { Client::Client() - : m_loading(std::make_shared()) - , m_target(m_loading) + : m_loadingTarget(std::make_shared()) + , m_mapTarget(std::make_shared()) + , m_target(m_loadingTarget) { + m_target->load(*this); } void Client::setTarget(std::shared_ptr target) @@ -30,28 +51,4 @@ m_target->draw(*this); } -void Client::Target::load(Client &) -{ -} - -void Client::Target::update(Client &) -{ -} - -void Client::Target::draw(Client &) -{ -} - -void Client::Target::unload(Client &) -{ -} - -void Client::Loading::update(Client &) -{ -} - -void Client::Loading::draw(Client &) -{ -} - } // !malikania diff -r 0a1adf7dcca0 -r 80736513d699 libclient/malikania/client.h --- a/libclient/malikania/client.h Tue Apr 12 13:53:11 2016 +0200 +++ b/libclient/malikania/client.h Tue Apr 19 21:13:23 2016 +0200 @@ -1,3 +1,21 @@ +/* + * client.h -- main client class + * + * Copyright (c) 2013-2016 Malikania Authors + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + #ifndef MALIKANIA_CLIENT_H #define MALIKANIA_CLIENT_H @@ -10,16 +28,39 @@ class Client : public Window { public: class Target; - class Loading; + class LoadingTarget; + class MapTarget; private: - std::shared_ptr m_loading; + std::shared_ptr m_loadingTarget; + std::shared_ptr m_mapTarget; + std::shared_ptr m_target; std::shared_ptr m_targetNext; public: Client(); + inline const std::shared_ptr &loadingTarget() noexcept + { + return m_loadingTarget; + } + + inline void setLoadingTarget(std::shared_ptr loadingTarget) noexcept + { + m_loadingTarget = std::move(loadingTarget); + } + + inline const std::shared_ptr &mapTarget() noexcept + { + return m_mapTarget; + } + + inline void setMapTarget(std::shared_ptr mapTarget) noexcept + { + m_mapTarget = std::move(mapTarget); + } + void setTarget(std::shared_ptr target); void update(); @@ -27,28 +68,6 @@ void draw(); }; -class Client::Target : public duk::Bindable { -public: - Target() = default; - - virtual ~Target() = default; - - virtual void load(Client &client); - - virtual void update(Client &client); - - virtual void draw(Client &client); - - virtual void unload(Client &client); -}; - -class Client::Loading : public Client::Target { -public: - virtual void update(Client &client); - - virtual void draw(Client &client); -}; - } // !malikania #endif // !MALIKANIA_CLIENT_H diff -r 0a1adf7dcca0 -r 80736513d699 libclient/malikania/js-client-target.h --- a/libclient/malikania/js-client-target.h Tue Apr 12 13:53:11 2016 +0200 +++ b/libclient/malikania/js-client-target.h Tue Apr 19 21:13:23 2016 +0200 @@ -1,7 +1,7 @@ #ifndef MALIKANIA_JS_CLIENT_TARGET_H #define MALIKANIA_JS_CLIENT_TARGET_H -#include "client.h" +#include "client-target.h" #include "js.h" namespace malikania {