Exemple #1
0
 /// <summary>
 ///     Erstellt eine Palette aus den angegebenen Farbwerten
 /// </summary>
 /// <param name="entries">Array aus System.Color Werten, muss 16 oder 256 Einträge beinhalten</param>
 /// <param name="isEncoded">Gibt an ob die Palette komprimiert vorhanden ist</param>
 public Palette(PaletteEntry[] entries, bool isEncoded = false)
 {
     IsEncoded = isEncoded;
     if (entries.Count() == 16 || entries.Count() == 256)
     {
         _entries = entries;
     }
     else
     {
         throw new Exception("Das angegebene Farbarray muss entweder 16 oder 256 Farben haben.");
     }
     _origSize = GetSize();
 }
Exemple #2
0
 /// <summary>
 ///     Erstellt eine Palette aus den Werten an der angegebenen Romadresse
 /// </summary>
 /// <param name="input">Rom Objekt, welches die Palettendaten enthält</param>
 /// <param name="offset">Offset der Daten</param>
 /// <param name="isEncoded">Wenn true: Die Daten werden zuerst dekomprimiert(LZ77)</param>
 /// <param name="is256Pal">Wenn true: Lädt 256 Einträge anstatt 16</param>
 public Palette(Rom input, UInt32 offset, bool isEncoded, bool is256Pal = false)
 {
     IsEncoded = isEncoded;
     _isRepointable = true;
     _currentOffset = offset;
     short cols = 16;
     if (is256Pal)
     {
         cols = 256;
     }
     _entries = new PaletteEntry[cols];
     var entryList = new List<UInt16>();
     if (!isEncoded)
     {
         {
             input.SetStreamOffset(offset);
             entryList = input.ReadUShortArray(cols);
         }
     }
     else
     {
         long origSize;
         byte[] unlz = RomDecode.LzUncompress(input, offset, out origSize);
         for (int i = 0; i < unlz.Length / 2; i++)
         {
             UInt16 temp = unlz[(2*i)];
             temp |= (UInt16) ((unlz[1 + (i*2)]) << 8);
             entryList.Add(temp);
         }
     }
     for (int i = 0; i < cols; i++)
     {
         _entries[i] = new PaletteEntry(entryList[i]);
     }
     if (_entries.Length != cols)
     {
         throw new Exception("Die angegebene Palette hat nicht die angegebene Anzahl an Farben");
     }
     _lenght = GetRawData().Length;
     _origSize = GetSize();
 }