示例#1
0
        static void Main(string[] args)
        {
            string turfDm = @"/turf/";

            foreach (var filePath in Directory.EnumerateFiles(FolderPath, "*.dmi", SearchOption.TopDirectoryOnly))
            {
                var basePath = Path.GetFileNameWithoutExtension(filePath);

                using (var newDMI = new DMIFile(filePath))
                {
                    turfDm += string.Empty + Environment.NewLine;
                    turfDm += $@"
/turf/{basePath.ckey()}/
    icon = '{Path.GetFileName(filePath)}'";

                    foreach (var state in newDMI.States)
                    {
                        var stateName = state.Name.ckey();
                        if (string.IsNullOrEmpty(state.Name) == false)
                        {
                            turfDm +=
                                $@"
    {stateName}/
        icon_state = ""{state.Name}""
        density = 0";
                        }
                    }
                }
            }

            File.WriteAllText(FolderPath + "turf.dm", turfDm);
        }
示例#2
0
        public void AnimationOfBarsignsConstructsCorrectly()
        {
            using var fs   = System.IO.File.OpenWrite(@"Data/Output/thegreytide.gif");
            using var file = new DMIFile(@"Data/Input/barsigns.dmi");
            var toTest = file.States.First(x => x.Name == "thegreytide");

            toTest.SaveAnimatedGIF(fs, StateDirection.South);
        }
示例#3
0
        public void AnimationOfSingularityConstructsCorrectly()
        {
            using var fs   = System.IO.File.OpenWrite(@"Data/Output/singularity_s11.gif");
            using var file = new DMIFile(@"Data/Input/352x352.dmi");
            var toTest = file.States.First(x => x.Name == "singularity_s11");

            toTest.SaveAnimatedGIF(fs, StateDirection.South);
        }
示例#4
0
        public void CanWriteAnimations()
        {
            using var file = new DMIFile(@"Data/Input/animal.dmi");
            var toTest = file.States.First(x => x.Name == "mushroom");

            for (StateDirection dir = StateDirection.South; dir != StateDirection.SouthEast; dir++)
            {
                using var fs = System.IO.File.OpenWrite($@"Data/Output/mushroom_gif_{dir}.gif");
                toTest.SaveAnimatedGIF(fs, dir);
            }
        }
示例#5
0
        public void CanMergeDMIs()
        {
            using var newDMI = new DMIFile(32, 32);
            using (var firstFile = new DMIFile(@"Data/Input/centcom.dmi"))
                using (var secondFile = new DMIFile(@"Data/Input/misc.dmi"))
                {
                    newDMI.ImportStates(firstFile);
                    newDMI.ImportStates(secondFile);
                }

            newDMI.Save(@"Data/Output/merged.dmi");
        }
示例#6
0
        public void CanReadDirectionDepth()
        {
            using var file = new DMIFile(@"Data/Input/animal.dmi");

            // Arrange
            var bat          = file.States.First(x => x.Name == "bat");
            var carp         = file.States.First(x => x.Name == "carp");
            var rareFrogDead = file.States.First(x => x.Name == "rare_frog_dead");

            // Assert
            Assert.Equal(DirectionDepth.Four, bat.DirectionDepth);
            Assert.Equal(DirectionDepth.Four, carp.DirectionDepth);
            Assert.Equal(DirectionDepth.One, rareFrogDead.DirectionDepth);
        }
示例#7
0
        public static void ShouldRemoveStateMetadata()
        {
            using var file = new DMIFile(@"Data/Input/turf_analysis.dmi");

            // Arrange
            var mdCount       = file.Metadata.States.Count;
            var stateToRemove = file.States.Last();

            // Act
            var result = file.RemoveState(stateToRemove);

            // Assert
            Assert.True(result);
            Assert.Equal(mdCount - 1, file.Metadata.States.Count);
        }
