OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
converter.hpp
Go to the documentation of this file.
1 #ifndef OPENMW_ESSIMPORT_CONVERTER_H
2 #define OPENMW_ESSIMPORT_CONVERTER_H
3 
4 #include <limits>
5 
6 #include <osg/Image>
7 #include <osg/ref_ptr>
8 
11 
26 
27 #include "importcrec.hpp"
28 #include "importcntc.hpp"
29 
30 #include "importercontext.hpp"
31 #include "importcellref.hpp"
32 #include "importklst.hpp"
33 #include "importgame.hpp"
34 #include "importinfo.hpp"
35 #include "importdial.hpp"
36 #include "importques.hpp"
37 #include "importjour.hpp"
38 #include "importscpt.hpp"
39 #include "importproj.h"
40 #include "importsplm.h"
41 
42 #include "convertacdt.hpp"
43 #include "convertnpcc.hpp"
44 #include "convertscpt.hpp"
45 #include "convertplayer.hpp"
46 
47 namespace ESSImport
48 {
49 
50 class Converter
51 {
52 public:
54  virtual int getStage() { return 1; }
55 
56  virtual ~Converter() {}
57 
58  void setContext(Context& context) { mContext = &context; }
59 
62  virtual void read(ESM::ESMReader& esm)
63  {
64  }
65 
68  virtual void write(ESM::ESMWriter& esm)
69  {
70 
71  }
72 
73 protected:
75 };
76 
78 template <typename T>
80 {
81 public:
82  virtual int getStage() { return 0; }
83 
84  virtual void read(ESM::ESMReader& esm)
85  {
86  T record;
87  bool isDeleted = false;
88 
89  record.load(esm, isDeleted);
90  mRecords[record.mId] = record;
91  }
92 
93  virtual void write(ESM::ESMWriter& esm)
94  {
95  for (typename std::map<std::string, T>::const_iterator it = mRecords.begin(); it != mRecords.end(); ++it)
96  {
97  esm.startRecord(T::sRecordId);
98  it->second.save(esm);
99  esm.endRecord(T::sRecordId);
100  }
101  }
102 
103 protected:
104  std::map<std::string, T> mRecords;
105 };
106 
107 class ConvertNPC : public Converter
108 {
109 public:
110  virtual void read(ESM::ESMReader &esm)
111  {
112  ESM::NPC npc;
113  bool isDeleted = false;
114 
115  npc.load(esm, isDeleted);
116  if (npc.mId != "player")
117  {
118  // Handles changes to the NPC struct, but since there is no index here
119  // it will apply to ALL instances of the class. seems to be the reason for the
120  // "feature" in MW where changing AI settings of one guard will change it for all guards of that refID.
122  }
123  else
124  {
126  mContext->mPlayerBase = npc;
128  // FIXME: player start spells and birthsign spells aren't listed here,
129  // need to fix openmw to account for this
130  for (std::vector<std::string>::const_iterator it = npc.mSpells.mList.begin(); it != npc.mSpells.mList.end(); ++it)
132 
133  // Clear the list now that we've written it, this prevents issues cropping up with
134  // ensureCustomData() in OpenMW tripping over no longer existing spells, where an error would be fatal.
136 
137  // Same with inventory. Actually it's strange this would contain something, since there's already an
138  // inventory list in NPCC. There seems to be a fair amount of redundancy in this format.
140  }
141  }
142 };
143 
144 class ConvertCREA : public Converter
145 {
146 public:
147  virtual void read(ESM::ESMReader &esm)
148  {
149  // See comment in ConvertNPC
150  ESM::Creature creature;
151  bool isDeleted = false;
152 
153  creature.load(esm, isDeleted);
154  mContext->mCreatures[Misc::StringUtils::lowerCase(creature.mId)] = creature;
155  }
156 };
157 
158 // Do we need ConvertCONT?
159 // I've seen a CONT record in a certain save file, but the container contents in it
160 // were identical to a corresponding CNTC record. See previous comment about redundancy...
161 
162 class ConvertGlobal : public DefaultConverter<ESM::Global>
163 {
164 public:
165  virtual void read(ESM::ESMReader &esm)
166  {
167  ESM::Global global;
168  bool isDeleted = false;
169 
170  global.load(esm, isDeleted);
171  if (Misc::StringUtils::ciEqual(global.mId, "gamehour"))
172  mContext->mHour = global.mValue.getFloat();
173  if (Misc::StringUtils::ciEqual(global.mId, "day"))
174  mContext->mDay = global.mValue.getInteger();
175  if (Misc::StringUtils::ciEqual(global.mId, "month"))
176  mContext->mMonth = global.mValue.getInteger();
177  if (Misc::StringUtils::ciEqual(global.mId, "year"))
178  mContext->mYear = global.mValue.getInteger();
179  mRecords[global.mId] = global;
180  }
181 };
182 
183 class ConvertClass : public DefaultConverter<ESM::Class>
184 {
185 public:
186  virtual void read(ESM::ESMReader &esm)
187  {
188  ESM::Class class_;
189  bool isDeleted = false;
190 
191  class_.load(esm, isDeleted);
192  if (class_.mId == "NEWCLASSID_CHARGEN")
194 
195  mRecords[class_.mId] = class_;
196  }
197 };
198 
199 class ConvertBook : public DefaultConverter<ESM::Book>
200 {
201 public:
202  virtual void read(ESM::ESMReader &esm)
203  {
204  ESM::Book book;
205  bool isDeleted = false;
206 
207  book.load(esm, isDeleted);
208  if (book.mData.mSkillId == -1)
210 
211  mRecords[book.mId] = book;
212  }
213 };
214 
215 class ConvertNPCC : public Converter
216 {
217 public:
218  virtual void read(ESM::ESMReader &esm)
219  {
220  std::string id = esm.getHNString("NAME");
221  NPCC npcc;
222  npcc.load(esm);
223  if (id == "PlayerSaveGame")
224  {
226  }
227  else
228  {
229  int index = npcc.mNPDT.mIndex;
230  mContext->mNpcChanges.insert(std::make_pair(std::make_pair(index,id), npcc));
231  }
232  }
233 };
234 
235 class ConvertREFR : public Converter
236 {
237 public:
238  virtual void read(ESM::ESMReader &esm)
239  {
240  REFR refr;
241  refr.load(esm);
242  assert(refr.mRefID == "PlayerSaveGame");
244 
246  convertACDT(refr.mActorData.mACDT, cStats);
247 
249  convertNpcData(refr.mActorData, npcStats);
250 
252  if (!refr.mActorData.mSelectedEnchantItem.empty())
253  {
255 
256  for (unsigned int i=0; i<invState.mItems.size(); ++i)
257  {
258  // FIXME: in case of conflict (multiple items with this refID) use the already equipped one?
259  if (Misc::StringUtils::ciEqual(invState.mItems[i].mRef.mRefID, refr.mActorData.mSelectedEnchantItem))
260  invState.mSelectedEnchantItem = i;
261  }
262  }
263  }
264  virtual void write(ESM::ESMWriter& esm)
265  {
267  esm.writeHNString("ID__", mSelectedSpell);
269  }
270 private:
271  std::string mSelectedSpell;
272 };
273 
274 class ConvertPCDT : public Converter
275 {
276 public:
278  : mFirstPersonCam(true),
279  mTeleportingEnabled(true),
280  mLevitationEnabled(true)
281  {}
282 
283  virtual void read(ESM::ESMReader &esm)
284  {
285  PCDT pcdt;
286  pcdt.load(esm);
287 
289  }
290  virtual void write(ESM::ESMWriter &esm)
291  {
293  esm.writeHNT("TELE", mTeleportingEnabled);
294  esm.writeHNT("LEVT", mLevitationEnabled);
296 
298  esm.writeHNT("FIRS", mFirstPersonCam);
300  }
301 private:
305 };
306 
307 class ConvertCNTC : public Converter
308 {
309  virtual void read(ESM::ESMReader &esm)
310  {
311  std::string id = esm.getHNString("NAME");
312  CNTC cntc;
313  cntc.load(esm);
314  mContext->mContainerChanges.insert(std::make_pair(std::make_pair(cntc.mIndex,id), cntc));
315  }
316 };
317 
318 class ConvertCREC : public Converter
319 {
320 public:
321  virtual void read(ESM::ESMReader &esm)
322  {
323  std::string id = esm.getHNString("NAME");
324  CREC crec;
325  crec.load(esm);
326  mContext->mCreatureChanges.insert(std::make_pair(std::make_pair(crec.mIndex,id), crec));
327  }
328 };
329 
330 class ConvertFMAP : public Converter
331 {
332 public:
333  virtual void read(ESM::ESMReader &esm);
334  virtual void write(ESM::ESMWriter &esm);
335 
336 private:
337  osg::ref_ptr<osg::Image> mGlobalMapImage;
338 };
339 
340 class ConvertCell : public Converter
341 {
342 public:
343  virtual void read(ESM::ESMReader& esm);
344  virtual void write(ESM::ESMWriter& esm);
345 
346 private:
347  struct Cell
348  {
350  std::vector<CellRef> mRefs;
351  std::vector<unsigned int> mFogOfWar;
352  };
353 
354  std::map<std::string, Cell> mIntCells;
355  std::map<std::pair<int, int>, Cell> mExtCells;
356 
357  std::vector<ESM::CustomMarker> mMarkers;
358 
359  void writeCell(const Cell& cell, ESM::ESMWriter &esm);
360 };
361 
362 class ConvertKLST : public Converter
363 {
364 public:
365  virtual void read(ESM::ESMReader& esm)
366  {
367  KLST klst;
368  klst.load(esm);
369  mKillCounter = klst.mKillCounter;
370 
372  }
373 
374  virtual void write(ESM::ESMWriter &esm)
375  {
377  for (std::map<std::string, int>::const_iterator it = mKillCounter.begin(); it != mKillCounter.end(); ++it)
378  {
379  esm.writeHNString("ID__", it->first);
380  esm.writeHNT ("COUN", it->second);
381  }
383  }
384 
385 private:
386  std::map<std::string, int> mKillCounter;
387 };
388 
389 class ConvertFACT : public Converter
390 {
391 public:
392  virtual void read(ESM::ESMReader& esm)
393  {
394  ESM::Faction faction;
395  bool isDeleted = false;
396 
397  faction.load(esm, isDeleted);
398  std::string id = Misc::StringUtils::lowerCase(faction.mId);
399 
400  for (std::map<std::string, int>::const_iterator it = faction.mReactions.begin(); it != faction.mReactions.end(); ++it)
401  {
402  std::string faction2 = Misc::StringUtils::lowerCase(it->first);
403  mContext->mDialogueState.mChangedFactionReaction[id].insert(std::make_pair(faction2, it->second));
404  }
405  }
406 };
407 
409 class ConvertSTLN : public Converter
410 {
411 public:
412  virtual void read(ESM::ESMReader &esm)
413  {
414  std::string itemid = esm.getHNString("NAME");
416 
417  while (esm.isNextSub("FNAM") || esm.isNextSub("ONAM"))
418  {
419  if (esm.retSubName().toString() == "FNAM")
420  {
421  std::string factionid = esm.getHString();
422  mStolenItems[itemid].insert(std::make_pair(Misc::StringUtils::lowerCase(factionid), true));
423  }
424  else
425  {
426  std::string ownerid = esm.getHString();
427  mStolenItems[itemid].insert(std::make_pair(Misc::StringUtils::lowerCase(ownerid), false));
428  }
429  }
430  }
431  virtual void write(ESM::ESMWriter &esm)
432  {
433  ESM::StolenItems items;
434  for (std::map<std::string, std::set<Owner> >::const_iterator it = mStolenItems.begin(); it != mStolenItems.end(); ++it)
435  {
436  std::map<std::pair<std::string, bool>, int> owners;
437  for (std::set<Owner>::const_iterator ownerIt = it->second.begin(); ownerIt != it->second.end(); ++ownerIt)
438  {
439  owners.insert(std::make_pair(std::make_pair(ownerIt->first, ownerIt->second)
440  // Since OpenMW doesn't suffer from the owner contamination bug,
441  // it needs a count argument. But for legacy savegames, we don't know
442  // this count, so must assume all items of that ID are stolen,
443  // like vanilla MW did.
444  ,std::numeric_limits<int>::max()));
445  }
446 
447  items.mStolenItems.insert(std::make_pair(it->first, owners));
448  }
449 
451  items.write(esm);
453  }
454 
455 private:
456  typedef std::pair<std::string, bool> Owner; // <owner id, bool isFaction>
457 
458  std::map<std::string, std::set<Owner> > mStolenItems;
459 };
460 
467 class ConvertINFO : public Converter
468 {
469 public:
470  virtual void read(ESM::ESMReader& esm)
471  {
472  INFO info;
473  info.load(esm);
474  }
475 };
476 
477 class ConvertDIAL : public Converter
478 {
479 public:
480  virtual void read(ESM::ESMReader& esm)
481  {
482  std::string id = esm.getHNString("NAME");
483  DIAL dial;
484  dial.load(esm);
485  if (dial.mIndex > 0)
486  mDials[id] = dial;
487  }
488  virtual void write(ESM::ESMWriter &esm)
489  {
490  for (std::map<std::string, DIAL>::const_iterator it = mDials.begin(); it != mDials.end(); ++it)
491  {
493  ESM::QuestState state;
494  state.mFinished = 0;
495  state.mState = it->second.mIndex;
496  state.mTopic = Misc::StringUtils::lowerCase(it->first);
497  state.save(esm);
499  }
500  }
501 private:
502  std::map<std::string, DIAL> mDials;
503 };
504 
505 class ConvertQUES : public Converter
506 {
507 public:
508  virtual void read(ESM::ESMReader& esm)
509  {
510  std::string id = esm.getHNString("NAME");
511  QUES quest;
512  quest.load(esm);
513  }
514 };
515 
516 class ConvertJOUR : public Converter
517 {
518 public:
519  virtual void read(ESM::ESMReader& esm)
520  {
521  JOUR journal;
522  journal.load(esm);
523  }
524 };
525 
526 class ConvertGAME : public Converter
527 {
528 public:
530  : mHasGame(false)
531  {
532  }
533 
534  virtual void read(ESM::ESMReader &esm)
535  {
536  mGame.load(esm);
537  mHasGame = true;
538  }
539 
540  int validateWeatherID(int weatherID)
541  {
542  if(weatherID >= -1 && weatherID < 10)
543  {
544  return weatherID;
545  }
546  else
547  {
548  std::stringstream error;
549  error << "Invalid weather ID:" << weatherID << std::endl;
550  throw std::runtime_error(error.str());
551  }
552  }
553 
554  virtual void write(ESM::ESMWriter &esm)
555  {
556  if (!mHasGame)
557  return;
559  ESM::WeatherState weather;
560  weather.mTimePassed = 0.0f;
561  weather.mFastForward = false;
563  weather.mTransitionFactor = 1 - (mGame.mGMDT.mWeatherTransition / 100.0f);
566  weather.mQueuedWeather = -1;
567  // TODO: Determine how ModRegion modifiers are saved in Morrowind.
568  weather.save(esm);
570  }
571 
572 private:
573  bool mHasGame;
575 };
576 
578 class ConvertSCPT : public Converter
579 {
580 public:
581  virtual void read(ESM::ESMReader &esm)
582  {
583  SCPT script;
584  script.load(esm);
585  ESM::GlobalScript out;
586  convertSCPT(script, out);
587  mScripts.push_back(out);
588  }
589  virtual void write(ESM::ESMWriter &esm)
590  {
591  for (std::vector<ESM::GlobalScript>::const_iterator it = mScripts.begin(); it != mScripts.end(); ++it)
592  {
594  it->save(esm);
596  }
597  }
598 private:
599  std::vector<ESM::GlobalScript> mScripts;
600 };
601 
603 class ConvertPROJ : public Converter
604 {
605 public:
606  virtual int getStage() override { return 2; }
607  virtual void read(ESM::ESMReader& esm) override;
608  virtual void write(ESM::ESMWriter& esm) override;
609 private:
610  void convertBaseState(ESM::BaseProjectileState& base, const PROJ::PNAM& pnam);
612 };
613 
614 class ConvertSPLM : public Converter
615 {
616 public:
617  virtual void read(ESM::ESMReader& esm) override;
618  virtual void write(ESM::ESMWriter& esm) override;
619 private:
621 };
622 
623 }
624 
625 #endif
bool mLevitationEnabled
Definition: converter.hpp:304
Definition: converter.hpp:516
void load(ESMReader &esm, bool &isDeleted)
Definition: loadbook.cpp:11
virtual void write(ESM::ESMWriter &esm)
Definition: converter.cpp:438
std::string mName
Definition: loadclas.hpp:73
std::map< std::string, int > mKillCounter
RefId, kill count.
Definition: importklst.hpp:21
static bool ciEqual(const std::string &x, const std::string &y)
Definition: stringops.hpp:129
int mMonth
Definition: importercontext.hpp:43
virtual void write(ESM::ESMWriter &esm)
Definition: converter.hpp:589
std::string getHNString(const char *name)
Definition: esmreader.cpp:109
Definition: defs.hpp:121
Definition: stolenitems.hpp:13
std::string mSelectedSpell
Definition: converter.hpp:271
Definition: defs.hpp:112
virtual void write(ESM::ESMWriter &esm)
Definition: converter.hpp:264
void writeHNT(const std::string &name, const T &data)
Definition: esmwriter.hpp:78
void load(ESM::ESMReader &esm)
Definition: importinfo.cpp:8
Definition: converter.hpp:614
Definition: defs.hpp:128
GAME mGame
Definition: converter.hpp:574
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:412
virtual void write(ESM::ESMWriter &esm)
Definition: converter.hpp:554
std::map< std::string, std::set< Owner > > mStolenItems
Definition: converter.hpp:458
float mTimeOfNextTransition
Definition: importgame.hpp:22
std::string mId
Definition: loadcrea.hpp:88
void load(ESM::ESMReader &esm)
Definition: importklst.cpp:8
std::vector< ESM::GlobalScript > mScripts
Definition: converter.hpp:599
std::string mTopic
Definition: queststate.hpp:15
virtual int getStage()
Definition: converter.hpp:54
std::map< std::string, T > mRecords
Definition: converter.hpp:104
Definition: converter.hpp:318
int mIndex
Definition: importcntc.hpp:17
std::vector< ObjectState > mItems
Definition: inventorystate.hpp:18
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:110
void load(ESM::ESMReader &esm)
Definition: importgame.cpp:8
Definition: converter.hpp:477
Definition: defs.hpp:129
Context * mContext
Definition: converter.hpp:74
std::string mRefID
Definition: importplayer.hpp:26
Definition: importproj.h:16
Definition: esmreader.hpp:21
std::map< std::pair< int, int >, Cell > mExtCells
Definition: converter.hpp:355
void startRecord(const std::string &name, uint32_t flags=0)
Definition: esmwriter.cpp:89
Definition: queststate.hpp:13
Definition: importques.hpp:18
void load(ESMReader &esm, bool &isDeleted)
Definition: loadglob.cpp:11
virtual void write(ESM::ESMWriter &esm)
Definition: converter.hpp:488
int mNextWeather
Definition: importgame.hpp:20
int mLevel
Definition: creaturestats.hpp:64
ConvertGAME()
Definition: converter.hpp:529
CreatureStats mCreatureStats
Definition: npcstate.hpp:17
Definition: converter.hpp:330
void load(ESM::ESMReader &esm)
Definition: importplayer.cpp:19
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:392
int mNextWeather
Definition: weatherstate.hpp:27
void convertACDT(const ACDT &acdt, ESM::CreatureStats &cStats)
Definition: convertacdt.cpp:21
static std::string lowerCase(const std::string &in)
Returns lower case copy of input string.
Definition: stringops.hpp:177
Definition: importercontext.hpp:25
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:309
Definition: converter.hpp:274
std::map< std::pair< int, std::string >, CREC > mCreatureChanges
Definition: importercontext.hpp:47
Storage structure for global script state (only used in saved games)
Definition: globalscript.hpp:13
Definition: converter.hpp:526
std::map< std::string, int > mKillCounter
Definition: converter.hpp:386
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:321
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:202
virtual void write(ESM::ESMWriter &esm) override
Definition: converter.cpp:459
int mDay
Definition: importercontext.hpp:43
std::vector< CellRef > mRefs
Definition: converter.hpp:350
ESM::NPC mPlayerBase
Definition: importercontext.hpp:31
void writeHNString(const std::string &name, const std::string &data)
Definition: esmwriter.cpp:158
Definition: defs.hpp:118
NpcStats mNpcStats
Definition: npcstate.hpp:16
std::string mId
Definition: loadbook.hpp:29
Definition: defs.hpp:113
Definition: loadcrea.hpp:22
Definition: converter.hpp:199
struct ESSImport::NPCC::NPDT mNPDT
void load(ESMReader &esm, bool &isDeleted)
Definition: loadclas.cpp:41
NpcState mObject
Definition: player.hpp:22
virtual void write(ESM::ESMWriter &esm)
Definition: converter.hpp:431
int mWerewolfKills
Definition: npcstats.hpp:37
void convertBaseState(ESM::BaseProjectileState &base, const PROJ::PNAM &pnam)
Definition: converter.cpp:500
Projectile converter.
Definition: converter.hpp:603
void load(ESMReader &esm, bool &isDeleted)
Definition: loadfact.cpp:29
Definition: importsplm.h:16
int mIndex
Definition: importdial.hpp:13
Definition: loadglob.hpp:18
Definition: importnpcc.hpp:18
std::string mSelectedSpell
Definition: importacdt.hpp:81
ActorData mActorData
Definition: importplayer.hpp:24
SpellList mSpells
Definition: loadnpc.hpp:122
ConvertPCDT()
Definition: converter.hpp:277
InventoryList mInventory
Definition: loadnpc.hpp:121
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:147
BKDTstruct mData
Definition: loadbook.hpp:27
virtual void write(ESM::ESMWriter &esm)
Definition: converter.hpp:290
void write(ESM::ESMWriter &esm) const
Definition: stolenitems.cpp:9
std::vector< std::string > mKnownTopics
Definition: dialoguestate.hpp:18
bool mHasGame
Definition: converter.hpp:573
Definition: importscpt.hpp:17
Journal.
Definition: importjour.hpp:15
Variant mValue
Definition: loadglob.hpp:25
Definition: projectilestate.hpp:18
int mState
Definition: queststate.hpp:16
Definition: converter.hpp:50
void save(ESMWriter &esm) const
Definition: queststate.cpp:13
Definition: converter.hpp:389
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:218
std::string mId
Definition: loadfact.hpp:36
void load(ESM::ESMReader &esm)
Definition: importnpcc.cpp:8
std::map< std::string, ESM::NPC > mNpcs
Definition: importercontext.hpp:55
Kill Stats.
Definition: importklst.hpp:16
Definition: esmwriter.hpp:17
virtual void write(ESM::ESMWriter &esm)
Definition: converter.hpp:374
virtual void write(ESM::ESMWriter &esm)
Definition: converter.cpp:120
Definition: converter.hpp:162
std::vector< ContItem > mList
Definition: loadcont.hpp:28
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:186
Definition: creaturestats.hpp:23
std::string mId
Definition: loadclas.hpp:73
void save(ESMWriter &esm) const
Definition: weatherstate.cpp:50
void convertPCDT(const PCDT &pcdt, ESM::Player &out, std::vector< std::string > &outDialogueTopics, bool &firstPersonCam, bool &teleportingEnabled, bool &levitationEnabled, ESM::ControlsState &controls)
Definition: convertplayer.cpp:9
int mWerewolfKills
Definition: importklst.hpp:23
virtual ~Converter()
Definition: converter.hpp:56
void load(ESMReader &esm, bool &isDeleted)
Definition: loadnpc.cpp:11
Definition: converter.hpp:362
bool mFastForward
Definition: weatherstate.hpp:23
Definition: converter.hpp:307
int mWeatherTransition
Definition: importgame.hpp:21
Definition: loadnpc.hpp:23
void setContext(Context &context)
Definition: converter.hpp:58
std::string mSelectedEnchantItem
Definition: importacdt.hpp:82
ESM::Position mPosition
Definition: objectstate.hpp:27
virtual int getStage()
Definition: converter.hpp:82
virtual void write(ESM::ESMWriter &esm) override
Definition: converter.cpp:518
void load(ESM::ESMReader &esm)
Definition: importcntc.cpp:8
std::string mId
Definition: loadnpc.hpp:133
SpellState mSpells
Definition: creaturestats.hpp:66
Running global script.
Definition: converter.hpp:578
Creature changes.
Definition: importcrec.hpp:16
std::string toString() const
Definition: esmcommon.hpp:58
virtual void write(ESM::ESMWriter &esm)
Definition: converter.hpp:68
void load(ESM::ESMReader &esm)
Definition: importdial.cpp:8
int mYear
Definition: importercontext.hpp:43
std::vector< unsigned int > mFogOfWar
Definition: converter.hpp:351
void load(ESMReader &esm, bool &isDeleted)
Definition: loadcrea.cpp:13
int mSkillId
Definition: loadbook.hpp:24
virtual int getStage() override
Definition: converter.hpp:606
int mCurrentWeather
Definition: importgame.hpp:20
NPDTstruct52 mNpdt
Definition: loadnpc.hpp:113
ESM::ControlsState mControlsState
Definition: importercontext.hpp:36
SPLM mSPLM
Definition: converter.hpp:620
float mWeatherUpdateTime
Definition: weatherstate.hpp:24
TypesetBook::Ptr book
Definition: journalbooks.cpp:157
Definition: defs.hpp:127
int getInteger() const
Definition: variant.cpp:82
virtual void read(ESM::ESMReader &esm)
Definition: converter.cpp:101
void load(ESM::ESMReader &esm)
Definition: importplayer.cpp:8
virtual void read(ESM::ESMReader &esm)
Definition: converter.cpp:194
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:165
State for inventories and containers.
Definition: inventorystate.hpp:16
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:365
TContainer mSpells
Definition: spellstate.hpp:37
virtual void read(ESM::ESMReader &esm) override
Definition: converter.cpp:512
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:84
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:62
Definition: spellstate.hpp:32
static void lowerCaseInPlace(std::string &inout)
Transforms input string to lower case w/o copy.
Definition: stringops.hpp:171
Definition: loadcell.hpp:64
std::map< std::string, int > mReactions
Definition: loadfact.hpp:60
Default converter: simply reads the record and writes it unmodified to the output.
Definition: converter.hpp:79
int mIndex
Definition: importcrec.hpp:18
void load(ESM::ESMReader &esm)
Definition: importcrec.cpp:8
std::vector< std::string > mUsedIds
Definition: npcstats.hpp:41
void convertNpcData(const ActorData &actorData, ESM::NpcStats &npcStats)
Definition: convertacdt.cpp:46
Definition: converter.hpp:183
float mTimePassed
Definition: weatherstate.hpp:22
std::string mId
Definition: loadglob.hpp:24
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:534
Definition: weatherstate.hpp:19
InventoryState mInventory
Definition: npcstate.hpp:15
ESM::Cell mCell
Definition: converter.hpp:349
StolenItemsMap mStolenItems
Definition: stolenitems.hpp:16
std::pair< std::string, bool > Owner
Definition: converter.hpp:456
const NAME & retSubName() const
Definition: esmreader.hpp:41
ESM::Player mPlayer
Definition: importercontext.hpp:30
int mSelectedEnchantItem
Definition: inventorystate.hpp:28
ESM::DialogueState mDialogueState
Definition: importercontext.hpp:34
int mIndex
Definition: importnpcc.hpp:26
Definition: loadclas.hpp:18
std::map< std::pair< int, std::string >, CNTC > mContainerChanges
Definition: importercontext.hpp:49
std::string getHString()
Definition: esmreader.cpp:115
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:283
Definition: converter.hpp:467
void endRecord(const std::string &name)
Definition: esmwriter.cpp:132
virtual void read(ESM::ESMReader &esm) override
Definition: converter.cpp:454
void convertSCPT(const SCPT &scpt, ESM::GlobalScript &out)
Definition: convertscpt.cpp:10
Definition: importinfo.hpp:14
virtual void write(ESM::ESMWriter &esm)
Definition: converter.hpp:93
float getFloat() const
Will throw an exception, if value can not be represented as a float value.
Definition: variant.cpp:90
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:480
bool mTeleportingEnabled
Definition: converter.hpp:303
Player-agnostic player data.
Definition: importplayer.hpp:22
Weather data.
Definition: importgame.hpp:13
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:581
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:238
Definition: converter.hpp:144
void load(ESM::ESMReader &esm)
Definition: importscpt.cpp:10
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:470
Definition: converter.hpp:107
ESM::Position mPos
Definition: importplayer.hpp:27
std::vector< std::string > mList
Definition: spelllist.hpp:18
float mTransitionFactor
Definition: weatherstate.hpp:25
std::map< std::string, Cell > mIntCells
Definition: converter.hpp:354
Definition: npcstats.hpp:17
int validateWeatherID(int weatherID)
Definition: converter.hpp:540
std::vector< ESM::CustomMarker > mMarkers
Definition: converter.hpp:357
Stolen items.
Definition: converter.hpp:409
Definition: loadfact.hpp:30
Definition: importproj.h:21
Other player data.
Definition: importplayer.hpp:34
bool isNextSub(const char *name)
Definition: esmreader.cpp:165
std::map< std::string, DIAL > mDials
Definition: converter.hpp:502
int mCurrentWeather
Definition: weatherstate.hpp:26
std::map< std::string, ESM::Creature > mCreatures
Definition: importercontext.hpp:54
osg::ref_ptr< osg::Image > mGlobalMapImage
Definition: converter.hpp:337
std::map< std::string, std::map< std::string, int > > mChangedFactionReaction
Definition: dialoguestate.hpp:21
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:519
void writeCell(const Cell &cell, ESM::ESMWriter &esm)
Definition: converter.cpp:319
int mQueuedWeather
Definition: weatherstate.hpp:28
unsigned char mFinished
Definition: queststate.hpp:17
std::string mCustomPlayerClassName
Definition: importercontext.hpp:32
GMDT mGMDT
Definition: importgame.hpp:26
Definition: converter.hpp:215
Definition: loadbook.hpp:15
Definition: converter.hpp:235
Definition: converter.hpp:340
void convertNPCC(const NPCC &npcc, ESM::NpcState &npcState)
Definition: convertnpcc.cpp:8
Definition: defs.hpp:125
void load(ESM::ESMReader &esm)
Definition: importjour.cpp:8
std::map< std::pair< int, std::string >, NPCC > mNpcChanges
Definition: importercontext.hpp:48
PROJ mProj
Definition: converter.hpp:611
void load(ESM::ESMReader &esm)
Definition: importques.cpp:8
virtual void read(ESM::ESMReader &esm)
Definition: converter.hpp:508
Changed container contents.
Definition: importcntc.hpp:15
Definition: converter.hpp:347
float mHour
Definition: importercontext.hpp:44
short mLevel
Definition: loadnpc.hpp:78
Definition: importdial.hpp:11
ACDT mACDT
Definition: importacdt.hpp:69
Definition: converter.hpp:505
bool mFirstPersonCam
Definition: converter.hpp:302