ArrayList generateTrackWithMinimalHoles() { ArrayList trackSeq = TrackGenerationUtility.generateArrayListWithThreeEmptyArrayLists(); //patterned means the track will have one straigh line of holes horizontally or 1 holes vertically if (TrackGenerationUtility.shouldPatternizeOrNot()) { switch (TrackGenerationUtility.getLimitedPatternType()) { case LimitedPatternType.HORIZONTALLINE: int firstRow = TrackGenerationUtility.randomNumber(0, 4); int[] rowsOfHole = new int[2] { firstRow, TrackGenerationUtility.randomNumber(firstRow + 2, 8) }; PatternUtility.horizontalLinePatternizer(ref trackSeq, rowsOfHole, TrackGenerationUtility.MAX_UNITS_BLOCK_PER_LANE, ResourceItemType.HOLE, true); break; case LimitedPatternType.ZIGZAG_LEFT: break; } } else { } return(trackSeq); }
// AC / CF public void GeneratePatternBitmap(byte[] importData = null, bool decode = true) { var patternRawData = importData ?? (_saveFile.SaveType == SaveType.CityFolk ? _saveFile.ReadByteArray(_offset, 0x200) : _saveFile.ReadByteArray(_offset + 0x20, 0x200)); var paletteData = _saveFile.SaveType == SaveType.CityFolk ? PatternData.CfPaletteData : PatternData.AcPaletteData; if (decode) { DecodedData = PatternUtility.DecodeC4(patternRawData); } PatternBitmap = PatternUtility.C4PaletteMapToBitmap(DecodedData, paletteData[Palette], 32, 32); }
// AC / CF public void GeneratePatternBitmap(byte[] Import_Data = null, bool Decode = true) { byte[] patternRawData = Import_Data ?? (Save_File.Save_Type == SaveType.City_Folk ? Save_File.ReadByteArray(Offset, 0x200) : Save_File.ReadByteArray(Offset + 0x20, 0x200)); uint[][] Palette_Data = Save_File.Save_Type == SaveType.City_Folk ? PatternData.CF_Palette_Data : PatternData.AC_Palette_Data; if (Decode) { DecodedData = PatternUtility.DecodeC4(patternRawData); } Pattern_Bitmap = PatternUtility.C4PaletteMapToBitmap(DecodedData, Palette_Data[Palette], 32, 32); }
public void Write() { switch (Save.SaveInstance.SaveGeneration) { case SaveGeneration.GCN: case SaveGeneration.Wii: Write(PatternUtility.EncodeC4(DecodedData)); break; case SaveGeneration.NDS: case SaveGeneration.N3DS: Write(PatternUtility.CondenseNonBlockPattern(DecodedData)); break; } }
public void Import(uint[] bitmapBuffer) { // Convert to nibble map array of bytes var patternBuffer = new byte[bitmapBuffer.Length / 2]; if (_saveFile.SaveGeneration == SaveGeneration.NDS || _saveFile.SaveGeneration == SaveGeneration.N3DS) { for (var i = 0; i < patternBuffer.Length; i++) { var idx = i * 2; patternBuffer[i] = (byte)((PatternData.ClosestColorRgb(bitmapBuffer[idx + 1], PaletteData) << 4) | PatternData.ClosestColorRgb(bitmapBuffer[idx], PaletteData)); } } else { var convertedBuffer = new byte[bitmapBuffer.Length]; for (var i = 0; i < convertedBuffer.Length; i++) { convertedBuffer[i] = PatternData.ClosestColorRgb(bitmapBuffer[i], PaletteData, _saveFile.SaveGeneration == SaveGeneration.GCN); } patternBuffer = PatternUtility.EncodeC4(convertedBuffer); } switch (_saveFile.SaveGeneration) { case SaveGeneration.GCN: case SaveGeneration.Wii: GeneratePatternBitmap(patternBuffer); break; case SaveGeneration.NDS: GenerateWwPatternBitmap(patternBuffer); break; case SaveGeneration.N3DS: GenerateNlPatternBitmap(patternBuffer); break; } Write(patternBuffer); }
public void Import(uint[] Bitmap_Buffer) { // Convert to nibble map array of bytes byte[] Pattern_Buffer = new byte[Bitmap_Buffer.Length / 2]; if (Save_File.Save_Generation == SaveGeneration.NDS || Save_File.Save_Generation == SaveGeneration.N3DS) { for (int i = 0; i < Pattern_Buffer.Length; i++) { int idx = i * 2; Pattern_Buffer[i] = (byte)((PatternData.ClosestColorRGB(Bitmap_Buffer[idx + 1], PaletteData) << 4) | PatternData.ClosestColorRGB(Bitmap_Buffer[idx], PaletteData)); // these are reversed } } else { byte[] ConvertedBuffer = new byte[Bitmap_Buffer.Length]; for (int i = 0; i < ConvertedBuffer.Length; i++) { ConvertedBuffer[i] = PatternData.ClosestColorRGB(Bitmap_Buffer[i], PaletteData); } Pattern_Buffer = PatternUtility.EncodeC4(ConvertedBuffer); } switch (Save_File.Save_Generation) { case SaveGeneration.GCN: case SaveGeneration.Wii: GeneratePatternBitmap(Pattern_Buffer); break; case SaveGeneration.NDS: GenerateWWPatternBitmap(Pattern_Buffer); break; case SaveGeneration.N3DS: GenerateNLPatternBitmap(Pattern_Buffer); break; } Write(Pattern_Buffer); }
public void RedrawBitmap() { switch (_saveFile.SaveGeneration) { case SaveGeneration.GCN: case SaveGeneration.Wii: GeneratePatternBitmap(DecodedData, false); Write(PatternUtility.EncodeC4(DecodedData, 32, 32)); break; case SaveGeneration.NDS: GenerateWwPatternBitmap(DecodedData, false); Write(PatternUtility.CondenseNonBlockPattern(DecodedData)); break; case SaveGeneration.N3DS: GenerateNlPatternBitmap(DecodedData, false); Write(PatternUtility.CondenseNonBlockPattern(DecodedData)); break; } }