diff --git a/.gitignore b/.gitignore index 13f3c78a..417912d9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.project *.kdev4 latex html diff --git a/engine/shared/library/sharedGame/src/shared/quest/PlayerQuestData.cpp b/engine/shared/library/sharedGame/src/shared/quest/PlayerQuestData.cpp index 4bb2ae1e..3776212c 100755 --- a/engine/shared/library/sharedGame/src/shared/quest/PlayerQuestData.cpp +++ b/engine/shared/library/sharedGame/src/shared/quest/PlayerQuestData.cpp @@ -327,25 +327,22 @@ namespace Archive char giver[100]; temp[tempPos]='\0'; int const numScanned = sscanf(temp,"%lu %hi %hi %s", &c.key, &activeTasks, &completedTasks, giver); + //active quests - if (numScanned == 4) - { - // in-progress quest - Archive::put(target, static_cast(Command::ADD)); - Archive::put(target, c.key); - Archive::put(target, PlayerQuestData(NetworkId(giver), activeTasks, completedTasks, false)); - } - //"old-style" completed quests, which don't store extra flags - else if (numScanned==1) - { - // completed quest - Archive::put(target, static_cast(Command::ADD)); - Archive::put(target, c.key); - Archive::put(target, PlayerQuestData(true, true)); - } - //completed quests with store flags - else if (numScanned==2) - { + switch (numScanned) { + case 4: + // in-progress quest + Archive::put(target, static_cast(Command::ADD)); + Archive::put(target, c.key); + Archive::put(target, PlayerQuestData(NetworkId(giver), activeTasks, completedTasks, false)); + break; + case 1: + // completed quest + Archive::put(target, static_cast(Command::ADD)); + Archive::put(target, c.key); + Archive::put(target, PlayerQuestData(true, true)); + break; + case 2: // completed quest Archive::put(target, static_cast(Command::ADD)); Archive::put(target, c.key); @@ -353,9 +350,12 @@ namespace Archive uint16 const flags = activeTasks; bool const hasReceivedReward = (flags != 0); Archive::put(target, PlayerQuestData(true, hasReceivedReward)); - } - else + break; + default: FATAL(true,("Could not parse packed quest data %s,",temp)); + break; + } + tempPos=0; } else