/// <summary> /// Initializes a new instance of the <see cref="PropertyVisitor" /> class. /// </summary> /// <param name="map">The translation map.</param> public PropertyVisitor(TranslationMap map) { if (map == null) throw new ArgumentNullException("map"); this.map = map; }
public static void Configure() { ConventionPack conventionPack = new ConventionPack { new IgnoreIfDefaultConvention(true), new IgnoreExtraElementsConvention(true), new CamelCaseElementNameConvention(), new EnumRepresentationConvention(BsonType.String) }; ConventionRegistry.Register("LuduStackConventions", conventionPack, t => true); BsonDefaults.GuidRepresentation = GuidRepresentation.Standard; EntityBaseMap.Configure(); UserProfileMap.Configure(); GameMap.Configure(); UserContentMap.Configure(); UserPreferencesMap.Configure(); FeaturedContentMap.Configure(); GamificationActionMap.Configure(); GamificationLevelMap.Configure(); GamificationMap.Configure(); PollMap.Configure(); BrainstormMap.Configure(); TeamMap.Configure(); JobsMap.Configure(); TranslationMap.Configure(); }
private static Block[] LoadBlocks(TagNodeCompound tag, TranslationMap palette, int length, int width, Dictionary <BlockPos, TileEntity> tiles) { var bLower = tag["Blocks"].ToTagByteArray().Data; var bUpper = new byte[(bLower.Length >> 1) + 1]; if (tag.ContainsKey("AddBlocks")) { bUpper = tag["AddBlocks"].ToTagByteArray().Data; } else if (tag.ContainsKey("Add")) { Console.WriteLine("Schematic contains deprecated tag \"Add\", use \"AddBlocks\" instead. Loading regardless."); var add = tag["Add"].ToTagByteArray().Data; for (var i = 0; i < bLower.Length; i++) { if ((i & 1) == 1) { bUpper[i >> 1] |= (byte)(add[i] & 0x0F); } else { bUpper[i >> 1] |= (byte)((add[i] & 0x0F) << 4); } } } var bMetadata = new byte[bLower.Length]; if (tag.ContainsKey("Metadata")) { bMetadata = tag["Metadata"].ToTagByteArray().Data; } else if (tag.ContainsKey("Data")) { bMetadata = tag["Data"].ToTagByteArray().Data; } var blocks = new Block[bLower.Length]; for (var i = 0; i < bLower.Length; i++) { short id; if ((i & 1) == 1) { id = (short)(((bUpper[i >> 1] & 0x0F) << 8) + (bLower[i] & 0xFF)); } else { id = (short)(((bUpper[i >> 1] & 0xF0) << 4) + (bLower[i] & 0xFF)); } var pos = GetBlockPos(length, width, i); var metadata = bMetadata[i]; tiles.TryGetValue(pos, out var tile); blocks[i] = new Block(TranslateBlockId(palette, id), metadata, tile?.Data); } return(blocks); }
private TranslationMap BuildCodonDictionaryFromFileContents(string fileContents) { var codonData = new TranslationMap(); var lines = fileContents.Replace(NewLine, Splitter).Split(Splitter.ToCharArray().First()); foreach (var line in lines) { InsertValueIntoMapOrStartOrStopList(line, codonData); } return(codonData); }
private void InsertValueIntoMapOrStartOrStopList(string line, TranslationMap translationTranslationMap) { var lineValues = line.Split(Comma); if (lineValues[1].ToLower() == StopKey) { translationTranslationMap.Stops.Add(lineValues[0]); } else if (lineValues[1].ToLower() == StartKey) { translationTranslationMap.Starts.Add(lineValues[0]); } else { translationTranslationMap.CodonMap.Add(lineValues[0], lineValues[1]); } }
/// <inheritdoc /> public Structure Load(string filename) { using (var fs = File.OpenRead(filename)) using (var bs = new BrotliStream(fs, CompressionMode.Decompress)) using (var s = new BinaryReader(bs)) { var idMap = new TranslationMap(); var diffMap = new DiffMap(); var identBytes = new byte[ScarifStructure.Magic.Length]; var read = s.Read(identBytes, 0, identBytes.Length); var ident = Encoding.UTF8.GetString(identBytes); if (ident != ScarifStructure.Magic || read != identBytes.Length) { throw new IOException("Input file not SCARIF structure"); } var version = s.ReadInt32(); if (version != 1) { throw new IOException("Input file not SCARIF v1"); } var numChunks = s.ReadInt32(); var numIdMapEntries = s.ReadInt32(); for (var entryIdx = 0; entryIdx < numIdMapEntries; entryIdx++) { var id = s.ReadInt16(); var name = ReadNullTerminatedString(s); idMap.Add(id, name); } var lowestPos = new BlockPos(int.MaxValue, int.MaxValue, int.MaxValue); var highestPos = new BlockPos(int.MinValue, int.MinValue, int.MinValue); for (var chunkIdx = 0; chunkIdx < numChunks; chunkIdx++) { var chunkX = s.ReadInt32(); var chunkZ = s.ReadInt32(); var numBlocks = s.ReadInt32(); var blocks = new Dictionary <BlockPos, Block>(); for (var blockIdx = 0; blockIdx < numBlocks; blockIdx++) { // Format: // 0b 0000 1111 // xxxx zzzz var xz = s.ReadByte(); var x = (byte)((xz & 0xF0) >> 4); var z = (byte)(xz & 0x0F); var y = s.ReadByte(); EnforceBounds(chunkX * 16 + x, y, chunkZ * 16 + z, ref lowestPos, ref highestPos); var id = s.ReadInt16(); var flags = (BlockFlags)s.ReadByte(); byte metadata = 0; NbtTree tileTag = null; if (flags.Has(BlockFlags.Metadata)) { metadata = s.ReadByte(); } if (flags.Has(BlockFlags.Nbt)) { var len = s.ReadInt32(); if (len <= 0) { throw new IOException("Zero-length NBT present"); } var bytes = s.ReadBytes(len); using (var ms = new MemoryStream(bytes)) { tileTag = new NbtTree(ms); } } if (idMap.ContainsKey(id)) { blocks[new BlockPos(x, y, z)] = new Block(idMap.TranslateBlock(id), metadata, tileTag?.Root); } else { throw new IOException($"Unknown block ID found: {id}"); } } diffMap.Add(new ChunkPosition(chunkX, chunkZ), blocks); } return(new ScarifStructure(idMap, diffMap, lowestPos, highestPos)); } }
private static string TranslateBlockId(TranslationMap map, int id) { return(map.ContainsKey((short)id) ? map[(short)id] : $"unknown:{id}"); }
/// <summary> /// Constructor /// </summary> /// <param name="codonTableFileName">Filename of the DNA codon table.</param> public CodonTranslator(string codonTableFileName) { _translationMap = new CsvCodonDataBuilder().Build(codonTableFileName); }