public override Table CreateChild(Lut ilut, Definition d) { Lut3D lut = (Lut3D)ilut; xml = new XElement("table"); xml.SetAttributeValue("name", name); xml.SetAttributeValue("address", ilut.dataAddress.ToString("X")); XElement tx = new XElement("table"); tx.SetAttributeValue("name", "X"); tx.SetAttributeValue("address", lut.colsAddress.ToString("X")); tx.SetAttributeValue("elements", lut.cols); xml.Add(tx); XElement ty = new XElement("table"); ty.SetAttributeValue("name", "Y"); ty.SetAttributeValue("address", lut.rowsAddress.ToString("X")); ty.SetAttributeValue("elements", lut.rows); xml.Add(ty); return(TableFactory.CreateTable(xml, d)); //TODO also set attirbutes and split this up! Copy to table2D!! }
internal void SetLut(Lut3D lut) { ColorLut = lut; }
/// <summary> /// Try to read the Patch metadata from the file and add this data to table lists. /// </summary> private bool TryParseDefs(Blob metadata, ref int offset, String defPath) { UInt32 cookie = 0; while ((metadata.Content.Count > offset + 8) && metadata.TryGetUInt32(ref cookie, ref offset)) { if (cookie == OpTable3d)//TODO CONDITIONALLY READ LUTS! { string metaString = null; uint metaOffset = 0; if (this.TryReadDefData(metadata, out metaString, out metaOffset, ref offset)) { Blob tableBlob; this.parentMod.TryGetMetaBlob(metaOffset, 10, out tableBlob, this.parentMod.blobList.Blobs); Lut3D lut = new Lut3D(metaString, tableBlob, metaOffset); if (metaString != null) { RomLutList.Add(lut); } } else { Trace.WriteLine("Invalid definition found."); return(false); } } else if (cookie == OpTable2d)//TODO CONDITIONALLY READ LUTS! { string metaString = null; uint metaOffset = 0; if (this.TryReadDefData(metadata, out metaString, out metaOffset, ref offset)) { Blob tableBlob; this.parentMod.TryGetMetaBlob(metaOffset, 10, out tableBlob, this.parentMod.blobList.Blobs); Lut2D lut = new Lut2D(metaString, tableBlob, metaOffset); if (metaString != null) { RomLutList.Add(lut); } } else { Trace.WriteLine("Invalid definition found."); return(false); } } else if (cookie == OpTable1d) { string metaString = null; uint metaOffset = 0; if (this.TryReadDefData(metadata, out metaString, out metaOffset, ref offset)) { Lut lut = new Lut(metaString, metaOffset); if (metaString != null) { RomLutList.Add(lut); } } else { Trace.WriteLine("Invalid definition found."); return(false); } } else if (cookie == OpRAM) { string paramName = null; string paramId = null; uint paramOffset = 0; uint paramLenght = 0; if (this.TryReadDefData(metadata, out paramId, out paramOffset, ref offset)) { if (this.TryReadDefData(metadata, out paramName, out paramLenght, ref offset)) { // found modName, output to string! KeyValuePair <String, Table> tempTable = CreateRomRaiderRamTable(paramName, (int)paramOffset, paramId, (int)paramLenght); if (tempTable.Key != null) { this.RamTableList.Add(tempTable.Key, tempTable.Value); } } } else { Trace.WriteLine("Invalid definition found."); return(false); } } else if (cookie == Mod.endoffile) { break; } } return(true); }