Core/QuestStatus:

- Separate rewarded quests from active quests, and store them in a new table to reduce database size
- Drop the no longer needed `rewarded` column from character_queststatus for smaller table size
- Prevent filling the database with dropped quests
  - Delete useless records
- Implement queststatus save "queues" instead of states
- Minor optimizations

WARNING: Backup your database!

--HG--
branch : trunk
This commit is contained in:
linencloth
2010-12-26 04:16:18 +01:00
parent 8fdbe7c4e6
commit b150172521
16 changed files with 252 additions and 229 deletions
+5 -17
View File
@@ -351,30 +351,18 @@ class Quest
uint32 QuestCompleteScript;
};
enum QuestUpdateState
{
QUEST_UNCHANGED = 0,
QUEST_CHANGED = 1,
QUEST_NEW = 2
};
struct QuestStatusData
{
QuestStatusData()
: m_status(QUEST_STATUS_NONE),m_rewarded(false),
m_explored(false), m_timer(0), uState(QUEST_NEW)
QuestStatusData(): m_status(QUEST_STATUS_NONE), m_explored(false), m_timer(0)
{
memset(m_itemcount, 0, QUEST_ITEM_OBJECTIVES_COUNT * sizeof(uint16));
memset(m_creatureOrGOcount, 0, QUEST_OBJECTIVES_COUNT * sizeof(uint16));
}
QuestStatus m_status;
bool m_rewarded;
bool m_explored;
uint32 m_timer;
QuestUpdateState uState;
uint16 m_itemcount[ QUEST_ITEM_OBJECTIVES_COUNT ];
uint16 m_creatureOrGOcount[ QUEST_OBJECTIVES_COUNT ];
uint16 m_itemcount[QUEST_ITEM_OBJECTIVES_COUNT];
uint16 m_creatureOrGOcount[QUEST_OBJECTIVES_COUNT];
QuestStatus m_status;
bool m_explored;
};
#endif