Description | A script to extract a layer from the design map, so that it may be separately viewed, edited, exported, etc. |
Author | Aaron |
Created | 2010/05/24 |
Updated | 2016/05/12 |
Requires | L3DT v2.9 beta 2 or later |
Download | DM_GetLayer.zs |
// Author: A. Torpy
// Updated: 16 May 2016
hvar hDM
set hDM <GetMap "DM">
assert <cast bool <map.GetWidth hDM>> "Design map not initialised!"
// allow user to select layer
combosel CS
combosel.Init &CS "Altitude|PeakNoise|FracNoise|Cliffs|Erosion|Lakes|Climate|SpecType|SpecParam|" "Altitude" NULL
if <not <EditUI &CS "Select DM layer">>
return 0
endif
// determine layer ID
int LayerID
set LayerID -1
string LayerName
string PaletteName
set PaletteName "Greyscale"
set LayerName <combosel.GetCurSelA &CS>
if <iseq 0 <strcmp LayerName "Altitude">>
set LayerID 0
elseif <iseq 0 <strcmp LayerName "PeakNoise">>
set LayerID 1
elseif <iseq 0 <strcmp LayerName "FracNoise">>
set LayerID 2
elseif <iseq 0 <strcmp LayerName "Cliffs">>
set LayerID 3
elseif <iseq 0 <strcmp LayerName "Erosion">>
set LayerID 4
set PaletteName "EGA-VGA"
elseif <iseq 0 <strcmp LayerName "Lakes">>
set LayerID 5
set PaletteName "Blue"
elseif <iseq 0 <strcmp LayerName "Climate">>
set LayerID 6
set PaletteName "EGA-VGA"
elseif <iseq 0 <strcmp LayerName "SpecType">>
set LayerID 7
set PaletteName "EGA-VGA"
elseif <iseq 0 <strcmp LayerName "SpecParam">>
set LayerID 8
set PaletteName "EGA-VGA"
else
assert false "Invalid layer selection!"
endif
// get or create the map layer
string MapName
set MapName <strcat "DM-" LayerName>
hvar hLayer
set hLayer <GetMap MapName>
if <not hLayer>
set hLayer <project.CreateMap MapName>
endif
assert hLayer "Can neither get nor create map layer!"
// free layer if initialised
if <map.GetWidth hLayer>
map.Free hLayer
endif
assert <calc.DM.GetLayer hDM hLayer LayerID> "Cannot extract design map layer!"
// set the display palette
hvar hSettings
set hSettings <project.GetSettingsList>
if hSettings
hvar hStr
set hStr <varlist.GetOrCreateItem hSettings string <strcat <strcat "MapViewOptions." MapName> ".IndexedPalette">>
set *hStr PaletteName
endif
// and now show & edit the map layer
view.ShowMap MapName