Changeset 20
- Timestamp:
- 09/20/09 20:13:24 (2 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 5 modified
-
sql/character_updates/2009_09_20_achievements.sql (added)
-
src/hearthstone-shared/Database/DBCStores.h (modified) (1 diff)
-
src/hearthstone-world/AchievementInterface.cpp (modified) (32 diffs)
-
src/hearthstone-world/AchievementInterface.h (modified) (1 diff)
-
src/hearthstone-world/ObjectMgr.cpp (modified) (3 diffs)
-
src/hearthstone-world/ObjectMgr.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/hearthstone-shared/Database/DBCStores.h
r15 r20 46 46 //uint32 refAchievement; // 61 47 47 48 uint32 AssociatedCriteria[32]; // Custom stuff48 std::vector<uint32>* AssociatedCriteria; // Custom stuff 49 49 uint32 AssociatedCriteriaCount; 50 50 }; -
trunk/src/hearthstone-world/AchievementInterface.cpp
r7 r20 34 34 for(; itr != m_achivementDataMap.end(); ++itr) 35 35 { 36 delete [] itr->second->counter; 36 37 delete itr->second; 37 38 } … … 60 61 ad->id = achievementid; 61 62 ad->num_criterias = ae->AssociatedCriteriaCount; 63 if( !completed ) // save us memory! don't allocate our counters unless we're actually still working. :D 64 { 65 ad->counter = new uint32[ae->AssociatedCriteriaCount]; 66 memset(ad->counter, 0, sizeof(uint32)*ae->AssociatedCriteriaCount); 67 } 62 68 ad->completed = completed; 63 69 ad->date = fields[3].GetUInt32(); … … 67 73 68 74 vector<string> Delim = StrSplit( criteriaprogress, "," ); 69 for( uint32 i = 0; i < 32; ++i)75 for( uint32 i = 0; !completed && i < ae->AssociatedCriteriaCount; ++i) 70 76 { 71 77 if( i >= Delim.size() ) … … 149 155 for(uint32 i = 0; i < ae->AssociatedCriteriaCount; ++i) 150 156 { 151 *data << uint32( ae->AssociatedCriteria [i]);157 *data << uint32( ae->AssociatedCriteria->at(i) ); 152 158 uint32 counterVar = itr->second->counter[i]; 153 159 FastGUIDPack( *data, counterVar ); … … 265 271 ad->id = ae->ID; 266 272 ad->num_criterias = ae->AssociatedCriteriaCount; 273 ad->counter = new uint32[ae->AssociatedCriteriaCount]; 274 memset(ad->counter, 0, sizeof(uint32)*ae->AssociatedCriteriaCount); 267 275 ad->m_isDirty = true; 268 276 m_achivementDataMap.insert( make_pair( ad->id, ad ) ); … … 286 294 { 287 295 bool thisFail = false; 288 AchievementCriteriaEntry * ace = dbcAchivementCriteria.LookupEntry(ach->AssociatedCriteria [i]);296 AchievementCriteriaEntry * ace = dbcAchivementCriteria.LookupEntry(ach->AssociatedCriteria->at(i)); 289 297 uint32 ReqCount = ace->raw.field4 ? ace->raw.field4 : 1; 290 298 … … 340 348 WorldPacket data(SMSG_CRITERIA_UPDATE, 50); 341 349 AchievementEntry * ae = dbcAchievement.LookupEntry(ad->id); 342 data << uint32(ae->AssociatedCriteria [idx]);350 data << uint32(ae->AssociatedCriteria->at(idx)); 343 351 FastGUIDPack( data, (uint64)ad->counter[idx] ); 344 352 data << m_player.GetNewGUID(); … … 376 384 for(uint32 i = 0; i < ad->num_criterias; ++i) 377 385 { 378 uint32 CriteriaID = ae->AssociatedCriteria [i];386 uint32 CriteriaID = ae->AssociatedCriteria->at(i); 379 387 AchievementCriteriaEntry * ace = dbcAchivementCriteria.LookupEntry( CriteriaID ); 380 388 if( ad->counter[i] && ace->raw.additionalRequirement1_type & ACHIEVEMENT_CRITERIA_CONDITION_NO_DEATH ) … … 423 431 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 424 432 { 425 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);433 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 426 434 if( compareCriteria == ace ) 427 435 { … … 469 477 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 470 478 { 471 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);479 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 472 480 if( compareCriteria == ace ) 473 481 { … … 554 562 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 555 563 { 556 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);564 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 557 565 if( compareCriteria == ace ) 558 566 { … … 630 638 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 631 639 { 632 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);640 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 633 641 if( compareCriteria == ace ) 634 642 { … … 673 681 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 674 682 { 675 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);683 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 676 684 if( compareCriteria == ace ) 677 685 { … … 718 726 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 719 727 { 720 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);728 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 721 729 if( compareCriteria == ace ) 722 730 { … … 757 765 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 758 766 { 759 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);767 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 760 768 if( compareCriteria == ace ) 761 769 { … … 800 808 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 801 809 { 802 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);810 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 803 811 if( compareCriteria == ace ) 804 812 { … … 843 851 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 844 852 { 845 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);853 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 846 854 if( compareCriteria == ace ) 847 855 { … … 881 889 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 882 890 { 883 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);891 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 884 892 if( compareCriteria == ace ) 885 893 { … … 919 927 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 920 928 { 921 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);929 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 922 930 if( compareCriteria == ace ) 923 931 { … … 959 967 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 960 968 { 961 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);969 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 962 970 if( compareCriteria == ace ) 963 971 { … … 1006 1014 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1007 1015 { 1008 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1016 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1009 1017 if( compareCriteria == ace ) 1010 1018 { … … 1062 1070 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1063 1071 { 1064 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1072 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1065 1073 if( compareCriteria == ace ) 1066 1074 { … … 1104 1112 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1105 1113 { 1106 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1114 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1107 1115 if( compareCriteria == ace ) 1108 1116 { … … 1187 1195 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1188 1196 { 1189 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1197 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1190 1198 if( compareCriteria == ace ) 1191 1199 { … … 1230 1238 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1231 1239 { 1232 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1240 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1233 1241 if( compareCriteria == ace ) 1234 1242 { … … 1273 1281 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1274 1282 { 1275 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1283 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1276 1284 if( compareCriteria == ace ) 1277 1285 { … … 1312 1320 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1313 1321 { 1314 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1322 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1315 1323 if( compareCriteria == ace ) 1316 1324 { … … 1351 1359 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1352 1360 { 1353 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1361 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1354 1362 if( compareCriteria == ace ) 1355 1363 { … … 1393 1401 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1394 1402 { 1395 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1403 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1396 1404 if( compareCriteria == ace ) 1397 1405 { … … 1431 1439 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1432 1440 { 1433 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1441 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1434 1442 if( compareCriteria == ace ) 1435 1443 { … … 1469 1477 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1470 1478 { 1471 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1479 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1472 1480 if( compareCriteria == ace ) 1473 1481 { … … 1513 1521 for(uint32 i = 0; i < pAchievementEntry->AssociatedCriteriaCount; ++i) 1514 1522 { 1515 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria [i]);1523 compareCriteria = dbcAchivementCriteria.LookupEntry( pAchievementEntry->AssociatedCriteria->at(i) ); 1516 1524 if( compareCriteria == ace ) 1517 1525 { -
trunk/src/hearthstone-world/AchievementInterface.h
r7 r20 26 26 { 27 27 uint32 id; 28 uint32 counter[32];28 uint32* counter; 29 29 30 30 uint32 date; -
trunk/src/hearthstone-world/ObjectMgr.cpp
r19 r20 189 189 delete (itr->second); 190 190 191 Log.Notice("ObjectMgr", "Deleting Achievement Quest Map..."); 192 for(map<uint32,set<Quest*>*>::iterator qitr = ZoneToQuestMap.begin(); qitr != ZoneToQuestMap.end(); ++qitr) 193 delete qitr->second; 191 AchievementEntry* ae; 192 for(uint32 i = 0; i < dbcAchivementCriteria.GetNumRows(); ++i) 193 { 194 ae = dbcAchievement.LookupRow(i); 195 if( ae ) 196 { 197 delete ae->AssociatedCriteria; 198 } 199 } 194 200 } 195 201 void ObjectMgr::LoadAchievements() … … 200 206 if(ae) 201 207 { 208 ae->AssociatedCriteria = new vector<uint32>; 202 209 ae->AssociatedCriteriaCount = 0; 203 210 } … … 227 234 if( ae ) 228 235 { 229 if(ae->AssociatedCriteriaCount >= 32) continue; 230 ae->AssociatedCriteria[ ae->AssociatedCriteriaCount ] = ace->ID; 236 //if(ae->AssociatedCriteriaCount >= 32) continue; 237 ae->AssociatedCriteria->push_back( ace->ID ); 238 //ae->AssociatedCriteria[ ae->AssociatedCriteriaCount ] = ace->ID; 231 239 ae->AssociatedCriteriaCount++; 232 240 } 233 }234 }235 236 // For Achievements: Complete Quest by Zone Id237 StorageContainerIterator<Quest> * itr = QuestStorage.MakeIterator();238 for(; !itr->AtEnd(); itr->Inc() )239 {240 Quest * pQuest = itr->Get();241 if(!pQuest) continue;242 243 uint32 QuestZone = pQuest->zone_id;244 map<uint32,set<Quest*>*>::iterator qitr = ZoneToQuestMap.find( QuestZone );245 if( qitr == ZoneToQuestMap.end() )246 {247 // We don't have any entries for this zone yet.248 set<Quest*>* mySet = new set<Quest*>;249 mySet->insert( pQuest );250 ZoneToQuestMap.insert( make_pair( QuestZone, mySet ) );251 }252 else253 {254 set<Quest*>* thisSet = qitr->second;255 thisSet->insert( pQuest );256 241 } 257 242 } -
trunk/src/hearthstone-world/ObjectMgr.h
r19 r20 435 435 Guild* GetGuildByGuildName(std::string guildName); 436 436 437 map<uint32,set<Quest*>*> ZoneToQuestMap;438 437 void LoadAchievements(); 439 438