changeset 28:80736513d699

Client: prepare client targets, #473
author David Demelier <markand@malikania.fr>
date Tue, 19 Apr 2016 21:13:23 +0200
parents 0a1adf7dcca0
children 99792c6c8b06
files client/main.cpp libclient/CMakeLists.txt libclient/malikania/client-target-loading.cpp libclient/malikania/client-target-loading.h libclient/malikania/client-target-map.cpp libclient/malikania/client-target-map.h libclient/malikania/client-target.h libclient/malikania/client.cpp libclient/malikania/client.h libclient/malikania/js-client-target.h
diffstat 10 files changed, 274 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- 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;
 }
--- 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
--- /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
--- /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
--- /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
--- /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
--- /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
--- 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<Loading>())
-	, m_target(m_loading)
+	: m_loadingTarget(std::make_shared<LoadingTarget>())
+	, m_mapTarget(std::make_shared<MapTarget>())
+	, m_target(m_loadingTarget)
 {
+	m_target->load(*this);
 }
 
 void Client::setTarget(std::shared_ptr<Target> 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
--- 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<Loading> m_loading;
+	std::shared_ptr<LoadingTarget> m_loadingTarget;
+	std::shared_ptr<MapTarget> m_mapTarget;
+
 	std::shared_ptr<Target> m_target;
 	std::shared_ptr<Target> m_targetNext;
 
 public:
 	Client();
 
+	inline const std::shared_ptr<LoadingTarget> &loadingTarget() noexcept
+	{
+		return m_loadingTarget;
+	}
+
+	inline void setLoadingTarget(std::shared_ptr<LoadingTarget> loadingTarget) noexcept
+	{
+		m_loadingTarget = std::move(loadingTarget);
+	}
+
+	inline const std::shared_ptr<MapTarget> &mapTarget() noexcept
+	{
+		return m_mapTarget;
+	}
+
+	inline void setMapTarget(std::shared_ptr<MapTarget> mapTarget) noexcept
+	{
+		m_mapTarget = std::move(mapTarget);
+	}
+
 	void setTarget(std::shared_ptr<Target> 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
--- 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 {