You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw-tes3mp/components/esm/loadlevlist.hpp

66 lines
1.4 KiB
C++

#ifndef _ESM_LEVLISTS_H
#define _ESM_LEVLISTS_H
#include "esm_reader.hpp"
namespace ESM
{
/*
* Leveled lists. Since these have identical layout, I only bothered
* to implement it once.
*
* We should later implement the ability to merge leveled lists from
* several files.
*/
struct LeveledListBase
{
enum Flags
{
AllLevels = 0x01, // Calculate from all levels <= player
// level, not just the closest below
// player.
Each = 0x02 // Select a new item each time this
// list is instantiated, instead of
// giving several identical items
}; // (used when a container has more
// than one instance of one leveled
// list.)
int flags;
unsigned char chanceNone; // Chance that none are selected (0-255?)
// Record name used to read references. Must be set before load() is
// called.
const char *recName;
struct LevelItem
{
std::string id;
short level;
};
std::vector<LevelItem> list;
void load(ESMReader &esm);
};
struct CreatureLevList: LeveledListBase
{
CreatureLevList()
{
recName = "CNAM";
}
};
struct ItemLevList: LeveledListBase
{
ItemLevList()
{
recName = "INAM";
}
};
}
#endif