DisplayMessage() public static method

public static DisplayMessage ( string message ) : void
message string
return void
Ejemplo n.º 1
0
        public static void Extract()
        {
            Console.Write("Extract map data? (y/n) ");
            Console.CursorVisible = true;
            var Key = Console.ReadKey();

            Console.CursorVisible = false;
            Console.Write("\n");

            if (Key.KeyChar != 'y')
            {
                return;
            }

            Program.DisplayMessage("Extracting map data...");

            var Serializer = new JavaScriptSerializer();
            var DatLut     = Serializer.Deserialize <IDictionary <string, IDictionary <string, ushort> > >(File.ReadAllText("MapDats.json"));

            bool Success = false;

            try
            {
                foreach (var ZonePair in DatLut)
                {
                    var Zone = ZonePair.Key;
                    foreach (var MapPair in ZonePair.Value)
                    {
                        var Map = MapPair.Key;

                        using (FileStream Stream = File.Open(Program.GetPath(MapPair.Value), FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                        {
                            var Image = ImageParser.Parse(Stream, true);
                            using (FileStream OutFile = File.Open(string.Format(CultureInfo.InvariantCulture, "resources/maps/{0}_{1}.png", Zone, Map), FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite))
                            {
                                Image.Save(OutFile, ImageFormat.Png);
                            }
                        }
                    }
                }

                Success = true;
            }
            finally
            {
                Program.DisplayResult(Success);
            }
        }
Ejemplo n.º 2
0
        internal static void Analyze(IEnumerable <KeyValuePair <string, dynamic> > model)
        {
            const string rootPath = "analysis";

            Program.DisplayMessage("Starting analysis...");

            Directory.CreateDirectory(rootPath);
            foreach (var pair in model)
            {
                var namePath = Path.Combine(rootPath, pair.Key);
                Directory.CreateDirectory(namePath);
                foreach (var property in Group((IEnumerable <dynamic>)pair.Value, pair.Key))
                {
                    var propertyName = property.Key.Substring(1);
                    using (var file = File.Open(Path.Combine(namePath, $"{propertyName}.lua"), FileMode.Create))
                        using (var writer = new StreamWriter(file))
                        {
                            writer.WriteLine("return {");

                            var attributes           = FindCommonAttributes(property.Value);
                            var commonAttributeNames = attributes.Values.Select(value => value.Keys).Aggregate((current, obj) => new HashSet <string>(current.Intersect(obj))).Distinct().OrderBy(str => str).ToList();

                            foreach (var bucket in property.Value.OrderBy(bucket => bucket.Key))
                            {
                                var set     = bucket.Value;
                                var comment = "";
                                var names   = set.Select(obj => MakeValue(obj.en));
                                if (set.Count > 1)
                                {
                                    var localAttributes = (IDictionary <string, dynamic>)attributes[bucket.Key];
                                    if (localAttributes.Count > 0)
                                    {
                                        comment = " --";
                                        var localCommonAttributeNames = commonAttributeNames.ToList();
                                        if (localCommonAttributeNames.Count > 1)
                                        {
                                            comment += $" {String.Join(", ", localCommonAttributeNames.Where(name => name != propertyName).Select(name => $"{name} = {MakeValue(localAttributes[name])}"))}";
                                        }
                                        comment += $"  ({String.Join(", ", localAttributes.Where(attr => !localCommonAttributeNames.Contains(attr.Key)).OrderBy(attr => attr.Key).Select(attr => $"{attr.Key} = {MakeValue(attr.Value)}"))})";
                                    }
                                    else
                                    {
                                        comment = " -- No common values";
                                    }
                                }

                                if (set.Count <= 5)
                                {
                                    writer.WriteLine($"    [{MakeValue(bucket.Key)}] = {{{string.Join(", ", names)}}}{comment}");
                                }
                                else
                                {
                                    writer.WriteLine($"    [{MakeValue(bucket.Key)}] = {{");
                                    foreach (var name in names)
                                    {
                                        writer.WriteLine($"        {name},");
                                    }
                                    writer.WriteLine($"    }},{comment}");
                                }
                            }

                            writer.WriteLine("}");
                        }
                }
            }

            string MakeValue(dynamic value)
            {
                if (value is string || value is Enum)
                {
                    return("\"" + value.ToString().Replace("\"", "\\\"").Replace("\n", "\\n") + "\"");
                }

                return(FormattableString.Invariant($"{value}"));
            }
        }