changed some behavior of how the presets worked
This commit is contained in:
@@ -426,6 +426,16 @@ func main() {
|
|||||||
}
|
}
|
||||||
var generateBtn *widget.Button
|
var generateBtn *widget.Button
|
||||||
errorStates := make(map[string]bool)
|
errorStates := make(map[string]bool)
|
||||||
|
var applyingPreset bool
|
||||||
|
var clearPresetSelection func()
|
||||||
|
markPresetDirty := func() {
|
||||||
|
if applyingPreset {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if clearPresetSelection != nil {
|
||||||
|
clearPresetSelection()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ... (other code)
|
// ... (other code)
|
||||||
|
|
||||||
@@ -455,6 +465,7 @@ func main() {
|
|||||||
detailSlider.value.AddListener(binding.NewDataListener(func() {
|
detailSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := detailSlider.value.Get()
|
val, _ := detailSlider.value.Get()
|
||||||
settings.Detail = val
|
settings.Detail = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
roughnessSlider := newNumericInputSlider(0, 100, settings.Roughness, "%.0f%%", "Roughness")
|
roughnessSlider := newNumericInputSlider(0, 100, settings.Roughness, "%.0f%%", "Roughness")
|
||||||
@@ -467,6 +478,7 @@ func main() {
|
|||||||
roughnessSlider.value.AddListener(binding.NewDataListener(func() {
|
roughnessSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := roughnessSlider.value.Get()
|
val, _ := roughnessSlider.value.Get()
|
||||||
settings.Roughness = val
|
settings.Roughness = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
// Create UI elements for controlling lake generation settings
|
// Create UI elements for controlling lake generation settings
|
||||||
lakesSlider := newNumericInputSlider(0, 15, float64(settings.Lakes), "%.0f", "Lakes")
|
lakesSlider := newNumericInputSlider(0, 15, float64(settings.Lakes), "%.0f", "Lakes")
|
||||||
@@ -479,6 +491,7 @@ func main() {
|
|||||||
lakesSlider.value.AddListener(binding.NewDataListener(func() {
|
lakesSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := lakesSlider.value.Get()
|
val, _ := lakesSlider.value.Get()
|
||||||
settings.Lakes = int(val)
|
settings.Lakes = int(val)
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
lakeSizeLowerSlider := newNumericInputSlider(1, 100, settings.LakeSizeLower, "%.0f%%", "Min Lake Size")
|
lakeSizeLowerSlider := newNumericInputSlider(1, 100, settings.LakeSizeLower, "%.0f%%", "Min Lake Size")
|
||||||
@@ -491,6 +504,7 @@ func main() {
|
|||||||
lakeSizeLowerSlider.value.AddListener(binding.NewDataListener(func() {
|
lakeSizeLowerSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := lakeSizeLowerSlider.value.Get()
|
val, _ := lakeSizeLowerSlider.value.Get()
|
||||||
settings.LakeSizeLower = val
|
settings.LakeSizeLower = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
lakeSizeUpperSlider := newNumericInputSlider(1, 100, settings.LakeSizeUpper, "%.0f%%", "Max Lake Size")
|
lakeSizeUpperSlider := newNumericInputSlider(1, 100, settings.LakeSizeUpper, "%.0f%%", "Max Lake Size")
|
||||||
@@ -503,6 +517,7 @@ func main() {
|
|||||||
lakeSizeUpperSlider.value.AddListener(binding.NewDataListener(func() {
|
lakeSizeUpperSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := lakeSizeUpperSlider.value.Get()
|
val, _ := lakeSizeUpperSlider.value.Get()
|
||||||
settings.LakeSizeUpper = val
|
settings.LakeSizeUpper = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
lakeEdgeRoughnessSlider := newNumericInputSlider(0, 100, settings.LakeEdgeRoughness, "%.0f%%", "Lake Edge Roughness")
|
lakeEdgeRoughnessSlider := newNumericInputSlider(0, 100, settings.LakeEdgeRoughness, "%.0f%%", "Lake Edge Roughness")
|
||||||
@@ -515,11 +530,13 @@ func main() {
|
|||||||
lakeEdgeRoughnessSlider.value.AddListener(binding.NewDataListener(func() {
|
lakeEdgeRoughnessSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := lakeEdgeRoughnessSlider.value.Get()
|
val, _ := lakeEdgeRoughnessSlider.value.Get()
|
||||||
settings.LakeEdgeRoughness = val
|
settings.LakeEdgeRoughness = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
lakeShapeLabel := widget.NewLabel("Lake Shape:")
|
lakeShapeLabel := widget.NewLabel("Lake Shape:")
|
||||||
lakeShapeSelect := widget.NewSelect([]string{"circle", "oval", "procedural"}, func(s string) {
|
lakeShapeSelect := widget.NewSelect([]string{"circle", "oval", "procedural"}, func(s string) {
|
||||||
settings.LakeShape = s
|
settings.LakeShape = s
|
||||||
|
markPresetDirty()
|
||||||
})
|
})
|
||||||
lakeShapeSelect.SetSelected(settings.LakeShape)
|
lakeShapeSelect.SetSelected(settings.LakeShape)
|
||||||
|
|
||||||
@@ -533,6 +550,7 @@ func main() {
|
|||||||
riversSlider.value.AddListener(binding.NewDataListener(func() {
|
riversSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := riversSlider.value.Get()
|
val, _ := riversSlider.value.Get()
|
||||||
settings.Rivers = int(val)
|
settings.Rivers = int(val)
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
minRiverWidthSlider := newNumericInputSlider(1, 100, settings.MinRiverWidth, "%.0f%%", "Min River Width")
|
minRiverWidthSlider := newNumericInputSlider(1, 100, settings.MinRiverWidth, "%.0f%%", "Min River Width")
|
||||||
@@ -545,6 +563,7 @@ func main() {
|
|||||||
minRiverWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
minRiverWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := minRiverWidthSlider.value.Get()
|
val, _ := minRiverWidthSlider.value.Get()
|
||||||
settings.MinRiverWidth = val
|
settings.MinRiverWidth = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
maxRiverWidthSlider := newNumericInputSlider(1, 100, settings.MaxRiverWidth, "%.0f%%", "Max River Width")
|
maxRiverWidthSlider := newNumericInputSlider(1, 100, settings.MaxRiverWidth, "%.0f%%", "Max River Width")
|
||||||
@@ -557,6 +576,7 @@ func main() {
|
|||||||
maxRiverWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
maxRiverWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := maxRiverWidthSlider.value.Get()
|
val, _ := maxRiverWidthSlider.value.Get()
|
||||||
settings.MaxRiverWidth = val
|
settings.MaxRiverWidth = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
riverCurvynessSlider := newNumericInputSlider(0, 100, settings.RiverCurvyness, "%.0f%%", "River Curvyness")
|
riverCurvynessSlider := newNumericInputSlider(0, 100, settings.RiverCurvyness, "%.0f%%", "River Curvyness")
|
||||||
@@ -569,6 +589,7 @@ func main() {
|
|||||||
riverCurvynessSlider.value.AddListener(binding.NewDataListener(func() {
|
riverCurvynessSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := riverCurvynessSlider.value.Get()
|
val, _ := riverCurvynessSlider.value.Get()
|
||||||
settings.RiverCurvyness = val
|
settings.RiverCurvyness = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
riverWidthVariabilitySlider := newNumericInputSlider(0, 100, settings.RiverWidthVariability, "%.0f%%", "River Width Variability")
|
riverWidthVariabilitySlider := newNumericInputSlider(0, 100, settings.RiverWidthVariability, "%.0f%%", "River Width Variability")
|
||||||
@@ -581,6 +602,7 @@ func main() {
|
|||||||
riverWidthVariabilitySlider.value.AddListener(binding.NewDataListener(func() {
|
riverWidthVariabilitySlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := riverWidthVariabilitySlider.value.Get()
|
val, _ := riverWidthVariabilitySlider.value.Get()
|
||||||
settings.RiverWidthVariability = val
|
settings.RiverWidthVariability = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
riverEdgeRoughnessSlider := newNumericInputSlider(0, 100, settings.RiverEdgeRoughness, "%.0f%%", "River Edge Roughness")
|
riverEdgeRoughnessSlider := newNumericInputSlider(0, 100, settings.RiverEdgeRoughness, "%.0f%%", "River Edge Roughness")
|
||||||
@@ -593,6 +615,7 @@ func main() {
|
|||||||
riverEdgeRoughnessSlider.value.AddListener(binding.NewDataListener(func() {
|
riverEdgeRoughnessSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := riverEdgeRoughnessSlider.value.Get()
|
val, _ := riverEdgeRoughnessSlider.value.Get()
|
||||||
settings.RiverEdgeRoughness = val
|
settings.RiverEdgeRoughness = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
minTreeSizeSlider := newNumericInputSliderWithStep(minTreeSizePercent, maxTreeSizePercent, settings.MinTreeSize, treeSizePercentStep, "%.1f%%", "Min Tree Size")
|
minTreeSizeSlider := newNumericInputSliderWithStep(minTreeSizePercent, maxTreeSizePercent, settings.MinTreeSize, treeSizePercentStep, "%.1f%%", "Min Tree Size")
|
||||||
@@ -605,6 +628,7 @@ func main() {
|
|||||||
minTreeSizeSlider.value.AddListener(binding.NewDataListener(func() {
|
minTreeSizeSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := minTreeSizeSlider.value.Get()
|
val, _ := minTreeSizeSlider.value.Get()
|
||||||
settings.MinTreeSize = val
|
settings.MinTreeSize = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
maxTreeSizeSlider := newNumericInputSliderWithStep(minTreeSizePercent, maxTreeSizePercent, settings.MaxTreeSize, treeSizePercentStep, "%.1f%%", "Max Tree Size")
|
maxTreeSizeSlider := newNumericInputSliderWithStep(minTreeSizePercent, maxTreeSizePercent, settings.MaxTreeSize, treeSizePercentStep, "%.1f%%", "Max Tree Size")
|
||||||
@@ -617,6 +641,7 @@ func main() {
|
|||||||
maxTreeSizeSlider.value.AddListener(binding.NewDataListener(func() {
|
maxTreeSizeSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := maxTreeSizeSlider.value.Get()
|
val, _ := maxTreeSizeSlider.value.Get()
|
||||||
settings.MaxTreeSize = val
|
settings.MaxTreeSize = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
treeCoverageSlider := newNumericInputSlider(1, 100, settings.TreeCoverage, "%.0f%%", "Tree Coverage")
|
treeCoverageSlider := newNumericInputSlider(1, 100, settings.TreeCoverage, "%.0f%%", "Tree Coverage")
|
||||||
@@ -629,6 +654,7 @@ func main() {
|
|||||||
treeCoverageSlider.value.AddListener(binding.NewDataListener(func() {
|
treeCoverageSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := treeCoverageSlider.value.Get()
|
val, _ := treeCoverageSlider.value.Get()
|
||||||
settings.TreeCoverage = val
|
settings.TreeCoverage = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
treeClumpinessSlider := newNumericInputSlider(0, 100, settings.TreeClumpiness, "%.0f%%", "Tree Clumpiness")
|
treeClumpinessSlider := newNumericInputSlider(0, 100, settings.TreeClumpiness, "%.0f%%", "Tree Clumpiness")
|
||||||
@@ -641,6 +667,7 @@ func main() {
|
|||||||
treeClumpinessSlider.value.AddListener(binding.NewDataListener(func() {
|
treeClumpinessSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := treeClumpinessSlider.value.Get()
|
val, _ := treeClumpinessSlider.value.Get()
|
||||||
settings.TreeClumpiness = val
|
settings.TreeClumpiness = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
minRoadWidthSlider := newNumericInputSliderWithStep(minRoadWidthPercent, maxRoadWidthPercent, settings.MinRoadWidth, roadWidthPercentStep, "%.1f%%", "Min Road Width")
|
minRoadWidthSlider := newNumericInputSliderWithStep(minRoadWidthPercent, maxRoadWidthPercent, settings.MinRoadWidth, roadWidthPercentStep, "%.1f%%", "Min Road Width")
|
||||||
minRoadWidthSlider.entry.OnChanged = func(s string) {
|
minRoadWidthSlider.entry.OnChanged = func(s string) {
|
||||||
@@ -652,6 +679,7 @@ func main() {
|
|||||||
minRoadWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
minRoadWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := minRoadWidthSlider.value.Get()
|
val, _ := minRoadWidthSlider.value.Get()
|
||||||
settings.MinRoadWidth = val
|
settings.MinRoadWidth = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
maxRoadWidthSlider := newNumericInputSliderWithStep(minRoadWidthPercent, maxRoadWidthPercent, settings.MaxRoadWidth, roadWidthPercentStep, "%.1f%%", "Max Road Width")
|
maxRoadWidthSlider := newNumericInputSliderWithStep(minRoadWidthPercent, maxRoadWidthPercent, settings.MaxRoadWidth, roadWidthPercentStep, "%.1f%%", "Max Road Width")
|
||||||
@@ -664,6 +692,7 @@ func main() {
|
|||||||
maxRoadWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
maxRoadWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := maxRoadWidthSlider.value.Get()
|
val, _ := maxRoadWidthSlider.value.Get()
|
||||||
settings.MaxRoadWidth = val
|
settings.MaxRoadWidth = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
buildingsPerRoadSlider := newNumericInputSlider(1, 20, float64(settings.BuildingsPerRoad), "%.0f", "Buildings Per Road")
|
buildingsPerRoadSlider := newNumericInputSlider(1, 20, float64(settings.BuildingsPerRoad), "%.0f", "Buildings Per Road")
|
||||||
@@ -676,6 +705,7 @@ func main() {
|
|||||||
buildingsPerRoadSlider.value.AddListener(binding.NewDataListener(func() {
|
buildingsPerRoadSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := buildingsPerRoadSlider.value.Get()
|
val, _ := buildingsPerRoadSlider.value.Get()
|
||||||
settings.BuildingsPerRoad = int(val)
|
settings.BuildingsPerRoad = int(val)
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
roadExitsSlider := newNumericInputSlider(0, 100, float64(settings.RoadExits), "%.0f", "Road Exits")
|
roadExitsSlider := newNumericInputSlider(0, 100, float64(settings.RoadExits), "%.0f", "Road Exits")
|
||||||
@@ -688,6 +718,7 @@ func main() {
|
|||||||
roadExitsSlider.value.AddListener(binding.NewDataListener(func() {
|
roadExitsSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := roadExitsSlider.value.Get()
|
val, _ := roadExitsSlider.value.Get()
|
||||||
settings.RoadExits = int(val)
|
settings.RoadExits = int(val)
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
roadCurvynessSlider := newNumericInputSlider(0, 100, settings.RoadCurvyness, "%.0f%%", "Road Curvyness")
|
roadCurvynessSlider := newNumericInputSlider(0, 100, settings.RoadCurvyness, "%.0f%%", "Road Curvyness")
|
||||||
@@ -700,6 +731,7 @@ func main() {
|
|||||||
roadCurvynessSlider.value.AddListener(binding.NewDataListener(func() {
|
roadCurvynessSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := roadCurvynessSlider.value.Get()
|
val, _ := roadCurvynessSlider.value.Get()
|
||||||
settings.RoadCurvyness = val
|
settings.RoadCurvyness = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
roadDistributionSlider := newNumericInputSlider(0, 100, settings.RoadDistribution, "%.0f%%", "Distribution")
|
roadDistributionSlider := newNumericInputSlider(0, 100, settings.RoadDistribution, "%.0f%%", "Distribution")
|
||||||
@@ -712,6 +744,7 @@ func main() {
|
|||||||
roadDistributionSlider.value.AddListener(binding.NewDataListener(func() {
|
roadDistributionSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := roadDistributionSlider.value.Get()
|
val, _ := roadDistributionSlider.value.Get()
|
||||||
settings.RoadDistribution = val
|
settings.RoadDistribution = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
minRoadAngleSlider := newNumericInputSlider(0, 180, settings.MinRoadAngle, "%.0f°", "Minimum Road Angle")
|
minRoadAngleSlider := newNumericInputSlider(0, 180, settings.MinRoadAngle, "%.0f°", "Minimum Road Angle")
|
||||||
@@ -724,6 +757,7 @@ func main() {
|
|||||||
minRoadAngleSlider.value.AddListener(binding.NewDataListener(func() {
|
minRoadAngleSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := minRoadAngleSlider.value.Get()
|
val, _ := minRoadAngleSlider.value.Get()
|
||||||
settings.MinRoadAngle = val
|
settings.MinRoadAngle = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
minWallWidthSlider := newNumericInputSliderWithStep(minWallWidthPercent, maxWallWidthPercent, settings.MinWallWidth, wallWidthPercentStep, "%.1f%%", "Min Wall Width")
|
minWallWidthSlider := newNumericInputSliderWithStep(minWallWidthPercent, maxWallWidthPercent, settings.MinWallWidth, wallWidthPercentStep, "%.1f%%", "Min Wall Width")
|
||||||
@@ -736,6 +770,7 @@ func main() {
|
|||||||
minWallWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
minWallWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := minWallWidthSlider.value.Get()
|
val, _ := minWallWidthSlider.value.Get()
|
||||||
settings.MinWallWidth = val
|
settings.MinWallWidth = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
maxWallWidthSlider := newNumericInputSliderWithStep(minWallWidthPercent, maxWallWidthPercent, settings.MaxWallWidth, wallWidthPercentStep, "%.1f%%", "Max Wall Width")
|
maxWallWidthSlider := newNumericInputSliderWithStep(minWallWidthPercent, maxWallWidthPercent, settings.MaxWallWidth, wallWidthPercentStep, "%.1f%%", "Max Wall Width")
|
||||||
@@ -748,6 +783,7 @@ func main() {
|
|||||||
maxWallWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
maxWallWidthSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := maxWallWidthSlider.value.Get()
|
val, _ := maxWallWidthSlider.value.Get()
|
||||||
settings.MaxWallWidth = val
|
settings.MaxWallWidth = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
numWallsSlider := newNumericInputSlider(0, 5, float64(settings.NumWalls), "%.0f", "Number of Walls")
|
numWallsSlider := newNumericInputSlider(0, 5, float64(settings.NumWalls), "%.0f", "Number of Walls")
|
||||||
@@ -760,6 +796,7 @@ func main() {
|
|||||||
numWallsSlider.value.AddListener(binding.NewDataListener(func() {
|
numWallsSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := numWallsSlider.value.Get()
|
val, _ := numWallsSlider.value.Get()
|
||||||
settings.NumWalls = int(val)
|
settings.NumWalls = int(val)
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
cityCoverageSlider := newNumericInputSlider(1, 100, settings.CityCoverage, "%.0f%%", "City Coverage")
|
cityCoverageSlider := newNumericInputSlider(1, 100, settings.CityCoverage, "%.0f%%", "City Coverage")
|
||||||
@@ -772,6 +809,7 @@ func main() {
|
|||||||
cityCoverageSlider.value.AddListener(binding.NewDataListener(func() {
|
cityCoverageSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := cityCoverageSlider.value.Get()
|
val, _ := cityCoverageSlider.value.Get()
|
||||||
settings.CityCoverage = val
|
settings.CityCoverage = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
wallCurvynessSlider := newNumericInputSlider(0, 100, settings.WallCurvyness, "%.0f%%", "Wall Curvyness")
|
wallCurvynessSlider := newNumericInputSlider(0, 100, settings.WallCurvyness, "%.0f%%", "Wall Curvyness")
|
||||||
@@ -784,10 +822,12 @@ func main() {
|
|||||||
wallCurvynessSlider.value.AddListener(binding.NewDataListener(func() {
|
wallCurvynessSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := wallCurvynessSlider.value.Get()
|
val, _ := wallCurvynessSlider.value.Get()
|
||||||
settings.WallCurvyness = val
|
settings.WallCurvyness = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
showTurretsCheck := widget.NewCheck("Show Turrets", func(v bool) {
|
showTurretsCheck := widget.NewCheck("Show Turrets", func(v bool) {
|
||||||
settings.ShowTurrets = v
|
settings.ShowTurrets = v
|
||||||
|
markPresetDirty()
|
||||||
})
|
})
|
||||||
showTurretsCheck.SetChecked(settings.ShowTurrets)
|
showTurretsCheck.SetChecked(settings.ShowTurrets)
|
||||||
|
|
||||||
@@ -801,11 +841,13 @@ func main() {
|
|||||||
turretSizeSlider.value.AddListener(binding.NewDataListener(func() {
|
turretSizeSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := turretSizeSlider.value.Get()
|
val, _ := turretSizeSlider.value.Get()
|
||||||
settings.TurretSize = val
|
settings.TurretSize = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
turretShapeLabel := widget.NewLabel("Turret Shape:")
|
turretShapeLabel := widget.NewLabel("Turret Shape:")
|
||||||
turretShapeSelect := widget.NewSelect([]string{"circular", "square"}, func(s string) {
|
turretShapeSelect := widget.NewSelect([]string{"circular", "square"}, func(s string) {
|
||||||
settings.TurretShape = s
|
settings.TurretShape = s
|
||||||
|
markPresetDirty()
|
||||||
})
|
})
|
||||||
turretShapeSelect.SetSelected(settings.TurretShape)
|
turretShapeSelect.SetSelected(settings.TurretShape)
|
||||||
|
|
||||||
@@ -819,6 +861,7 @@ func main() {
|
|||||||
turretSpacingSlider.value.AddListener(binding.NewDataListener(func() {
|
turretSpacingSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := turretSpacingSlider.value.Get()
|
val, _ := turretSpacingSlider.value.Get()
|
||||||
settings.TurretSpacing = val
|
settings.TurretSpacing = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
gateSpacingSlider := newNumericInputSlider(0, 100, settings.GateSpacing, "%.0f%%", "Gate Spacing")
|
gateSpacingSlider := newNumericInputSlider(0, 100, settings.GateSpacing, "%.0f%%", "Gate Spacing")
|
||||||
@@ -831,6 +874,7 @@ func main() {
|
|||||||
gateSpacingSlider.value.AddListener(binding.NewDataListener(func() {
|
gateSpacingSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := gateSpacingSlider.value.Get()
|
val, _ := gateSpacingSlider.value.Get()
|
||||||
settings.GateSpacing = val
|
settings.GateSpacing = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
turretControls := container.NewVBox(
|
turretControls := container.NewVBox(
|
||||||
@@ -849,6 +893,7 @@ func main() {
|
|||||||
} else {
|
} else {
|
||||||
turretControls.Hide()
|
turretControls.Hide()
|
||||||
}
|
}
|
||||||
|
markPresetDirty()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create UI elements for error display and action buttons
|
// Create UI elements for error display and action buttons
|
||||||
@@ -1284,6 +1329,7 @@ func main() {
|
|||||||
numBuildingsSlider.value.AddListener(binding.NewDataListener(func() {
|
numBuildingsSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := numBuildingsSlider.value.Get()
|
val, _ := numBuildingsSlider.value.Get()
|
||||||
settings.NumBuildings = int(val)
|
settings.NumBuildings = int(val)
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
minBuildingSizeSlider := newNumericInputSliderWithStep(minBuildingSizePercent, maxBuildingSizePercent, settings.MinBuildingSize, buildingSizePercentStep, "%.1f%%", "Min Building Size")
|
minBuildingSizeSlider := newNumericInputSliderWithStep(minBuildingSizePercent, maxBuildingSizePercent, settings.MinBuildingSize, buildingSizePercentStep, "%.1f%%", "Min Building Size")
|
||||||
@@ -1296,6 +1342,7 @@ func main() {
|
|||||||
minBuildingSizeSlider.value.AddListener(binding.NewDataListener(func() {
|
minBuildingSizeSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := minBuildingSizeSlider.value.Get()
|
val, _ := minBuildingSizeSlider.value.Get()
|
||||||
settings.MinBuildingSize = val
|
settings.MinBuildingSize = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
maxBuildingSizeSlider := newNumericInputSliderWithStep(minBuildingSizePercent, maxBuildingSizePercent, settings.MaxBuildingSize, buildingSizePercentStep, "%.1f%%", "Max Building Size")
|
maxBuildingSizeSlider := newNumericInputSliderWithStep(minBuildingSizePercent, maxBuildingSizePercent, settings.MaxBuildingSize, buildingSizePercentStep, "%.1f%%", "Max Building Size")
|
||||||
@@ -1308,6 +1355,7 @@ func main() {
|
|||||||
maxBuildingSizeSlider.value.AddListener(binding.NewDataListener(func() {
|
maxBuildingSizeSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := maxBuildingSizeSlider.value.Get()
|
val, _ := maxBuildingSizeSlider.value.Get()
|
||||||
settings.MaxBuildingSize = val
|
settings.MaxBuildingSize = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
buildingDistributionSlider := newNumericInputSlider(0, 100, settings.BuildingDistribution, "%.0f%%", "Building Distribution")
|
buildingDistributionSlider := newNumericInputSlider(0, 100, settings.BuildingDistribution, "%.0f%%", "Building Distribution")
|
||||||
@@ -1320,11 +1368,13 @@ func main() {
|
|||||||
buildingDistributionSlider.value.AddListener(binding.NewDataListener(func() {
|
buildingDistributionSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := buildingDistributionSlider.value.Get()
|
val, _ := buildingDistributionSlider.value.Get()
|
||||||
settings.BuildingDistribution = val
|
settings.BuildingDistribution = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
buildingShapeLabel := widget.NewLabel("Building Shape:")
|
buildingShapeLabel := widget.NewLabel("Building Shape:")
|
||||||
buildingShapeSelect := widget.NewSelect([]string{"squares", "circles", "rectangles", "mixed", "procedural"}, func(s string) {
|
buildingShapeSelect := widget.NewSelect([]string{"squares", "circles", "rectangles", "mixed", "procedural"}, func(s string) {
|
||||||
settings.BuildingShape = s
|
settings.BuildingShape = s
|
||||||
|
markPresetDirty()
|
||||||
})
|
})
|
||||||
buildingShapeSelect.SetSelected(settings.BuildingShape)
|
buildingShapeSelect.SetSelected(settings.BuildingShape)
|
||||||
|
|
||||||
@@ -1360,6 +1410,7 @@ func main() {
|
|||||||
minBuildingComplexitySlider.value.AddListener(binding.NewDataListener(func() {
|
minBuildingComplexitySlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := minBuildingComplexitySlider.value.Get()
|
val, _ := minBuildingComplexitySlider.value.Get()
|
||||||
settings.MinBuildingComplexity = int(val)
|
settings.MinBuildingComplexity = int(val)
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
maxBuildingComplexitySlider := newNumericInputSlider(1, 6, float64(settings.MaxBuildingComplexity), "%.0f", "Max Building Complexity")
|
maxBuildingComplexitySlider := newNumericInputSlider(1, 6, float64(settings.MaxBuildingComplexity), "%.0f", "Max Building Complexity")
|
||||||
@@ -1372,6 +1423,7 @@ func main() {
|
|||||||
maxBuildingComplexitySlider.value.AddListener(binding.NewDataListener(func() {
|
maxBuildingComplexitySlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := maxBuildingComplexitySlider.value.Get()
|
val, _ := maxBuildingComplexitySlider.value.Get()
|
||||||
settings.MaxBuildingComplexity = int(val)
|
settings.MaxBuildingComplexity = int(val)
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
buildingComplexityRatioSlider := newNumericInputSlider(0, 100, settings.BuildingComplexityRatio, "%.0f%%", "Building Complexity Ratio")
|
buildingComplexityRatioSlider := newNumericInputSlider(0, 100, settings.BuildingComplexityRatio, "%.0f%%", "Building Complexity Ratio")
|
||||||
@@ -1384,6 +1436,7 @@ func main() {
|
|||||||
buildingComplexityRatioSlider.value.AddListener(binding.NewDataListener(func() {
|
buildingComplexityRatioSlider.value.AddListener(binding.NewDataListener(func() {
|
||||||
val, _ := buildingComplexityRatioSlider.value.Get()
|
val, _ := buildingComplexityRatioSlider.value.Get()
|
||||||
settings.BuildingComplexityRatio = val
|
settings.BuildingComplexityRatio = val
|
||||||
|
markPresetDirty()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
proceduralContainer := container.NewVBox(
|
proceduralContainer := container.NewVBox(
|
||||||
@@ -1430,6 +1483,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateRatioSliders()
|
updateRatioSliders()
|
||||||
|
markPresetDirty()
|
||||||
}
|
}
|
||||||
|
|
||||||
circleRatioSlider.OnChanged = func(val float64) {
|
circleRatioSlider.OnChanged = func(val float64) {
|
||||||
@@ -1460,6 +1514,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateRatioSliders()
|
updateRatioSliders()
|
||||||
|
markPresetDirty()
|
||||||
}
|
}
|
||||||
|
|
||||||
rectangleRatioSlider.OnChanged = func(val float64) {
|
rectangleRatioSlider.OnChanged = func(val float64) {
|
||||||
@@ -1491,6 +1546,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateRatioSliders()
|
updateRatioSliders()
|
||||||
|
markPresetDirty()
|
||||||
}
|
}
|
||||||
|
|
||||||
buildingShapeSelect.OnChanged = func(s string) {
|
buildingShapeSelect.OnChanged = func(s string) {
|
||||||
@@ -1505,6 +1561,7 @@ func main() {
|
|||||||
proceduralContainer.Hide()
|
proceduralContainer.Hide()
|
||||||
ratioContainer.Hide()
|
ratioContainer.Hide()
|
||||||
}
|
}
|
||||||
|
markPresetDirty()
|
||||||
}
|
}
|
||||||
// Initial visibility check
|
// Initial visibility check
|
||||||
if settings.BuildingShape == "mixed" {
|
if settings.BuildingShape == "mixed" {
|
||||||
@@ -1612,15 +1669,27 @@ func main() {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
applyingPreset = true
|
||||||
imported, err := loadEmbeddedPreset(path)
|
imported, err := loadEmbeddedPreset(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
applyingPreset = false
|
||||||
dialog.ShowError(err, w)
|
dialog.ShowError(err, w)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
imported.Seed = settings.Seed
|
imported.Seed = settings.Seed
|
||||||
applySettingsToUI(imported)
|
applySettingsToUI(imported)
|
||||||
|
time.AfterFunc(50*time.Millisecond, func() {
|
||||||
|
fyne.Do(func() {
|
||||||
|
applyingPreset = false
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
presetSelect.SetSelected("No Preset")
|
presetSelect.SetSelected("No Preset")
|
||||||
|
clearPresetSelection = func() {
|
||||||
|
if presetSelect.Selected != "No Preset" {
|
||||||
|
presetSelect.SetSelected("No Preset")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
buildingsTab := container.NewTabItem("Buildings", container.NewVBox(
|
buildingsTab := container.NewTabItem("Buildings", container.NewVBox(
|
||||||
numBuildingsSlider,
|
numBuildingsSlider,
|
||||||
|
|||||||
Reference in New Issue
Block a user