Core/DataStores: Implement optional data in hotfix packets

Port From (https://github.com/TrinityCore/TrinityCore/commit/fbbf40981cc14523fa181cf6125336b254e8ae4d)
This commit is contained in:
hondacrx
2020-12-31 15:04:02 -05:00
parent 2485ea604d
commit 13c9e3d56d
7 changed files with 147 additions and 17 deletions
@@ -39,8 +39,12 @@ namespace Game.DataStorage
[Serializable]
public class DB6Storage<T> : Dictionary<uint, T>, IDB2Storage where T : new()
{
public void LoadData(int indexField, BitSet availableDb2Locales, HotfixStatements preparedStatement, HotfixStatements preparedStatementLocale)
uint _tableHash;
public void LoadData(WDCHeader header, BitSet availableDb2Locales, HotfixStatements preparedStatement, HotfixStatements preparedStatementLocale)
{
_tableHash = header.TableHash;
SQLResult result = DB.Hotfix.Query(DB.Hotfix.GetPreparedStatement(preparedStatement));
if (!result.IsEmpty())
{
@@ -183,7 +187,7 @@ namespace Game.DataStorage
}
}
var id = (uint)fields[indexField == -1 ? 0 : indexField].GetValue(obj);
var id = (uint)fields[header.IdIndex == -1 ? 0 : header.IdIndex].GetValue(obj);
base[id] = obj;
}
while (result.NextRow());
@@ -358,5 +362,7 @@ namespace Game.DataStorage
{
Remove(id);
}
public uint GetTableHash() { return _tableHash; }
}
}
@@ -58,7 +58,7 @@ namespace Game.DataStorage
foreach (var b in reader._records)
storage.Add((uint)b.Key, b.Value.As<T>());
storage.LoadData(reader.Header.IdIndex, availableDb2Locales, preparedStatement, preparedStatementLocale);
storage.LoadData(reader.Header, availableDb2Locales, preparedStatement, preparedStatementLocale);
Global.DB2Mgr.AddDB2(reader.Header.TableHash, storage);
loadedFileCount++;