示例#8
0
        public void CanCreateDMIFromImages()
        {
            using var newDMI = new DMIFile(32, 32);
            var sourceData = new List <string>()
            {
                "sord", "sordvert", "steve32"
            };

            foreach (var source in sourceData)
            {
                var img      = Image.Load <Rgba32>($@"Data/Input/SourceImages/{source}.png");
                var newState = new DMIState(source, DirectionDepth.One, 1, 32, 32);
                newState.SetFrame(img, 0);
                newDMI.AddState(newState);
            }

            newDMI.Save(@"Data/Output/minecraft.dmi");
        }
示例#9
0
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("Invalid arguments. Please supply 1 argument, the path of your repository");
                return;
            }
            string repoDirectory = args[0];

            // Print some stuff
            Console.WriteLine("DMI-Search by AffectedArc07");
            Console.WriteLine("Searches all DMIs in all repo folders (" + repoDirectory + ") for a specific state.");
            // Ask what they want
            Console.Write("Enter search term: ");
            string searchTerm = Console.ReadLine();

            // Now search
            string[] allFiles = Directory.GetFiles(repoDirectory, "*.dmi", SearchOption.AllDirectories);
            Console.WriteLine(allFiles.Length + " DMI files found. Searching all files for the icon state \"" + searchTerm + "\".");
            Int16 matches = 0;

            foreach (string fileName in allFiles)
            {
                try {
                    using (DMIFile dmi = new DMIFile(fileName)) {
                        foreach (DMIState state in dmi.States)
                        {
                            if (state.Name == searchTerm)
                            {
                                matches += 1;
                                Console.WriteLine("MATCH FOUND: State \"" + state.Name + "\" found in file \"" + fileName + "\".");
                            }
                        }
                    }
                } catch {
                    continue;
                }
            }
            Console.WriteLine("Total matches found: " + matches);
            Console.Write("Press enter to close ");
            Console.ReadLine();
        }
示例#10
0
        public void CanChangeDMIDepths()
        {
            using var newDMI = new DMIFile(32, 32);

            // Create state
            var img      = Image.Load <Rgba32>($@"Data/Input/SourceImages/steve32.png");
            var newState = new DMIState("steve32", DirectionDepth.One, 1, 32, 32);

            newState.SetFrame(img, 0);
            newDMI.AddState(newState);

            // Modifying state
            newDMI.States.First().SetDirectionDepth(DirectionDepth.Four);
            newDMI.States.First().SetFrameCount(10);

            // Check new states
            Assert.Equal(DirectionDepth.Four, newDMI.States.First().DirectionDepth);
            Assert.Equal(10, newDMI.States.First().Frames);

            // Cannot save
            Assert.False(newDMI.CanSave());
        }
示例#11
0
 public void AirMeterDMIStateCount()
 {
     using var file = new DMIFile(@"Data/Input/air_meter.dmi");
     Assert.Equal(16, file.States.Count);
 }
示例#12
0
 public void AnimalDMIStateCount()
 {
     using var file = new DMIFile(@"Data/Input/animal.dmi");
     Assert.Equal(149, file.States.Count);
 }
示例#13
0
 public void GoonTurfAnalysisDMIStateCount()
 {
     using var file = new DMIFile(@"Data/Input/turf_analysis_goon.dmi");
     Assert.Equal(16, file.States.Count);
 }
示例#14
0
 public void SpaceDragonDMIStateCount()
 {
     using var file = new DMIFile(@"Data/Input/spacedragon.dmi");
     Assert.Equal(2, file.States.Count);
 }
示例#15
0
 public void LightingDMIStateCount()
 {
     using var file = new DMIFile(@"Data/Input/lighting.dmi");
     Assert.Equal(3, file.States.Count);
 }
示例#16
0
 public void AtmosTestingDMIStateCount()
 {
     using var file = new DMIFile(@"Data/Input/atmos_testing.dmi");
     Assert.Equal(5, file.States.Count);
 }
示例#17
0
 public void CanWriteDMIFile()
 {
     using var file = new DMIFile(@"Data/Input/air_meter.dmi");
     file.Save(@"Data/Output/air_meter_temp.dmi");
 }
示例#18
0
 public void CanSortDMIFile()
 {
     using var file = new DMIFile(@"Data/Input/animal.dmi");
     file.SortStates();
     file.Save(@"Data/Output/animal_sorted_alphabetically.dmi");
 }