Ejemplo n.º 1
0
        public TsCityItem(TsSector sector, int startOffset) : base(sector, startOffset)
        {
            Valid = true;
            var fileOffset = startOffset + 0x34; // Set position at start of flags

            Hidden = (MemoryHelper.ReadUint8(Sector.Stream, fileOffset) & 0x01) != 0;
            var cityId = MemoryHelper.ReadUInt64(Sector.Stream, fileOffset += 0x05);

            City = Sector.Mapper.LookupCity(cityId);
            if (City == null)
            {
                Valid = false;
                Log.Msg($"Could not find City with id: {cityId:X}, " +
                        $"in {Path.GetFileName(Sector.FilePath)} @ {fileOffset}");
            }
            fileOffset += 0x08 + 0x10;
            BlockSize   = fileOffset - startOffset;
        }
Ejemplo n.º 2
0
        private void ParseCityFiles()
        {
            var defDirectory = Rfs.GetDirectory("def");

            if (defDirectory == null)
            {
                Log.Msg("Could not read 'def' dir");
                return;
            }

            var cityFiles = defDirectory.GetFiles("city");

            if (cityFiles == null)
            {
                Log.Msg("Could not read city files");
                return;
            }

            foreach (var cityFile in cityFiles)
            {
                var data  = cityFile.Entry.Read();
                var lines = Encoding.UTF8.GetString(data).Split('\n');
                foreach (var line in lines)
                {
                    if (line.TrimStart().StartsWith("#"))
                    {
                        continue;
                    }
                    if (line.Contains("@include"))
                    {
                        var path = Helper.GetFilePath(line.Split('"')[1], "def");
                        var city = new TsCity(this, path);
                        if (city.Token != 0 && !_citiesLookup.ContainsKey(city.Token))
                        {
                            _citiesLookup.Add(city.Token, city);
                        }
                    }
                }
            }
        }