示例#1
0
        private void LoadLUT()
        {
            // PREFABS
            var sii = LUTFolder + "-prefab.sii";
            var csv = LUTFolder + "-prefab.csv";

            Dictionary <string, string> prefab2file = new Dictionary <string, string>();
            Dictionary <int, string>    idx2prefab  = new Dictionary <int, string>();
            var csvLines = File.ReadAllLines(csv);

            foreach (var k in csvLines)
            {
                var d = k.Split(",".ToCharArray());
                int idx;

                if (int.TryParse(d[2], NumberStyles.HexNumber, null, out idx))
                {
                    if (idx2prefab.ContainsKey(idx) == false)
                    {
                        idx2prefab.Add(idx, d[1]);
                    }
                }
            }

            var siiLines = File.ReadAllLines(sii);

            var prefab = string.Empty;
            var file   = string.Empty;

            foreach (var k in siiLines)
            {
                if (k.Trim() == "}")
                {
                    if (prefab != string.Empty && file != string.Empty)
                    {
                        prefab2file.Add(prefab, file);
                    }

                    prefab = string.Empty;
                    file   = string.Empty;
                }

                if (k.StartsWith("prefab_model"))
                {
                    var d = k.Split(":".ToCharArray()).Select(x => x.Trim()).ToArray();
                    if (d[1].Length > 3)
                    {
                        prefab = d[1].Substring(0, d[1].Length - 1).Trim();
                    }
                }

                if (k.Contains("prefab_desc"))
                {
                    var d = k.Split("\"".ToCharArray());
                    file = d[1].Trim();
                }
            }

            // Link all prefabs
            foreach (var id2fab in idx2prefab)
            {
                if (prefab2file.ContainsKey(id2fab.Value))
                {
                    var f   = prefab2file[id2fab.Value];
                    var obj = PrefabsLookup.FirstOrDefault(x => x.IsFile(f));

                    if (obj != null)
                    {
                        obj.IDX   = id2fab.Key;
                        obj.IDSII = id2fab.Value;

                        PrefabLookup.Add(id2fab.Key, obj);
                    }
                }
            }

            // COMPANIES
            CompaniesLookup = File.ReadAllLines(LUTFolder + "-companies.csv").Select(x => new Ets2Company(x, this)).ToList();

            // CITIES
            CitiesLookup = File.ReadAllLines(LUTFolder + "-cities.csv").Select(x =>
            {
                var d    = x.Split(",".ToCharArray());
                var id   = ulong.Parse(d[0], NumberStyles.HexNumber);
                var city = d[1];
                return(new KeyValuePair <ulong, string>(id, city));
            }).ToDictionary(x => x.Key, x => x.Value);

            // ROAD LOOKS
            RoadLookup = File.ReadAllLines(LUTFolder + "-roads.csv").Select(x =>
            {
                var d       = x.Split(",".ToCharArray());
                var id      = uint.Parse(d[0], NumberStyles.HexNumber);
                var look    = d[1];
                var lookObj = new Ets2RoadLook(look, this);
                return(new KeyValuePair <uint, Ets2RoadLook>(id, lookObj));
            }).ToDictionary(x => x.Key, x => x.Value);
        }
示例#2
0
        private void LoadLUT()
        {
            // PREFABS
            var sii = LUTFolder + "-prefab.sii";
            var csv = LUTFolder + "-prefab.csv";

            Dictionary<string, string> prefab2file = new Dictionary<string, string>();
            Dictionary<int, string> idx2prefab = new Dictionary<int, string>();
            var csvLines = File.ReadAllLines(csv);
            foreach (var k in csvLines)
            {
                var d = k.Split(",".ToCharArray());
                int idx;

                if (int.TryParse(d[2], NumberStyles.HexNumber, null, out idx))
                {
                    if (idx2prefab.ContainsKey(idx) == false)
                    idx2prefab.Add(idx, d[1]);
                }
            }

            var siiLines = File.ReadAllLines(sii);

            var prefab = string.Empty;
            var file = string.Empty;
            foreach (var k in siiLines)
            {
                if (k.Trim() == "}")
                {
                    if (prefab != string.Empty && file != string.Empty)
                    {
                        prefab2file.Add(prefab, file);
                    }

                    prefab = string.Empty;
                    file = string.Empty;
                }

                if (k.StartsWith("prefab_model"))
                {
                    var d = k.Split(":".ToCharArray()).Select(x => x.Trim()).ToArray();
                    if (d[1].Length > 3)
                    {
                        prefab = d[1].Substring(0, d[1].Length - 1).Trim();
                    }
                }

                if (k.Contains("prefab_desc"))
                {
                    var d = k.Split("\"".ToCharArray());
                    file = d[1].Trim();
                }

            }

            // Link all prefabs
            foreach (var id2fab in idx2prefab)
            {
                if (prefab2file.ContainsKey(id2fab.Value))
                {
                    var f = prefab2file[id2fab.Value];
                    var obj = PrefabsLookup.FirstOrDefault(x => x.IsFile(f));

                    if (obj != null)
                    {
                        obj.IDX = id2fab.Key;
                        obj.IDSII = id2fab.Value;

                        PrefabLookup.Add(id2fab.Key, obj);
                    }
                }
            }

            // COMPANIES
            CompaniesLookup = File.ReadAllLines(LUTFolder + "-companies.csv").Select(x => new Ets2Company(x, this)).ToList();

            // CITIES
            CitiesLookup = File.ReadAllLines(LUTFolder + "-cities.csv").Select(x =>
            {
                var d = x.Split(",".ToCharArray());
                var id = ulong.Parse(d[0], NumberStyles.HexNumber);
                var city = d[1];
                return new KeyValuePair<ulong, string>(id, city);
            }).ToDictionary(x => x.Key, x => x.Value);

            // ROAD LOOKS
            RoadLookup = File.ReadAllLines(LUTFolder + "-roads.csv").Select(x =>
            {
                var d = x.Split(",".ToCharArray());
                var id = uint.Parse(d[0], NumberStyles.HexNumber);
                var look = d[1];
                var lookObj = new Ets2RoadLook(look,this);
                return new KeyValuePair<uint, Ets2RoadLook>(id, lookObj);
            }).ToDictionary(x => x.Key, x => x.Value);
        }