summaryrefslogtreecommitdiffstats
path: root/sigmod/Sigmod.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigmod/Sigmod.cpp')
-rw-r--r--sigmod/Sigmod.cpp49
1 files changed, 8 insertions, 41 deletions
diff --git a/sigmod/Sigmod.cpp b/sigmod/Sigmod.cpp
index c6eabb49..7e255e08 100644
--- a/sigmod/Sigmod.cpp
+++ b/sigmod/Sigmod.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 2007-2008 Ben Boeckel <MathStuf@gmail.com>
+ * Copyright 2007-2009 Ben Boeckel <MathStuf@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -53,8 +53,7 @@ Sigmod::Sigmod::Sigmod() :
m_version(""),
m_description(""),
m_singlePlayer(true),
- m_startMap(INT_MAX),
- m_startWarp(INT_MAX),
+ m_startScript("", ""),
m_typechart(0, 0),
m_rules(new Rules(this))
{
@@ -89,14 +88,6 @@ void Sigmod::Sigmod::validate()
emit(error("Version is empty"));
if (m_description.isEmpty())
emit(warning("Description is empty"));
- if (m_singlePlayer)
- {
- const Map* map = mapById(m_startMap);
- if (!map)
- emit(error("Invalid starting map"));
- else if (!map->warpById(m_startWarp))
- emit(error("Invalid starting warp"));
- }
if ((m_typechart.width() != typeCount()) || (m_typechart.height() != typeCount()))
emit(error("Type chart is invalid"));
TEST_CHILD(m_rules);
@@ -283,8 +274,7 @@ void Sigmod::Sigmod::load(const QDomElement& xml)
LOAD(version);
LOAD(description);
LOAD(singlePlayer);
- LOAD(startMap);
- LOAD(startWarp);
+ LOAD(startScript);
m_rules->load(xml.firstChildElement("Rules"));
LOAD_SUB(newAbility, Ability);
LOAD_SUB(newAuthor, Author);
@@ -319,8 +309,7 @@ QDomElement Sigmod::Sigmod::save() const
SAVE(version);
SAVE(description);
SAVE(singlePlayer);
- SAVE(startMap);
- SAVE(startWarp);
+ SAVE(startScript);
SAVE_Rules(rules);
SAVE_MATRIX(typechart);
SAVE_SUB(Ability, abilities);
@@ -352,8 +341,7 @@ SETTER(Sigmod, QString&, Title, title)
SETTER(Sigmod, QString&, Version, version)
SETTER(Sigmod, QString&, Description, description)
SETTER(Sigmod, bool, SinglePlayer, singlePlayer)
-SETTER(Sigmod, int, StartMap, startMap)
-SETTER(Sigmod, int, StartWarp, startWarp)
+SETTER(Sigmod, Sigcore::Script&, StartScript, startScript)
SETTER_MATRIX(Sigmod, Sigcore::Fraction&, Typechart, typechart, multiplier)
void Sigmod::Sigmod::setRules(const Rules& rules)
@@ -370,8 +358,7 @@ GETTER(Sigmod, QString, title)
GETTER(Sigmod, QString, version)
GETTER(Sigmod, QString, description)
GETTER(Sigmod, bool, singlePlayer)
-GETTER(Sigmod, int, startMap)
-GETTER(Sigmod, int, startWarp)
+GETTER(Sigmod, Sigcore::Script, startScript)
const Sigcore::Matrix<Sigcore::Fraction>* Sigmod::Sigmod::typechart() const
{
@@ -402,26 +389,7 @@ CHECK(Sigmod, QString&, title)
CHECK(Sigmod, QString&, version)
CHECK(Sigmod, QString&, description)
CHECK(Sigmod, bool, singlePlayer)
-CHECK_BEGIN(Sigmod, int, startMap)
- if (!m_singlePlayer)
- {
- emit(error(unused("startMap")));
- return false;
- }
- if (!mapById(startMap))
- EBOUNDS_IDX(startMap);
-CHECK_END()
-CHECK_BEGIN(Sigmod, int, startWarp)
- if (!m_singlePlayer)
- {
- emit(error(unused("startWarp")));
- return false;
- }
- const Map* map = mapById(m_startMap);
- if (!map)
- EBOUNDS_IDX(m_startMap);
- IBOUNDS(startWarp, map, warp);
-CHECK_END()
+CHECK(Sigmod, Sigcore::Script&, startScript)
CHECK_BOUNDS(Sigmod, Sigcore::Fraction&, typechart, 0, INT_MAX)
SSUBCLASS(Sigmod, Ability, ability, abilities)
@@ -540,8 +508,7 @@ Sigmod::Sigmod& Sigmod::Sigmod::operator=(const Sigmod& rhs)
COPY(version);
COPY(description);
COPY(singlePlayer);
- COPY(startMap);
- COPY(startWarp);
+ COPY(startScript);
COPY(typechart);
COPY_Rules(rules);
COPY_SUB(Ability, abilities);