Esempio n. 1
0
        public ItemReader.Result Randomize(RandomizerOptions opt, FromGame game, string gameDir, string outDir)
        {
            Console.WriteLine($"Seed: {opt.DisplaySeed}. Options: {string.Join(" ", opt.GetEnabled())}");

            string file = game == FromGame.DS3 ? @"fogdist\fog.txt" : @"dist\fog.txt";

            IDeserializer  deserializer = new DeserializerBuilder().Build();
            AnnotationData ann;

            using (var f = File.OpenText(file)) ann = deserializer.Deserialize <AnnotationData>(f);
            ann.SetGame(game);

            Events events = null;

            if (game == FromGame.DS3)
            {
                using (var f = File.OpenText(@"fogdist\locations.txt")) ann.Locations = deserializer.Deserialize <AnnotationData.FogLocations>(f);
                events = new Events(@"fogdist\Base\ds3-common.emedf.json");
            }

            Graph g = new Graph();

            g.Construct(opt, ann);

            ItemReader.Result item = new ItemReader().FindItems(opt, ann, g, events, gameDir, game);
            Console.WriteLine(item.Randomized ? $"Key item hash: {item.ItemHash}" : "No key items randomized");
            Console.WriteLine();

            new GraphConnector().Connect(opt, g, ann);

            // Actual dryruns stop short of writing modified files
            if (opt["bonedryrun"])
            {
                return(item);
            }

            Console.WriteLine();
            if (game == FromGame.DS3)
            {
                EventConfig eventConfig;
                using (var f = File.OpenText(@"fogdist\events.txt")) eventConfig = deserializer.Deserialize <EventConfig>(f);

                if (opt["eventsyaml"] || opt["events"])
                {
                    new GenerateConfig().WriteEventConfig(ann, events, opt);
                    return(item);
                }
                new GameDataWriter3().Write(opt, ann, g, gameDir, outDir, events, eventConfig);
            }
            else
            {
                if (opt["dryrun"])
                {
                    Console.WriteLine("Success (dry run)");
                    return(item);
                }
                new GameDataWriter().Write(opt, ann, g, gameDir, game);
            }
            return(item);
        }
Esempio n. 2
0
 private void UpdateOptions(object sender, EventArgs e)
 {
     ReadControlFlags(this);
     Properties.Settings.Default.Options = string.Join(" ", options.GetEnabled());
     Properties.Settings.Default.Save();
 }