Exemplo n.º 1
0
        public static void WriteStats(TextWriter writer, ProjectStats projectStats, List <Language> languages, bool workstringOnly, bool workstringFallback)
        {
            var project = ResourcesHandler.Project;

            //Populate VoiceKit Stats
            Dictionary <string, VoiceKitStats> VoiceKits = new Dictionary <string, VoiceKitStats>();

            foreach (var kvp in projectStats.Actors)
            {
                string voiceKitName = (project.GetActorFromID(kvp.Key) != null) ? project.GetActorFromID(kvp.Key).VoiceKit : null;
                if (voiceKitName != null)
                {
                    VoiceKitStats voiceKitStats = VoiceKits.GetOrAdd(voiceKitName, (key) => new VoiceKitStats());
                    voiceKitStats.Words     += kvp.Value.Words;
                    voiceKitStats.Sentences += kvp.Value.Sentences;
                }
            }

            //Append project specific stats
            if (EditorCore.ProjectStats != null)
            {
                writer.WriteLine(EditorCore.ProjectStats(projectStats));
            }

            writer.WriteLine(" * Source");
            writer.WriteLine("");
            if (workstringOnly)
            {
                writer.WriteLine("Workstring only");
            }
            else
            {
                if (languages != null)
                {
                    foreach (var language in languages)
                    {
                        writer.WriteLine(String.Format("Language : {0}", language.Name));
                    }
                }
                if (workstringFallback)
                {
                    writer.WriteLine("Using Workstring fallback");
                }
            }
            writer.WriteLine("");
            foreach (var package in projectStats.Packages)
            {
                if (package != null)
                {
                    writer.WriteLine(String.Format("Package : {0}", package.Name));
                }
            }
            writer.WriteLine("");
            writer.WriteLine("");

            writer.WriteLine(" * General");
            writer.WriteLine("");
            writer.WriteLine(String.Format("Total Sentence Words : {0}", projectStats.SentenceWords));
            writer.WriteLine(String.Format("Total Sentences : {0}", projectStats.Sentences));
            writer.WriteLine(String.Format("Avg Words per Sentence : {0:0.0}", (float)projectStats.SentenceWords / (float)projectStats.Sentences));
            writer.WriteLine("");
            writer.WriteLine(String.Format("Total Reply Words : {0}", projectStats.ReplyWords));
            writer.WriteLine(String.Format("Total Replies : {0}", projectStats.Replies));
            writer.WriteLine(String.Format("Avg Words per Reply : {0:0.0}", (float)projectStats.ReplyWords / (float)projectStats.Replies));
            writer.WriteLine("");
            writer.WriteLine("");

            writer.WriteLine(" * Actors");
            writer.WriteLine("");
            foreach (var kvp in projectStats.Actors)
            {
                float avg = (float)kvp.Value.Words / (float)kvp.Value.Sentences;
                writer.WriteLine(String.Format("{0} (\"{1}\") :  {2} words  ({3:0.0} per sentence)", kvp.Key, project.GetActorName(kvp.Key), kvp.Value.Words, avg));
            }
            writer.WriteLine("");
            writer.WriteLine("");

            writer.WriteLine(" * VoiceKits");
            writer.WriteLine("");
            foreach (var kvp in VoiceKits)
            {
                float avg = (float)kvp.Value.Words / (float)kvp.Value.Sentences;
                writer.WriteLine(String.Format("{0} (\"{1}\") :  {2} words  ({3:0.0} per sentence)", kvp.Key, project.GetVoiceActorNameFromKit(kvp.Key), kvp.Value.Words, avg));
            }
            writer.WriteLine("");
            writer.WriteLine("");

            writer.WriteLine(" * Dialogues");
            writer.WriteLine("");
            foreach (var kvp in projectStats.Dialogues)
            {
                float avg = (float)kvp.Value.SentenceWords / (float)kvp.Value.Sentences;
                writer.WriteLine(String.Format("{0} :  {1} words  ({2:0.0} per sentence)", kvp.Key, kvp.Value.SentenceWords, avg));
            }
        }