Core/DBStorage: Fixed sending hotfix data, was sending it wrong. Now custom hotfix data will work.
This commit is contained in:
@@ -39,11 +39,11 @@ namespace Game.DataStorage
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public class DB6Storage<T> : Dictionary<uint, T>, IDB2Storage where T : new()
|
public class DB6Storage<T> : Dictionary<uint, T>, IDB2Storage where T : new()
|
||||||
{
|
{
|
||||||
uint _tableHash;
|
WDCHeader _header;
|
||||||
|
|
||||||
public void LoadData(WDCHeader header, BitSet availableDb2Locales, HotfixStatements preparedStatement, HotfixStatements preparedStatementLocale)
|
public void LoadData(WDCHeader header, BitSet availableDb2Locales, HotfixStatements preparedStatement, HotfixStatements preparedStatementLocale)
|
||||||
{
|
{
|
||||||
_tableHash = header.TableHash;
|
_header = header;
|
||||||
|
|
||||||
SQLResult result = DB.Hotfix.Query(DB.Hotfix.GetPreparedStatement(preparedStatement));
|
SQLResult result = DB.Hotfix.Query(DB.Hotfix.GetPreparedStatement(preparedStatement));
|
||||||
if (!result.IsEmpty())
|
if (!result.IsEmpty())
|
||||||
@@ -246,7 +246,7 @@ namespace Game.DataStorage
|
|||||||
|
|
||||||
foreach (var fieldInfo in entry.GetType().GetFields())
|
foreach (var fieldInfo in entry.GetType().GetFields())
|
||||||
{
|
{
|
||||||
if (fieldInfo.Name == "Id")
|
if (fieldInfo.Name == "Id" && _header.HasIndexTable())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var type = fieldInfo.FieldType;
|
var type = fieldInfo.FieldType;
|
||||||
@@ -288,6 +288,9 @@ namespace Game.DataStorage
|
|||||||
case TypeCode.Single:
|
case TypeCode.Single:
|
||||||
buffer.WriteFloat((float)fieldInfo.GetValue(entry));
|
buffer.WriteFloat((float)fieldInfo.GetValue(entry));
|
||||||
break;
|
break;
|
||||||
|
case TypeCode.String:
|
||||||
|
buffer.WriteCString((string)fieldInfo.GetValue(entry));
|
||||||
|
break;
|
||||||
case TypeCode.Object:
|
case TypeCode.Object:
|
||||||
switch (type.Name)
|
switch (type.Name)
|
||||||
{
|
{
|
||||||
@@ -306,6 +309,23 @@ namespace Game.DataStorage
|
|||||||
string str = locStr[locale];
|
string str = locStr[locale];
|
||||||
buffer.WriteCString(str);
|
buffer.WriteCString(str);
|
||||||
break;
|
break;
|
||||||
|
case "Vector2":
|
||||||
|
Vector2 vector2 = (Vector2)fieldInfo.GetValue(entry);
|
||||||
|
buffer.WriteVector2(vector2);
|
||||||
|
break;
|
||||||
|
case "Vector3":
|
||||||
|
Vector3 vector3 = (Vector3)fieldInfo.GetValue(entry);
|
||||||
|
buffer.WriteVector3(vector3);
|
||||||
|
break;
|
||||||
|
case "FlagArray128":
|
||||||
|
FlagArray128 flagArray128 = (FlagArray128)fieldInfo.GetValue(entry);
|
||||||
|
buffer.WriteUInt32(flagArray128[0]);
|
||||||
|
buffer.WriteUInt32(flagArray128[1]);
|
||||||
|
buffer.WriteUInt32(flagArray128[2]);
|
||||||
|
buffer.WriteUInt32(flagArray128[3]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Exception($"Unhandled Custom type: {type.Name}");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -363,6 +383,6 @@ namespace Game.DataStorage
|
|||||||
Remove(id);
|
Remove(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public uint GetTableHash() { return _tableHash; }
|
public uint GetTableHash() { return _header.TableHash; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user