Beispiel #1
0
        private RelationDefinition ReadDefinition()
        {
            var versionPath = Path.Combine("Definitions", "game.ver");

            if (!File.Exists(versionPath))
            {
                throw new InvalidOperationException("Definitions\\game.ver must exist.");
            }

            var version = File.ReadAllText(versionPath).Trim();
            var def     = new RelationDefinition()
            {
                Version = version
            };

            foreach (var sheetFileName in Directory.EnumerateFiles("Definitions", "*.json"))
            {
                var json     = File.ReadAllText(Path.Combine(sheetFileName), Encoding.UTF8);
                var obj      = JsonConvert.DeserializeObject <Newtonsoft.Json.Linq.JObject>(json);
                var sheetDef = SheetDefinition.FromJson(obj);
                def.SheetDefinitions.Add(sheetDef);

                if (!_GameData.SheetExists(sheetDef.Name))
                {
                    var msg = $"Defined sheet {sheetDef.Name} is missing.";
                    Debug.WriteLine(msg);
                    Console.WriteLine(msg);
                }
            }

            return(def);
        }
Beispiel #2
0
        /// <summary>
        ///     Deserialize a <see cref="RelationDefinition" /> file inside a <see cref="ZipFile" />.
        /// </summary>
        /// <param name="zip"><see cref="ZipFile" /> to read from.</param>
        /// <param name="version">Version of the definition to read.</param>
        /// <returns>Returns the read <see cref="RelationDefinition" />.</returns>
        private static RelationDefinition ReadDefinition(ZipFile zip, string version)
        {
            var def = new RelationDefinition()
            {
                Version = version
            };
            var entries = zip.SelectEntries("*.json", Path.Combine(version, "Definitions"));

            foreach (var entry in entries)
            {
                using (var stream = entry.OpenReader())
                    using (var reader = new StreamReader(stream)) {
                        var json = reader.ReadToEnd();
                        var obj  = JsonConvert.DeserializeObject <Newtonsoft.Json.Linq.JObject>(json);
                        def.SheetDefinitions.Add(SheetDefinition.FromJson(obj));
                    }
            }
            return(def);
        }
        /// <summary>
        ///     Deserialize a <see cref="RelationDefinition" /> file inside a <see cref="ZipFile" />.
        /// </summary>
        /// <param name="zip"><see cref="ZipFile" /> to read from.</param>
        /// <param name="version">Version of the definition to read.</param>
        /// <returns>Returns the read <see cref="RelationDefinition" />.</returns>
        private static RelationDefinition ReadDefinition(ZipFile zip, string version)
        {
            RelationDefinition def = new RelationDefinition()
            {
                Version = version
            };

            System.Collections.Generic.ICollection <ZipEntry> entries = zip.SelectEntries("*.json", Path.Combine(version, "Definitions"));
            foreach (ZipEntry entry in entries)
            {
                using (Ionic.Crc.CrcCalculatorStream stream = entry.OpenReader())
                    using (StreamReader reader = new StreamReader(stream)) {
                        string json = reader.ReadToEnd();
                        Newtonsoft.Json.Linq.JObject obj = JsonConvert.DeserializeObject <Newtonsoft.Json.Linq.JObject>(json);
                        def.SheetDefinitions.Add(SheetDefinition.FromJson(obj));
                    }
            }
            return(def);
        }