Exemple #1
0
        // Public Methods
        #region Public
        /// <summary>
        /// Write the spoilers file, containg the randomized items location
        /// </summary>
        /// <param name="sourcefile">Oringal spoiler files</param>
        /// <param name="destinationfile">Path to save the organized spoiler file</param>
        public static void WriteSpoilers(string sourcefile, string destinationfile)
        {
            // Check parameters
            if (!File.Exists(sourcefile))
            {
                throw new ArgumentException($"{sourcefile} does not exists.");
            }

            // Read the original spoilers file content
            string[]        spoilers     = File.ReadAllLines(sourcefile);
            List <string[]> spoilersInfo = new List <string[]>();

            foreach (string spoilLine in spoilers)
            {
                spoilersInfo.Add(spoilLine.Replace(" -> ", ";").Split(';'));
            }

            // Create stream to save the spoiler file
            using (TextWriter spoilerWriter = new StreamWriter(destinationfile))
            {
                // Write by item type
                SpoilersWriter.WriteSpoilersByItemType(spoilerWriter, spoilersInfo);
                spoilerWriter.WriteLine();

                // Write by item location
                SpoilersWriter.WriteSpoilersByItemLocation(spoilerWriter, spoilersInfo);
            }
        }
Exemple #2
0
        /// <summary>
        /// Write the spoilers information grouped by items location
        /// </summary>
        /// <param name="textwriter">Text writer</param>
        /// <param name="spoilersInfo">Original spoiler info</param>
        private static void WriteSpoilersByItemLocation(TextWriter textwriter, List <string[]> spoilersInfo)
        {
            // Header
            textwriter.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -");
            textwriter.WriteLine("Items by location: ");
            textwriter.WriteLine();

            // Landing Site, Crateria and Blue Brinstar items
            textwriter.WriteLine("\tLanding Site, Crateria and Blue Brinstar [Original Item Location -> Randomized Item]:");
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._LandingSiteCrateriaBlueBrinstar.Contains(m[0])), true);

            // Green and Pink Brinstar items
            textwriter.WriteLine("\tGreen and Pink Brinstar [Original Item Location -> Randomized Item]:");
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._GreenAndPinkBrinstar.Contains(m[0])), true);

            // Red Brinstar items
            textwriter.WriteLine("\tRed Brinstar [Original Item Location -> Randomized Item]:");
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._RedBrinstar.Contains(m[0])), true);

            // Moat, West Ocean and Wrecked Ship items
            textwriter.WriteLine("\tMoat, West Ocean and Wrecked Ship [Original Item Location -> Randomized Item]:");
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._MoatWestOceanAndWreckedShip.Contains(m[0])), true);

            // Kraid and Upper-Left Norfair items
            textwriter.WriteLine("\tKraid and Upper-Left Norfair [Original Item Location -> Randomized Item]:");
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._KraidAndUpperLeftNorfair.Contains(m[0])), true);

            // Bubble Moutain and Upper-Right Norfair items
            textwriter.WriteLine("\tBubble Moutain and Upper-Right Norfair [Original Item Location -> Randomized Item]:");
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._BubbleMoutainAndUpperRightNorfair.Contains(m[0])), true);

            // Crocomire items
            textwriter.WriteLine("\tCrocomire [Original Item Location -> Randomized Item]:");
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._Crocomire.Contains(m[0])), true);

            // Lower Norfair items
            textwriter.WriteLine("\tLower Norfair [Original Item Location -> Randomized Item]:");
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._LowerNorfair.Contains(m[0])), true);

            // Maridia items
            textwriter.WriteLine("\tMaridia [Original Item Location -> Randomized Item]:");
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._Maridia.Contains(m[0])), true);
        }
Exemple #3
0
        /// <summary>
        /// Write the spoilers information grouped by item type
        /// </summary>
        /// <param name="textwriter">Text writer</param>
        /// <param name="spoilersInfo">Original spoiler info</param>
        private static void WriteSpoilersByItemType(TextWriter textwriter, List <string[]> spoilersInfo)
        {
            // Major items header
            textwriter.WriteLine("Items by type: ");
            textwriter.WriteLine();
            textwriter.WriteLine("\tMajor items [Randomized Item -> Original Item Location]:");

            // Suits
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._SuitItems.Contains(m[1])));

            // Boots
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._BootItems.Contains(m[1])));

            // Beams
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._BeamItems.Contains(m[1])));

            // Misc
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._MiscItems.Contains(m[1])));

            // Aux
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => SpoilersWriter._AuxItems.Contains(m[1])));

            // Energy Tanks
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => m[1].Equals(SpoilersWriter._EnergyTankItems)));

            // Reserve Tanks
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => m[1].Equals(SpoilersWriter._ReserveTankItems)));

            // Minor items header
            textwriter.WriteLine();
            textwriter.WriteLine("\tMinor items [Randomized Item -> Original Item Location]:");

            // Power bomb items
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => m[1].Equals(SpoilersWriter._PowerBombItems)));

            // Super Missile items
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => m[1].Equals(SpoilersWriter._SuperMissileItems)));

            // Item Missile items
            SpoilersWriter.WriteItemLocation(textwriter, spoilersInfo.Where(m => m[1].Equals(SpoilersWriter._MissileItems)));
        }