public ManualZoneGenerator CreateManualGenerator()
    {
        var gen = new ManualZoneGenerator();

        manualZoneGenerators.Add(gen);
        return(gen);
    }
    public ZoneDot CreateDot(int index1, ZoneGenerator gen)
    {
        RectTransform rectTransform = columnTransforms[index1];
        ZoneDot       zoneDot       = UnityEngine.Object.Instantiate <ZoneDot>(bar.zoneDotPrefab, bar.transform.position, bar.transform.rotation, rectTransform.transform);

        zoneDot.stepNum         = index1;
        zoneDot.worldBar        = bar;
        zoneDot.idCtrl          = bar.idCtrl;
        zoneDot.btnCtrl         = bar.btnCtrl;
        zoneDot.transform.name  = "ZoneDot - Step: " + (object)index1;
        zoneDot.verticalSpacing = bar.defaultVerticalSpacing + gen.verticalSpacing;
        var step = bar.currentZoneSteps[index1];

        if (!gen.addFirst)
        {
            step.Add(zoneDot);
        }
        else
        {
            step.Insert(0, zoneDot);
        }
        bar.currentZoneDots.Add(zoneDot);
        if (gen.relativeTransforms)
        {
            if (step.Count == 1)
            {
                zoneDot.transform.position = rectTransform.position;
            }
            else
            {
                if (gen.addFirst)
                {
                    zoneDot.transform.position = step[1].transform.position + new Vector3(0.0f, zoneDot.verticalSpacing * bar.rect.localScale.y, 0.0f);
                }
                else
                {
                    zoneDot.transform.position = step[step.Count - 2].transform.position - new Vector3(0.0f, zoneDot.verticalSpacing * bar.rect.localScale.y, 0.0f);
                }
            }
        }
        else
        {
            for (int i = 0; i < step.Count; i++)
            {
                var dot = step[i];
                dot.transform.localPosition = new Vector3(0.0f, ((float)(step.Count - 1) / 2f - (float)(i)) * zoneDot.verticalSpacing * rectTransform.localScale.y, 0.0f);
            }
        }


        if (gen.zoneType == ZoneType.World && gen is ManualZoneGenerator)
        {
            ManualZoneGenerator manual = (ManualZoneGenerator)gen;
            //Default world stuff
            if (manual.automaticWorldSelection)
            {
                if (stringList.Count > 0)
                {
                    int index3 = bar.runCtrl.NextWorldRand(0, stringList.Count);
                    zoneDot.worldName = stringList[index3];
                    stringList.Remove(stringList[index3]);
                }
                else
                {
                    if (bar.runCtrl.currentRun.bossExecutions >= 7)
                    {
                        zoneDot.worldName = "Genocide";
                        zoneDot.imageName = "WorldWasteland";
                    }
                    else if (bar.runCtrl.currentRun.bossExecutions >= 1)
                    {
                        zoneDot.worldName = "Normal";
                        zoneDot.imageName = "WorldWasteland";
                    }
                    else
                    {
                        zoneDot.worldName = "Pacifist";
                        zoneDot.imageName = "WorldWasteland";
                    }
                }
                zoneDot.world     = bar.runCtrl.worlds[zoneDot.worldName];
                zoneDot.imageName = zoneDot.world.iconName;
            }
        }
        EditDotWithGen(zoneDot, gen);

        return(zoneDot);
    }