Skip to content

Commit

Permalink
libdoomsday|DED: Store Episode definitions in a DEDRegister
Browse files Browse the repository at this point in the history
  • Loading branch information
danij-deng committed Jul 28, 2014
1 parent bf9ddd9 commit ddad669
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 0 deletions.
1 change: 1 addition & 0 deletions doomsday/client/src/def_main.cpp
Expand Up @@ -1562,6 +1562,7 @@ void Def_Read()
LOG_RES_MSG(_E(b) "Definitions:");
de::String str;
QTextStream os(&str);
os << defCountMsg(defs.episodes.size(), "episodes");
os << defCountMsg(defs.groups.size(), "animation groups");
os << defCountMsg(defs.compositeFonts.size(), "composite fonts");
os << defCountMsg(defs.details.size(), "detail textures");
Expand Down
7 changes: 7 additions & 0 deletions doomsday/libdoomsday/include/doomsday/defs/ded.h
Expand Up @@ -55,6 +55,9 @@ struct LIBDOOMSDAY_PUBLIC ded_s
//DEDArray<ded_flag_t> flags;
DEDRegister flags;

// Episodes.
DEDRegister episodes;

// Map object information.
DEDArray<ded_mobj_t> mobjs;

Expand Down Expand Up @@ -135,6 +138,8 @@ struct LIBDOOMSDAY_PUBLIC ded_s

int addFlag(char const *id, int value);

int addEpisode();

int addMapInfo();

int addModel();
Expand All @@ -161,6 +166,8 @@ struct LIBDOOMSDAY_PUBLIC ded_s

int getStateNum(char const *id) const;

int getEpisodeNum(de::String const &id) const;

int getMapInfoNum(de::Uri const &uri) const;

int getModelNum(char const *id) const;
Expand Down
20 changes: 20 additions & 0 deletions doomsday/libdoomsday/src/defs/ded.cpp
Expand Up @@ -18,6 +18,7 @@
*/

#include "doomsday/defs/ded.h"
#include "doomsday/defs/episode.h"
#include "doomsday/defs/mapinfo.h"
#include "doomsday/defs/model.h"
#include "doomsday/defs/sky.h"
Expand Down Expand Up @@ -50,11 +51,13 @@ float ded_ptcstage_t::particleRadius(int ptcIDX) const

ded_s::ded_s()
: flags (names.addRecord("flags"))
, episodes(names.addRecord("episodes"))
, mapInfos(names.addRecord("mapInfos"))
, models (names.addRecord("models"))
, skies (names.addRecord("skies"))
{
flags.addLookupKey("id");
episodes.addLookupKey("id");
mapInfos.addLookupKey("id");
models.addLookupKey("id", DEDRegister::OnlyFirst);
models.addLookupKey("state");
Expand All @@ -81,6 +84,13 @@ int ded_s::addFlag(char const *id, int value)
return def.geti("__order__");
}

int ded_s::addEpisode()
{
Record &def = episodes.append();
defn::Episode(def).resetToDefaults();
return def.geti("__order__");
}

int ded_s::addMapInfo()
{
Record &def = mapInfos.append();
Expand All @@ -105,6 +115,7 @@ int ded_s::addSky()
void ded_s::release()
{
flags.clear();
episodes.clear();
mobjs.clear();
states.clear();
sprites.clear();
Expand Down Expand Up @@ -538,6 +549,15 @@ int ded_s::evalFlags2(char const *ptr) const
return value;
}

int ded_s::getEpisodeNum(String const &id) const
{
if(Record const *def = episodes.tryFind("id", id))
{
return def->geti("__order__");
}
return -1;
}

int ded_s::getMapInfoNum(de::Uri const &uri) const
{
if(Record const *def = mapInfos.tryFind("id", uri.compose()))
Expand Down
1 change: 1 addition & 0 deletions doomsday/libdoomsday/src/defs/episode.cpp
Expand Up @@ -31,6 +31,7 @@ void Episode::resetToDefaults()
DENG2_ASSERT(_def);

// Add all expected fields with their default values.
_def->addText("id", "");
_def->addText("startMap", "Maps:"); // URI. Unknown.
_def->addText("title", "Untitled");
_def->addText("menuHelpInfo", ""); // None.
Expand Down

0 comments on commit ddad669

Please sign in to comment.