public void WriteArray(uint array, int idx, int @base, int value)
{
// Debug.WriteLine("WriteArray: {0} {1} {2} {3}", array, idx, @base, value);
var ah = GetArray(array);
if (ah == null)
return;
var offset = @base + idx * ah.Dim1;
if (offset < 0 || offset >= ah.Dim1 * ah.Dim2)
{
throw new InvalidOperationException(string.Format("writeArray: array {0} out of bounds: [{1},{2}] exceeds [{3},{4}]",
array, @base, idx, ah.Dim1, ah.Dim2));
}
if (ah.Type != ArrayType.IntArray)
{
ah.Write(offset, (byte)value);
}
else if (Game.Version == 8)
{
ah.Write(offset, (uint)value);
}
else
{
ah.Write(offset, (ushort)value);
}
}