From 7bdb085319a41fc51658a086696ab81c6b18ae52 Mon Sep 17 00:00:00 2001
From: Daniel Karbach <daniel.karbach@localhorst.tv>
Date: Mon, 10 Sep 2012 22:59:01 +0200
Subject: [PATCH] added missing spell flags

---
 src/common/Spell.cpp |  6 ++++--
 src/common/Spell.h   | 22 ++++++----------------
 2 files changed, 10 insertions(+), 18 deletions(-)

diff --git a/src/common/Spell.cpp b/src/common/Spell.cpp
index 8f8784a..4fce398 100644
--- a/src/common/Spell.cpp
+++ b/src/common/Spell.cpp
@@ -15,7 +15,7 @@ using loader::TypeDescription;
 namespace common {
 
 Spell::Spell()
-: name(""), value(0), cost(0), usability(0) {
+: name(""), value(0), cost(0), status(false), battle(false) {
 
 }
 
@@ -23,7 +23,7 @@ Spell::Spell()
 void Spell::CreateTypeDescription() {
 	Spell s;
 
-	// TODO: flags
+	int boolId(TypeDescription::GetTypeId("Boolean"));
 	int numberId(TypeDescription::GetTypeId("Number"));
 	int stringId(TypeDescription::GetTypeId("String"));
 	int targetsId(TypeDescription::GetTypeId("TargetingMode"));
@@ -35,6 +35,8 @@ void Spell::CreateTypeDescription() {
 	td.AddField("name", FieldDescription(((char *)&s.name) - ((char *)&s), stringId, true));
 	td.AddField("cost", FieldDescription(((char *)&s.cost) - ((char *)&s), numberId, false));
 	td.AddField("targets", FieldDescription(((char *)&s.targetingMode) - ((char *)&s), targetsId, false));
+	td.AddField("status", FieldDescription(((char *)&s.status) - ((char *)&s), boolId, false));
+	td.AddField("battle", FieldDescription(((char *)&s.battle) - ((char *)&s), boolId, false));
 }
 
 void Spell::Construct(void *data) {
diff --git a/src/common/Spell.h b/src/common/Spell.h
index eb8fa02..d960126 100644
--- a/src/common/Spell.h
+++ b/src/common/Spell.h
@@ -23,8 +23,8 @@ public:
 	Uint16 Value() const { return value; }
 	Uint8 Cost() const { return cost; }
 
-	bool CanUseOnStatusScreen() const { return usability & USABILITY_STATUS; }
-	bool CanUseInBattle() const { return usability & USABILITY_BATTLE; }
+	bool CanUseOnStatusScreen() const { return status; }
+	bool CanUseInBattle() const { return battle; }
 
 	TargetingMode &GetTargetingMode() { return targetingMode; }
 	const TargetingMode &GetTargetingMode() const { return targetingMode; }
@@ -36,33 +36,23 @@ public:
 public:
 	void SetName(const char *n) { name = n; }
 	void SetCost(Uint8 c) { cost = c; }
-	void SetUsableInBattle() { usability |= USABILITY_BATTLE; }
+	void SetUsableInBattle() { battle = true; }
 
 	static void CreateTypeDescription();
 	static void Construct(void *);
 
-private:
-	enum Usability {
-		// USABILITY_UNUSED = 1,
-		// USABILITY_UNUSED = 2,
-		// USABILITY_UNUSED = 4,
-		// USABILITY_UNUSED = 8,
-		// USABILITY_UNUSED = 16,
-		// USABILITY_UNUSED = 32,
-		USABILITY_STATUS = 64,
-		USABILITY_BATTLE = 128,
-	};
-
 private:
 	const char *name;
 
 	int value;
 
 	int cost;
-	Uint8 usability;
 	TargetingMode targetingMode;
 	HeroGroup usableBy;
 
+	bool status;
+	bool battle;
+
 };
 
 }
-- 
2.39.5