示例#1
0
文件: Program.cs 项目: srakowski/LD47
            private static ContentFileEntry CreateSoundEffect(string name)
            {
                var entry = new ContentFileEntry {
                    Name = name
                };

                entry.Lines.Add($"#begin {name}");
                entry.Lines.Add($"/importer:WavImporter");
                entry.Lines.Add($"/processor:SoundEffectProcessor");
                entry.Lines.Add($"/processorParam:Quality=Best");
                entry.Lines.Add($"/build:{name}");
                return(entry);
            }
示例#2
0
文件: Program.cs 项目: srakowski/LD47
            private static ContentFileEntry CreateEffect(string name)
            {
                var entry = new ContentFileEntry {
                    Name = name
                };

                entry.Lines.Add($"#begin {name}");
                entry.Lines.Add($"/importer:EffectImporter");
                entry.Lines.Add($"/processor:EffectProcessor");
                entry.Lines.Add($"/processorParam:DebugMode=Auto");
                entry.Lines.Add($"/build:{name}");
                return(entry);
            }
示例#3
0
文件: Program.cs 项目: srakowski/LD47
            private static ContentFileEntry CreateSpriteFont(string name)
            {
                var entry = new ContentFileEntry {
                    Name = name
                };

                entry.Lines.Add($"#begin {name}");
                entry.Lines.Add($"/importer:FontDescriptionImporter");
                entry.Lines.Add($"/processor:FontDescriptionProcessor");
                entry.Lines.Add($"/processorParam:PremultiplyAlpha=True");
                entry.Lines.Add($"/processorParam:TextureFormat=Compressed");
                entry.Lines.Add($"/build:{name}");
                return(entry);
            }
示例#4
0
文件: Program.cs 项目: srakowski/LD47
            private static ContentFileEntry CreateTexture2D(string name)
            {
                var entry = new ContentFileEntry {
                    Name = name
                };

                entry.Lines.Add($"#begin {name}");
                entry.Lines.Add($"/importer:TextureImporter");
                entry.Lines.Add($"/processor:TextureProcessor");
                entry.Lines.Add($"/processorParam:ColorKeyColor=255,0,255,255");
                entry.Lines.Add($"/processorParam:ColorKeyEnabled=True");
                entry.Lines.Add($"/processorParam:GenerateMipmaps=False");
                entry.Lines.Add($"/processorParam:PremultiplyAlpha=True");
                entry.Lines.Add($"/processorParam:ResizeToPowerOfTwo=False");
                entry.Lines.Add($"/processorParam:MakeSquare=False");
                entry.Lines.Add($"/processorParam:TextureFormat=Color");
                entry.Lines.Add($"/build:{name}");
                return(entry);
            }
示例#5
0
文件: Program.cs 项目: srakowski/LD47
            internal void Load(string[] fileLines)
            {
                var lineIdx = 0;

                while (!fileLines[lineIdx].Contains("Content"))
                {
                    HeaderLines.Add(fileLines[lineIdx]);
                    lineIdx++;
                }
                HeaderLines.Add(fileLines[lineIdx]);
                lineIdx++;

                while (lineIdx < fileLines.Length)
                {
                    while (lineIdx < fileLines.Length && string.IsNullOrWhiteSpace(fileLines[lineIdx]))
                    {
                        lineIdx++;
                    }

                    if (lineIdx >= fileLines.Length)
                    {
                        break;
                    }

                    var entry = new ContentFileEntry
                    {
                        Name  = fileLines[lineIdx].Replace("#begin ", "").Trim(),
                        Found = false,
                    };
                    while (lineIdx < fileLines.Length && !string.IsNullOrWhiteSpace(fileLines[lineIdx]))
                    {
                        entry.Lines.Add(fileLines[lineIdx]);
                        lineIdx++;
                    }
                    Entries.Add(entry);
                }
            }
示例#6
0
文件: Program.cs 项目: srakowski/LD47
        static void Main(string[] args)
        {
            var root = @"./";

            var contentFileName = Directory.GetFiles(root, "*.mgcb")
                                  .FirstOrDefault();

            if (contentFileName == null)
            {
                Console.WriteLine("No content file in directory");
                return;
            }

            var fileLines = File.ReadAllLines(contentFileName);

            var contentFile = new ContentFile();

            contentFile.Load(fileLines);

            var contentDirectories = Directory.GetDirectories(root)
                                     .Where(d => contentDirectoryNames.Contains(Path.GetFileName(d)))
                                     .ToArray();

            var codeBuilder = BeginContentCode();

            foreach (var directory in contentDirectories)
            {
                var groupName   = Path.GetFileName(directory);
                var createEntry = ContentFileEntry.GetEntryConstructor(groupName);
                StartContentClass(codeBuilder, groupName);
                var files = Directory.GetFiles(directory);
                var props = new List <string>();
                var i     = 0;
                foreach (var file in files)
                {
                    var propertyName = Path.GetFileNameWithoutExtension(file);
                    var assetName    = $"{groupName}/{propertyName}";
                    props.Add(assetName);

                    var sanitizedPropertyName = GetPropertyName(propertyName);

                    WriteIdx(codeBuilder, sanitizedPropertyName, assetName, i);
                    i++;

                    var entryFileName = $"{groupName}/{Path.GetFileName(file)}";
                    var entry         = contentFile.Entries.FirstOrDefault(e => e.Name == entryFileName);
                    if (entry == null)
                    {
                        contentFile.Entries.Add(createEntry(entryFileName));
                    }
                    else
                    {
                        entry.Found = true;
                    }
                }

                WriteLoadAll(codeBuilder, groupName, props);


                EndContentClass(codeBuilder);
            }
            var code   = EndContentCode(codeBuilder);
            var output = Path.Combine(root, "GameContent.cs");

            File.WriteAllText(output, code);

            var data = contentFile.ToString();

            File.WriteAllLines($"{contentFileName}.old", fileLines);
            File.WriteAllText($"{contentFileName}", data);
        }