/* CMD: MagTerr
 * Magnet Terrain Generator By Bony
 */


address "LWModelerARexx.port"
call addlib "LWModelerARexx.port", 0
SIGNAL ON ERROR
SIGNAL ON SYNTAX
call addlib "rexxsupport.library", 0, -30, 0
call addlib "rexxmathlib.library", 0, -30, 0
sysnam = ' '
version = ''
call random(,,time('s'))
/* Set up requester */
call req_begin ("Bony's Magnet Terrain Generator")

id_TW = req_addcontrol("Terrain Width", 'n')
id_TL = req_addcontrol("Terrain Length", 'n')
id_WS = req_addcontrol("Width Segments", 'n')
id_LS = req_addcontrol("Length Segments", 'n')
id_MR = req_addcontrol("Max. Peak Radius", 'n')
id_MS = req_addcontrol("Peak Height", 'CH', 'Low Medium High')
id_IT = req_addcontrol("No. of Peaks", 'n')

call req_setval id_TW, 20
call req_setval id_TL, 20
call req_setval id_WS, 40
call req_setval id_LS, 40
call req_setval id_MR, 2
call req_setval id_MS, 1
call req_setval id_IT, 10

/* Post requester, exit on cancel. */
if (~req_post()) then do
    call req_end
    exit
end
req=1

/* Get input from Requester */
Twidth = req_getval(id_TW)
Tlength = req_getval(id_TL)
WidthSeg = req_getval(id_WS)
LengthSeg = req_getval(id_LS)
MagRad = req_getval(id_MR)
MagStrength = req_getval(id_MS)
itr = req_getval(id_IT)

if Twidth < 1 then do
        Twidth = 1
call req_setval id_TW, 1
end
if Tlength < 1 then do
        Tlength = 1
call req_setval id_TL, 1
end
if WidthSeg < 1 then do
        WidthSeg = 1
call req_setval id_WS, 1
end
if LengthSeg < 1 then do
        LengthSeg = 1
call req_setval id_LS, 1
end
if MagRad < 1 then do
        Magrad = 1
end
if MagRad > 999 then do
        Magrad = 999
call req_setval id_MR, 1
end
if Itr < 1 then do
        itr = 1
call req_setval id_IT, 1
end

say twidth
say tlength
say widthseg
say lengthseg
say magrad

req=0
call req_end

/* Done Getting Data! */

/* Make Box */
NX = ((twidth / 2) * -1)
NZ = ((tlength / 2) * -1)
PX = twidth / 2
PZ = Tlength / 2
WS = widthseg
LS = lengthseg

MBSTR="( l[0,0,0] h["||PX||",0,"||PZ||"] n["||WS||",0,"||LS"])"

do
          MAKEBOX||MBSTR
end

say MBSTR
if magstrength = 1 then do
        MS = 1
end
if magstrength = 2 then do
        MS = 10
end
if magstrength = 3 then do
        MS = 100
end

do for itr

cx = random(0,PX)
cz = random(0,PZ)
mrad = random(1,magrad)
os = (randu() * MS)
say tryit
Mstr=" c["||cx||",0,"||cz"] o[0,"||os||",0]"||" r"||mrad
say Mstr
MAGNET||Mstr
end

/* Insert stuff here! */



exit

SYNTAX:
ERROR:
  say 'Sorry, Error #'RC' on line 'SIGL' has been detected.'
  say errortext(rc)
  say sourceline(SIGL)
  t=notify(1,'!Total Bummer Dude!','!An error has been detected.','@'ErrorText(rc),'Line 'SIGL)
  if req then call req_end
  exit
