Maelstrom: Added first pass at touch control for iOS

https://github.com/libsdl-org/Maelstrom/commit/38fd79c4422da4c4e66f0bd4000ae7391159d459

From 38fd79c4422da4c4e66f0bd4000ae7391159d459 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 7 Nov 2011 00:17:06 -0500
Subject: [PATCH] Added first pass at touch control for iOS

---
 MaelstromUI.cpp    |  58 +++++++++++++++++++++++++++++++++++++++++++++
 MaelstromUI.h      |  15 ++++++++++++
 Maelstrom_Data.zip | Bin 726690 -> 753858 bytes
 controls.cpp       |   4 ++++
 netlogic/game.cpp  |   6 +++++
 5 files changed, 83 insertions(+)

diff --git a/MaelstromUI.cpp b/MaelstromUI.cpp
index 45121e4b..87e6a51a 100644
--- a/MaelstromUI.cpp
+++ b/MaelstromUI.cpp
@@ -206,6 +206,8 @@ MaelstromUI::CreateElement(UIBaseElement *parent, const char *type, const char *
 		element = new UIElement(parent, name, new UIDrawEngineSprite());
 	} else if (strcasecmp(type, "Title") == 0) {
 		element = new UIElement(parent, name, new UIDrawEngineTitle());
+	} else if (strcasecmp(type, "ControlButton") == 0) {
+		element = new UIElementControlButton(parent, name, new UIDrawEngine());
 	} else if (strcasecmp(type, "DialogLabel") == 0) {
 		element = new UIElement(parent, name, new MacDialogDrawEngine());
 	} else if (strcasecmp(type, "DialogButton") == 0) {
@@ -224,6 +226,62 @@ MaelstromUI::CreateElement(UIBaseElement *parent, const char *type, const char *
 	return element;
 }
 
+//////////////////////////////////////////////////////////////////////////////
+UIElementControlButton::UIElementControlButton(UIBaseElement *parent, const char *name, UIDrawEngine *drawEngine) :
+	UIElement(parent, name, drawEngine)
+{
+	m_mouseEnabled = true;
+}
+
+bool
+UIElementControlButton::Load(rapidxml::xml_node<> *node, const UITemplates *templates)
+{
+	rapidxml::xml_attribute<> *attr;
+
+	if (!UIElement::Load(node, templates)) {
+		return false;
+	}
+
+	attr = node->first_attribute("action", 0, false);
+	if (!attr) {
+		error("Element '%s' missing attribute 'action'", node->name());
+		return false;
+	}
+
+	if (SDL_strcasecmp(attr->value(), "THRUST") == 0) {
+		m_control = THRUST_KEY;
+	} else if (SDL_strcasecmp(attr->value(), "RIGHT") == 0) {
+		m_control = RIGHT_KEY;
+	} else if (SDL_strcasecmp(attr->value(), "LEFT") == 0) {
+		m_control = LEFT_KEY;
+	} else if (SDL_strcasecmp(attr->value(), "SHIELD") == 0) {
+		m_control = SHIELD_KEY;
+	} else if (SDL_strcasecmp(attr->value(), "FIRE") == 0) {
+		m_control = FIRE_KEY;
+	} else if (SDL_strcasecmp(attr->value(), "PAUSE") == 0) {
+		m_control = PAUSE_KEY;
+	} else if (SDL_strcasecmp(attr->value(), "ABORT") == 0) {
+		m_control = ABORT_KEY;
+	} else {
+		error("Element '%s' has unknown action '%s'", node->name(), attr->value());
+		return false;
+	}
+
+	return true;
+}
+
+void
+UIElementControlButton::OnMouseDown()
+{
+	SetControl(m_control, 1);
+}
+
+void
+UIElementControlButton::OnMouseUp()
+{
+	SetControl(m_control, 0);
+}
+
 //////////////////////////////////////////////////////////////////////////////
 bool
 UIDrawEngineIcon::Load(rapidxml::xml_node<> *node, const UITemplates *templates)
diff --git a/MaelstromUI.h b/MaelstromUI.h
index 10277c4a..9047819f 100644
--- a/MaelstromUI.h
+++ b/MaelstromUI.h
@@ -59,6 +59,21 @@ class MaelstromUI : public UIManager
 	MFont *GetFont(const char *fontName, int fontSize);
 };
 
+//////////////////////////////////////////////////////////////////////////////
+class UIElementControlButton : public UIElement
+{
+public:
+	UIElementControlButton(UIBaseElement *parent, const char *name, UIDrawEngine *drawEngine);
+
+	override bool Load(rapidxml::xml_node<> *node, const UITemplates *templates);
+
+	override void OnMouseDown();
+	override void OnMouseUp();
+
+protected:
+	unsigned char m_control;
+};
+
 //////////////////////////////////////////////////////////////////////////////
 class UIDrawEngineIcon : public UIDrawEngine
 {
diff --git a/Maelstrom_Data.zip b/Maelstrom_Data.zip
index 55c87ecb9a5b3e7ddd3780af10829fc36777da68..0a29d7d62cf3ed6a221f85cd1985a0234f80a0e2 100644
GIT binary patch
delta 28111
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

(Patch may be truncated, please check the link at the top of this post.)