home *** CD-ROM | disk | FTP | other *** search
/ CD-ROM Today - The Disc! 9 / cdrt09.iso / pc / putnam / pnmba / shared.dir / 00772_Script_772 < prev   
Text File  |  1995-01-13  |  30KB  |  913 lines

  1. -- "A" Main 8/26
  2. on initBA
  3.   global gHardDrivePath,gAMoviePath,gBMediaPath,gCMediaPath,gDMediaPath,gEMediaPath
  4.   global gHDMovieList,gMovieList,gThisLoc,gLastLoc
  5.   global gDovePuppetNum,gWandFlag,gWandNum,gWandSnd,gSystemCursor,gCPUSpeed
  6.   global gLoudness,gClickSnd,gMagicSnd,gFoundLetters,gGroveLocNum
  7.   global gReturnMarker,gRegionLine,gMouseX,gMouseY,gHideOffset
  8.   global gThisTaskNum,gHintLevel,gTaskClickOns,gTCOnLimit,gTaskTicks,gTaskTicksLimit
  9.   global gDoveRestNum,gDoveFinal,gDoveVStart,gDoveHStart,gAnimPause
  10.   global gStartTicks,gAudioStart,gShortCutsFlag
  11.   global gMsgeFlag,gStartLoad,gFreeMemKb
  12.   global gDoveBubbleChannel -- used for separate bubble animation channel.
  13.   global gSaidThat -- used in CM
  14.   
  15.   wandToggle 0    
  16.   cursor 4
  17.   if the machineType <> 256 then
  18.     --    set volName        = "sampler:"
  19.     set volName        = "@:"
  20.     set gAMoviePath    = the pathName
  21.   else
  22.     --    set volName        = "sampler:"
  23.     set volName        = "@:"
  24.     set gAMoviePath    = volName
  25.   end if
  26.   -- set gBMediaPath        = volName & "BA:b_Media:"
  27.   -- set gCMediaPath        = volName & "BA:c_Media:"
  28.   -- set gDMediaPath        = volName & "BA:d_Media:"
  29.   -- set gEMediaPath        = volName & "BA:e_Media:"
  30.   
  31.   set gBMediaPath        = "@:" & "b_Media:"
  32.   set gCMediaPath        = the pathName & "c_Media:"
  33.   set gDMediaPath        = "@:" & "d_Media:"
  34.   set gEMediaPath        = the pathName & "e_Media:"
  35.   
  36.   set gThisLoc           = empty
  37.   set gLastLoc           = empty
  38.   set gMovieList         = "¼
  39. L01_CW,L02_NY,L03_NK,L04_NB,L05_NS,L06_CM,L07_FB,L08_AM,L09_MT,¼
  40. L10_CP,L11_GE,L12_GA,L13_GB,L14_GC,L15_TC,L16_AY,L17_AK,L18_WR,L19_HR,¼
  41. L20_RB,Chap1,Chap2B,Chap4,Chap5B,Chap8" 
  42.   set gRegionLine        = empty
  43.   set gReturnMarker      = empty
  44.   set gStartTicks        = the ticks                  
  45.   set gAudioStart        = 0
  46.   set gFoundLetters      = string(random(9))
  47.   set gDovePuppetNum     = 23
  48.   set gWandSnd           = "Ding"
  49.   set gClickSnd          = "WoodClick"
  50.   set gMagicSnd          = "Magic"
  51.   set gShortCutsFlag     = 0
  52.   set gLoudness          = the soundLevel  
  53.   set gSystemCursor      = 0
  54.   set gWandNum           = 0
  55.   set    gGroveLocNum            = empty
  56.   set    gDoveVStart             = 1000 
  57.   set    gDoveHStart             = 1000
  58.   set    gDoveRestNum            = empty
  59.   set    gDoveFinal              = empty
  60.   set    gAnimPause              = 3
  61.   set    gTaskClickOns           = 0    
  62.   set    gTaskTicks              = 0    
  63.   set    gTCOnLimit              = 6             -- set here only  6 clicks
  64.   set    gTaskTicksLimit         = 7200          -- set here only  2 min
  65.   set    gHintLevel              = 0
  66.   set    gHideOffset             = 10000
  67.   set    gMouseX                 = 0
  68.   set    gMouseY                 = 0
  69.   set    gThisTaskNum            = 0
  70.   initArrays
  71.   set the switchColorDepth       = 1
  72.   set    gDoveBubbleChannel      = 21  -- change this in init scripts or initlocs.
  73.   set    gSaidThat               = 0    -- used to track entering sentence in CM
  74.   --Debug remove below here
  75.   if the shiftDown then
  76.     set gMsgeFlag  = 1
  77.     puppetSprite 21, 1 
  78.   else
  79.     set gMsgeFlag = 0
  80.   end if
  81.   --set the keydownScript     = "checkKey"
  82.   set gStartLoad         = the ticks
  83.   set gFreeMemKb         = the freeBytes/1024
  84.   checkSystem
  85.   -- end initBA
  86.   
  87. on checkSystem
  88.   global gCPUSpeed
  89.   set qtPresent = quickTimePresent()
  90.   set bitDepth = the colorDepth
  91.   --set speedRating = checkCPUSpeed()
  92.   --if speedRating > 35 then
  93.   set machineString = string(the machineType)
  94.   set upperSlowList = "19,21,22,23,25,27,30,31,32,35,37,42,43,46,48,53,54,69,82"
  95.   if (the machineType < 18 and the machineType <> 11) or upperSlowList contains machineString then
  96.     set gCPUSpeed      = #Slow
  97.   else
  98.     set gCPUSpeed      = #Fast
  99.   end if
  100.   if qtPresent = 0 then
  101.     cursor -1 
  102.     goMName "QTWarning"
  103.   else if bitDepth <> 8  then
  104.     --    cursor -1
  105.     --    goMName "colorWarning"
  106.   end if
  107.   putMsge "checkSystem : qt,bits,CPU,speed" && qtPresent && bitDepth && the machineType && gCPUSpeed
  108.   
  109. on checkCPUSpeed
  110.   startTimer
  111.   repeat with i = 1 to 100
  112.     set x = 15.1/16.1
  113.   end repeat
  114.   return(the timer)
  115.   putMsge "checkCPUSpeed :" && the timer
  116.   --end checkCPUSpeed
  117.   
  118. on initLoc locName
  119.   global gThisLoc,gLastLoc,gWandFlag,gBAChannel,gBAHeadChannel,gSystemCursor
  120.   global gTaskClickOns,gTaskTicks,gHintLevel,gPuppetClickOnList
  121.   global gDoveRestNum,gDoveBubbleChannel,gJumpMarker,gReturnMarker
  122.   if gThisLoc <> locName then   -- in case this is redundantly called within movie
  123.     cursor 4
  124.     updateStage        -- to help finish dissolve ?
  125.     set the centerStage       = 1
  126.     set gDoveBubbleChannel    = 21
  127.     set gDoveRestNum          = empty
  128.     set gSystemCursor         = 0
  129.     set gWandFlag             = 0
  130.     set gLastLoc              = gThisLoc
  131.     set gThisLoc              = locName
  132.     set gHintLevel            = 0
  133.     set gPuppetClickOnList    = empty
  134.     set gBAChannel            = 0           
  135.     set gBAHeadChannel        = 0
  136.     set gReturnMarker         = empty
  137.     set gJumpMarker           = empty
  138.     set gTaskClickOns         = 0
  139.     set gTaskTicks            = the ticks
  140.     set initCmdName           = "init" & locName
  141.     do string(initCmdName)               
  142.   end if
  143.   -- end initLoc
  144.   
  145. on preloadCastLoop cName1,cName2,doveSide
  146.   global gPreloadBusy
  147.   set gPreloadBusy = 1
  148.   set cNum1 = the number of cast cName1
  149.   set cNum2 = the number of cast cName2
  150.   putMsge "PreloadCastLoop" && cNum1 && cNUm2
  151.   repeat with i = cNum1 to cNum2
  152.     preLoadCast i
  153.     --if the mouseDown then checkRegions
  154.     --set cursor = cursor + 1
  155.   end repeat
  156.   if stringP(doveSide) then
  157.     if doveSide = "R" then
  158.       preloadCast H61,H66
  159.     else
  160.       preloadCast H51,H56
  161.     end if
  162.   end if
  163.   preloadCast H71,H82  -- wand,sounds,hilites 
  164.   showLoadInfo         -- debug
  165.   set gPreloadBusy = 0
  166.   --end preloadCast
  167.   
  168. on sharedIdle
  169.   global gWandFlag
  170.   if gWandFlag = 1 then wandMove --else updateStage?
  171.   -- end sharedIdle
  172.   
  173. on wandToggle stateFlag 
  174.   global gWandFlag,gHideOffset,gCPUSpeed,gSystemCursor
  175.   set gWandFlag = stateFlag
  176.   if gWandFlag = 0 then
  177.     set the locV of sprite 24 to gHideOffset
  178.     cursor -1
  179.     updateStage
  180.   else
  181.     if gCPUSpeed = #Fast and gSystemCursor = 0 then
  182.       if gWandFlag = 1 then
  183.         cursor 200
  184.         puppetSprite 24,1
  185.         wandMove
  186.       else -- must be - 1
  187.         cursor 200
  188.         set the locV of sprite 24 to gHideOffset
  189.         updateStage
  190.       end if -- check for 1
  191.     else
  192.       if gWandFlag = 1 then
  193.         cursor 211
  194.         wandMove
  195.       else 
  196.         cursor 200
  197.       end if 
  198.     end if
  199.   end if -- check for 0
  200.   --end wandToggle
  201.   
  202. on wandMove
  203.   -- EFB 5/18;Makes magic wand act as virtual mouse
  204.   global gWandFlag,gWandNum,gCPUSpeed,gSystemCursor
  205.   if gCPUSpeed = #Fast and gSystemCursor = 0 then
  206.     set the locV of sprite 24 to the mouseV
  207.     set the locH of sprite 24 to the mouseH
  208.     set gWandNum = not gWandNum
  209.     if gWandNum = 0 then
  210.       set the castNum of sprite 24 to¼
  211.         the number of cast "wand.1"
  212.     else
  213.       set the castNum of sprite 24 to¼
  214.          the number of cast "wand.0"
  215.     end if
  216.   else
  217.     set gWandNum = not gWandNum
  218.     if gWandNum = 0 then
  219.       cursor 757
  220.     else
  221.       cursor 759
  222.     end if
  223.   end if
  224.   updateStage
  225.   --end wandMove
  226.   
  227. on wandAnim cType
  228.   global gThisLoc,gWandSnd,gCPUSpeed,gSystemCursor
  229.   puppetSound gWandSnd
  230.   updateStage
  231.   if gCPUSpeed = #Fast and gSystemCursor = 0 then
  232.     repeat with i = 2 to 4
  233.       set the castNum of sprite 24 to (the number of cast ("wand." & i))
  234.       updateStage
  235.     end repeat
  236.   else
  237.     repeat with i = 1 to 4
  238.       cursor (756 + i)
  239.       updateStage
  240.       delay 15
  241.     end repeat
  242.     cursor 200
  243.     updateStage
  244.   end if
  245.   repeat while soundBusy(1)
  246.   end repeat
  247.   puppetSound 0
  248.   -- end wandAnim
  249.   
  250. on startAudio sndName,folderCode
  251.   --EFB 6/1
  252.   global gbMediaPath,gCMediaPath,gDMediaPath,gMovieList
  253.   if stringP(sndName) then  -- If sndName is passed, plays external AIF file
  254.     --putMsge "startAudio" && sndName && folderCode
  255.     if char 1 of folderCode = "L" then            -- Location AIF file path
  256.       delete char 1 of folderCode
  257.       set movieName = item value(folderCode) of gMovieList
  258.       set sndPath   = (gBMediaPath & movieName & ":" & sndName & ".AIF")
  259.     else if char 1 of folderCode = "D" then         -- ReadBook AIF file path
  260.       delete char 1 of folderCode
  261.       set movieName = item value(folderCode) of gMovieList
  262.       set sndPath   = (gDMediaPath & movieName & ":" & sndName & ".AIF")
  263.     else if char 1 of folderCode = "C" then        -- Chapter AIF File path
  264.       delete char 1 of folderCode
  265.       set folderName = "CHAP" & folderCode     
  266.       set sndPath   = (gCMediaPath & folderName & ":" & sndName & ".AIF")
  267.     else      --need to put c's in front of all names  -- Chapter AIF File path
  268.       set folderName = "CHAP" & folderCode     
  269.       set sndPath   = (gCMediaPath & folderName & ":" & sndName & ".AIF")
  270.     end if
  271.     set freeKB = the freeBytes /1024
  272.     if freeKB < 50 then
  273.       --beep 2
  274.       putMsge ("Need to unload:startAudio/freeKB" && sndPath && freeKB)
  275.       set startNum = the number of cast "PL/Unload"
  276.       repeat with i = startNum to 512
  277.         unloadCast i
  278.         set freeKB = the freeBytes /1024
  279.         if freeKB > 50 then exit repeat
  280.       end repeat
  281.       putMsge ("startAudio/freeKB/i" && sndPath && freeKB && i - startNum)
  282.     else
  283.       putMsge ("startAudio/freeKB" && sndPath && freeKB)
  284.     end if
  285.     sound playFile 1, sndPath
  286.     put sndPath
  287.   end if
  288.   startTimer
  289.   -- end startAudio
  290.   
  291. on checkAudio continueTicks,syncWord
  292.   if continueTicks = "End" then
  293.     if the soundBusy of 1 then
  294.       go the frame
  295.     end if
  296.   else
  297.     if (the timer < continueTicks) then
  298.       go the frame  
  299.       set timer = 0
  300.     end if
  301.   end if
  302.   -- end checkAudio
  303.   
  304. on checkAudioLoop endLoopTime,nextFrame
  305.   if the timer > endLoopTime then
  306.     if stringP(nextFrame) then
  307.       goMName nextMarkerName
  308.     else if integerP(nextFrame) then
  309.       go nextFrame
  310.     else
  311.       go marker(1)
  312.     end if
  313.   end if
  314.   --end checkAudioLoop
  315.   
  316. on playAmbient  sndName,folderCode
  317.   if not soundBusy(1) then startAudio sndName,folderCode
  318.   --end playAmbient
  319.   
  320. on fadeOut
  321.   global gFadeOut,gLoudNess
  322.   set gFadeOut = 0
  323.   set gLoudness = the soundLevel
  324.   repeat with i = 1 to gLoudness
  325.     --putMsge "Fading Level/Timer" && the soundLevel && the timer
  326.     set the soundLevel to (gLoudness - i)
  327.     startTimer
  328.     repeat while the timer < 5
  329.     end repeat    
  330.   end repeat
  331.   sound stop 1
  332.   set the soundLevel to gLoudness
  333.   --end macro
  334.   
  335. on stopAudio
  336.   sound stop 1
  337.   puppetSound 0
  338.   --end stopAudio
  339.   
  340. on audioFinish
  341.   set returnString = "done"
  342.   repeat while (the soundBusy of 1)
  343.     idle
  344.     if the mouseDown then 
  345.       set returnString = "mouseDown"
  346.       exit
  347.     end if
  348.   end repeat
  349.   doveAway
  350.   return returnString
  351.   --end audioFinish
  352.   
  353. on puppetRange p1,p2,onFlag
  354.   repeat with i = p1 to p2
  355.     setLocPuppet i,onFlag
  356.   end repeat
  357.   --end puppetRange
  358.   
  359. on setImmediateRange  sNum1,sNum2
  360.   repeat with i = sNum1 to sNum2
  361.     set the immediate of sprite i to TRUE
  362.   end repeat
  363.   --end setImmediateRange
  364.   
  365. on initArrays
  366.   global gLeftArray,gTopArray,gRightArray,gBottomArray
  367.   global gTypeArray,gOptionArray,gFlagArray,gCounterArray,gNameArray
  368.   set gLeftArray     = arrayMaker2(mNew,20)
  369.   set gTopArray      = arrayMaker2(mNew,20)
  370.   set gRightArray    = arrayMaker2(mNew,20)
  371.   set gBottomArray   = arrayMaker2(mNew,20)
  372.   set gTypeArray     = arrayMaker2(mNew,20)
  373.   set gOptionArray   = arrayMaker2(mNew,20)
  374.   set gFlagArray     = arrayMaker2(mNew,20)
  375.   set gCounterArray  = arrayMaker2(mNew,20)
  376.   set gNameArray     = arrayMaker2(mNew,20)
  377.   --end initArrays
  378.   
  379. on initRegions regionNum
  380.   global gLeftArray,gTopArray,gRightArray,gBottomArray
  381.   global gTypeArray,gOptionArray,gFlagArray,gCounterArray,gNameArray,gRegionTotal,gMidLine
  382.   set currentRegions = the text of cast ("regionNums." & regionNum)
  383.   delete line 1 to 2 of currentRegions
  384.   set gRegionTotal = the number of lines in currentRegions
  385.   set gMidLine = gRegionTotal / 2
  386.   repeat with i = 1 to gRegionTotal
  387.     gLeftArray(mPut,i,integer(item 1 of line i of currentRegions))
  388.     gTopArray(mPut,i,integer(item 2 of line i of currentRegions))
  389.     gRightArray(mPut,i,integer(item 3 of line i of currentRegions))
  390.     gBottomArray(mPut,i,integer(item 4 of line i of currentRegions))
  391.     gTypeArray(mPut,i,integer(item 5 of line i of currentRegions))
  392.     gOptionArray(mPut,i,integer(item 6 of line i of currentRegions))
  393.     gFlagArray(mPut,i,integer(item 7 of line i of currentRegions))
  394.     gCounterArray(mPut,i,integer(item 8 of line i of currentRegions))
  395.     gNameArray(mPut,i,string(item 9 of line i of currentRegions))
  396.   end repeat
  397.   -- end initRegions
  398.   
  399. on checkRegions
  400.   -- EFB 5/18
  401.   global gLeftArray,gTopArray,gRightArray,gBottomArray
  402.   global gTypeArray,gOptionArray,gFlagArray,gCounterArray,gNameArray
  403.   global gRegionLine,gThisLoc,gThisTaskNum,gThisRegion,gRegionTotal,gMidLine
  404.   global gWandFlag,gMouseY,gMouseX,gDoveRestNum,gDovePuppetNum,gClickSnd
  405.   --putMsge "checkRegions"
  406.   set gMouseY = the mouseV
  407.   set gMouseX = the mouseH
  408.   if gDoveRestNum <> empty then
  409.     puppetSound gClickSnd 
  410.     putMsge "checkRegions called with dove still open"
  411.     doveAway   -- in case dove was not put away properly
  412.     puppetSound 0 
  413.   end if
  414.   if gWandFlag = 1 then
  415.     if gMouseX > gLeftArray(mGet,gMidLine) then
  416.       set startLine = gMidLine
  417.       set endLine = gRegionTotal
  418.     else
  419.       set startLine = 1
  420.       set endLine = gMidLine - 1
  421.     end if
  422.     repeat with i = startLine to endLine
  423.       if gMouseX > gLeftArray(mGet,i) then
  424.         if gMouseY > gTopArray(mGet,i) then
  425.           if gMouseX < gRightArray(mGet,i) then
  426.             if gMouseY < gBottomArray(mGet,i) then
  427.               if gFlagArray(mGet,i) = 1 then   
  428.                 set cName     = gNameArray(mGet,i)
  429.                 set cType     = gTypeArray(mGet,i)
  430.                 set cOption   = gOptionArray(mGet,i)
  431.                 set gRegionLine = i
  432.                 putMsge "CheckRegions complete" && i && (the lastClick)   
  433.                 clickOn cName,cType,cOption
  434.               end if  
  435.               exit repeat  
  436.             end if
  437.           end if
  438.         end if
  439.       end if
  440.       idle  --To update wand 
  441.     end repeat
  442.     idle   -- To update wand 
  443.   end if
  444.   -- end checkRegions
  445.   
  446. on clickOn cName,cType,cOption,cLineNum
  447.   global gTaskClickOns,gThisTaskNum,gRegionLine,gDoveRestNum,gClickSnd,gWandFlag
  448.   if gDoveRestNum <> empty then
  449.     puppetSound gClickSnd 
  450.     --putMsge "clickOn called with dove still open"
  451.     doveAway   -- in case dove was not put away properly
  452.     puppetSound 0
  453.   else
  454.     if gWandFlag = 1 and the lastClick < 90 then
  455.       wandAnim cType
  456.       wandToggle 0
  457.       --putMsge "ClickOn the lastClick:" && the lastClick
  458.       if cType = 0 then
  459.         if cOption = 0 then set cOption = 1   -- should lose this
  460.         goMName (cName & "." & cOption)  
  461.       else if cType = 1 then
  462.         stopLoop
  463.         goMName (cName & ".1")
  464.       else if cType = 2 then 
  465.         if integerP(cLineNum) then set gRegionLine = cLineNum
  466.         doSeqAnim cName,cOption
  467.       else if cType = 3 then 
  468.         if integerP(cLineNum) then set gRegionLine = cLineNum
  469.         doRandomAnim cName,cOption
  470.       else if cType = 4 then 
  471.         doTaskAnim cName,cOption
  472.       else if cType = 6 then 
  473.         BAHint  -- local movie handler
  474.       else if cType = 7 then 
  475.         clickOnLocal cName,cOption  
  476.       end if
  477.       set gTaskClickOns = gTaskClickOns + 1
  478.     end if
  479.   end if 
  480.   -- end clickOn
  481.   
  482. on doSeqAnim cName,cOption
  483.   global gCounterArray,gRegionLine
  484.   set nextNum = gCounterArray(mGet,gRegionLine) + 1
  485.   if nextNum > cOption then set nextNum = cOption
  486.   set nextNum = integer(nextNum)
  487.   gCounterArray(mPut,gRegionLine,nextNum)
  488.   goMName (cName & "." & nextNum)
  489.   --end goAnim
  490.   
  491. on doRandomAnim cName,cOption
  492.   global gCounterArray,gRegionLine
  493.   set nextNum = gCounterArray(mGet,gRegionLine)
  494.   putMsge "doRandomAnim nextNum vs coption" && nextNum && cOption
  495.   if nextNum = 0 then
  496.     set nextNum = random(cOption)
  497.   else
  498.     if nextNum = cOption then 
  499.       set nextNum = 1   -- Loops back to 1
  500.     else
  501.       set nextNum = nextNum + 1
  502.     end if
  503.   end if
  504.   gCounterArray(mPut,gRegionLine,nextNum)
  505.   goMName (cName & "." & nextNum)
  506.   -- end goAnim
  507.   
  508. on doTaskAnim cName,cTask
  509.   global gThisTaskNum
  510.   if cTask <> gThisTaskNum  then 
  511.     goMName (cName & ".1")
  512.   else
  513.     if  gThisTaskNum = 10  then
  514.       checkLetter cName
  515.     else  if  gThisTaskNum =  20 then
  516.       doMessUp cName
  517.     else if gThisTaskNum = 30 then
  518.       if ((cName contains "<") or (cName contains ">")) then  --SN doesn't need that now
  519.         puppetSound "3DV15.AIF"
  520.       else
  521.         foundIngredient cName
  522.       end if
  523.     else if gThisTaskNum = 50 then
  524.       goMName (cName & ".2")
  525.     else if gThisTaskNum = 71 then
  526.       goMName (cName & ".2")
  527.     else if gThisTaskNum = 72 then
  528.       goMName (cName & ".2")
  529.     else if gThisTaskNum = 73 then
  530.       goMName (cName & ".2")
  531.     end if
  532.   end if
  533.   -- end doTaskAnim
  534.   
  535. on startLoop loopName,sNum1,sNum2
  536.   global gReturnMarker,gMagicSnd
  537.   set gReturnMarker = loopName
  538.   if not soundBusy(1) then puppetSound gMagicSnd
  539.   if integerP(sNum1) then
  540.     repeat with i = sNum1 to sNum2
  541.       set the immediate of sprite i to 1
  542.     end repeat
  543.   else
  544.     set the immediate of sprite 1 to 1
  545.   end if
  546.   wandToggle 1                
  547.   --end startLoop    
  548.   
  549. on stopLoop                
  550.   -- EFB 8/6
  551.   global gReturnMarker
  552.   wandToggle 0                
  553.   set gReturnMarker = empty
  554.   --end stopLoop
  555.   
  556. on returnLoop 
  557.   global gReturnMarker,gThisTaskNum,gWandFlag
  558.   set taskFlag = checkTask()  -- triggers BA Hint on click/time out
  559.   if taskFlag <> 1 then      -- checkTask will return 0 if it needs to branch
  560.     if not (labelList()  contains gReturnMarker) then  -- debug
  561.       putMsge "ReturnLoop called without good mName" && gReturnMarker
  562.       beep 2
  563.       continue
  564.     else
  565.       set loopFrame = label(gReturnMarker) + 2 
  566.       go loopFrame
  567.       if gWandFlag = 0 then wandToggle 1
  568.     end if
  569.   end if    
  570.   --end returnLoop 
  571.   
  572. on goMName markerName
  573.   if  not (the labelList contains markerName) then  -- debug
  574.     beep 2
  575.     putMsge "goMName Marker not found  " && markerName
  576.   else
  577.     --put "GoMName (go to) " && markerName
  578.     go to markerName
  579.   end if    
  580.   -- end goMName
  581.   
  582. on goMNameAdd baseMName,versionNum
  583.   set markerName =  (baseMName & "." & versionNum)
  584.   goMName markerName
  585.   -- end goMNameAdd
  586.   
  587. on goNextMarker skipNum
  588.   if not integerP(skipNum) then set skipNum = 1
  589.   go marker(skipNum)
  590.   -- end go nextMarker
  591.   
  592. on goLoc markerName,locNum,transFlag
  593.   global gThisLoc,gMovieList,gTaskClickons,gTaskTicks,gAMoviePath,gThisTaskNum,gHideOffset
  594.   cursor 4
  595.   if locNum = 1 then            -- CW for Ch.1,3,6
  596.     if (gThisTaskNum = 30 or gThisTaskNum = 31) then
  597.       set markerName = "3a.CW"
  598.     else if  gThisTaskNum = 61 then
  599.       set markerName = "6a.CW"
  600.     end if
  601.   else if locNum = 2 then        -- NY in Ch.3
  602.     if (gThisTaskNum = 30 or gThisTaskNum = 31) then
  603.       set markerName = "3b.NY"
  604.     end if
  605.   else if locNum = 10 then       --CP in Ch.3
  606.     if (gThisTaskNum = 30 or gThisTaskNum = 31) then
  607.       set markerName = "3c.CP"
  608.     end if
  609.   else if locNum = 15 then       --TC in Ch.5
  610.     if gThisTaskNum = 50 then
  611.       set markerName = "5a.TC"
  612.     end if
  613.   else if locNum = 16 then       --AY in Ch.6
  614.     if gThisTaskNum = 61 then
  615.       set markerName = "6a.AY"
  616.     else if gThisTaskNum = 62 then
  617.       set markerName = "6b.AY"
  618.     end if
  619.   end if
  620.   set locString = string(locNum)
  621.   if length(locString) < 2 then set locString = ("0" & locString)
  622.   if "01,03,05,12,13" contains locString then
  623.     playTransMusic 1
  624.   else if "02,04,06,20" contains locString then
  625.     playTransMusic 2
  626.   else if "07,09" contains locString then
  627.     playTransMusic 4
  628.   else  if "10,11,15,17" contains locString then
  629.     playTransMusic 5
  630.   else if "08,16,18,19" contains locString then
  631.     playTransMusic 3
  632.   end if
  633.   set  movieName = item value(locNum) of gMovieList
  634.   goMovie markerName, movieName
  635.   -- end goLoc
  636.   
  637. on goChap chapNum
  638.   global gThisLoc,gDemoFlag,gThisTaskNum,gMovieList,gHideOffset
  639.   cursor 4
  640.   if chapNum = "Begin" then
  641.     playTransMusic 1
  642.     set markerName = "Banners" 
  643.     set movieName  = item 1 of gMovieList
  644.   else if chapNum = "ShortCuts" then
  645.     startAudio "CWM15","L1"
  646.     set markerName = "SCLoop" 
  647.     set movieName  = item 1 of gMovieList
  648.   else if chapNum = "ReadBook" then
  649.     playTransMusic 2
  650.     set markerName = "RB" 
  651.     set movieName  = item 20 of gMovieList
  652.   else if chapNum = "Title" then
  653.     set markerName = "Title" 
  654.     set movieName  = item 1 of gMovieList
  655.   else if chapNum = "1" then
  656.     playTransMusic 2
  657.     set markerName = "1a.NY"
  658.     set movieName  = "Chap1"
  659.   else if chapNum = "1B.NK" then
  660.     set markerName = "1b.NK"
  661.     set movieName  = item 3 of gMovieList
  662.   else if chapNum = "1B.NS" then
  663.     set markerName = "1b.NS"
  664.     set movieName  = item 5 of gMovieList
  665.   else if chapNum = "Letter" then
  666.     playTransMusic 1
  667.     startTask 10
  668.     set markerName =  "1b.NK"
  669.     set movieName  = item 3 of gMovieList
  670.   else if chapNum = "2A" then
  671.     playTransMusic 2
  672.     set markerName =  "2a.NK"
  673.     set movieName  = item 3 of gMovieList --NK
  674.   else if chapNum = "2B" then
  675.     playTransMusic 2
  676.     set markerName =  "2c.NY"
  677.     set movieName  = "Chap2B"
  678.   else if chapNum = "3" then
  679.     playTransMusic 2
  680.     set gThisTaskNum = 31  -- special case for exit/retun to Chap3 before startTask 30
  681.     set markerName =  "3a.NY"
  682.     set movieName  = item 2 of gMovieList  --NY
  683.   else if chapNum = "Grove" then
  684.     playTransMusic 5
  685.     set markerName = "3A.NY"
  686.     set movieName  = item 2 of gMovieList --NY
  687.   else if chapNum = "4" then
  688.     playTransMusic 5
  689.     set markerName =  "4a.NK"
  690.     set movieName  = "Chap4"
  691.   else if chapNum = "4B" then
  692.     playTransMusic 1
  693.     set markerName =  "4c.NY"
  694.     set movieName  = "Chap4"
  695.   else if chapNum = "5B" then
  696.     playTransMusic 1
  697.     set markerName =  "5b.NY"
  698.     set movieName  = "Chap5B"
  699.   else if chapNum = "6B" then
  700.     playTransMusic 5
  701.     set markerName = "6b.AK"
  702.     set movieName  = item 17 of gMovieList  -- in CH.6B part of "AK" loc
  703.   else if chapNum = "7" then
  704.     playTransMusic 3
  705.     set markerName = "7a.AY"
  706.     set movieName  = item 16 of gMovieList  -- in CH.7 part of "AY" loc
  707.   else if chapNum = "7B" then
  708.     playTransMusic 3
  709.     set markerName = "7b.AK"
  710.     set movieName  = item 17 of gMovieList  -- in CH.7A part of "AK" loc
  711.   else if chapNum = "7C" then
  712.     playTransMusic 3
  713.     set markerName = "7c.HR"
  714.     set movieName  = item 19 of gMovieList  -- in CH.7A part of "AK" loc
  715.   else if chapNum = "HRClient" then
  716.     playTransMusic 3
  717.     set markerName = "7c.HR"    -- need new marker to init clientList ?
  718.     set movieName  = item 19 of gMovieList  -- in CH.7A part of "AK" loc
  719.   else if chapNum = "7D" then
  720.     playTransMusic 3
  721.     set markerName = "7d.AK"
  722.     set movieName  = item 17 of gMovieList  -- in CH.7D part of "AK" loc
  723.   else if chapNum = "VRClient" then
  724.     playTransMusic 3
  725.     set markerName = "7d.AK"
  726.     set movieName  = item 17 of gMovieList  -- in CH.7D part of "AK" loc
  727.   else if chapNum = "7E" then
  728.     playTransMusic 3
  729.     set markerName = "7e.WR"
  730.     set movieName  = item 18 of gMovieList  -- in CH.7e part of "WR" loc
  731.   else if chapNum = "WRClient" then
  732.     playTransMusic 3
  733.     set markerName = "7e.WR"   -- need new marker to init clientList ?
  734.     set movieName  = item 18 of gMovieList  -- in CH.7e part of "WR" loc
  735.   else if chapNum = "8" then
  736.     playTransMusic 1
  737.     set markerName = "8a.NY"
  738.     set movieName  = "Chap8"
  739.   else if chapNum = "8c" then
  740.     playTransMusic 1
  741.     set markerName = "8c.CW"
  742.     set movieName  = "Chap8"
  743.   end if
  744.   putMsge "goChap " && markerName && movieName
  745.   goMovie  markerName,movieName
  746.   --end goChap
  747.   
  748. on goMovie markerName,MovieName,TransitionType
  749.   global gAMoviePath,gHardDrivePath,gStartLoad,gHDMovieList,gFreeMemKB
  750.   set moviePath    =  (gAMoviePath & movieName) & ".dir"
  751.   set gStartLoad = the ticks --debug
  752.   go to markerName of movie moviePath
  753.   --end goMovie
  754.   
  755. on playTransMusic songNum
  756.   global gHardDrivePath
  757.   if soundBusy(1) then
  758.     putMsge "playTransMusic called redundatly." --debug
  759.   else
  760.     putMsge "playTransMusic called " && songNum --debug
  761.     if songNum = 1 then
  762.       puppetSound "CWM51b.Snd"
  763.       --set sndName = "CWM11.AIF"
  764.     else if songNum = 2 then
  765.       puppetSound "CWM52b.Snd"
  766.       --set sndName = "CWM12.AIF"
  767.     else if songNum = 3 then
  768.       puppetSound "CWM53.Snd"
  769.       --set sndName = "CWM13.AIF"
  770.     else if songNum = 4 then
  771.       puppetSound "CWM54.Snd"
  772.       --set sndName = "CWM14.AIF"
  773.     else if songNum = 5 then
  774.       puppetSound "CWM55.Snd"
  775.       --set sndName = "CWM15.AIF"
  776.     end if
  777.     --set sndPath     = (gHardDrivePath & sndName)
  778.     --sound playFile 1,sndPath
  779.     updateStage
  780.   end if
  781.   --playTransMusic
  782.   
  783.   
  784.   --*****  Non-Runtime Macros ********
  785.   
  786. on getRegions fldNum,initFlag
  787.   set fldName = "RegionNums." & fldNum
  788.   if integerP(initFlag) then
  789.     set newRegions = "0,0"
  790.   else
  791.     set newRegions = the text of cast fldName
  792.   end if
  793.   putMsge "Get Regions"
  794.   set i = 20
  795.   repeat while i > 1
  796.     set thisCastNum = the castNum of sprite i
  797.     if thisCastNum <> 0 then
  798.       set cName = the name of cast thisCastNum
  799.       if cName contains "/" then
  800.         repeat with j = 1 to the number of lines in newRegions
  801.           if cName = item 9 of line j of newRegions or integerP(initFlag) then
  802.             putMsge "updated regions for: " && cName  && j
  803.             put fillNum(the left of sprite i,3)   into item 1 of line j of newRegions
  804.             put fillNum(the top of sprite i,3)    into item 2 of line j of newRegions
  805.             put fillNum(the right of sprite i,3)  into item 3 of line j of newRegions
  806.             put fillNum(the bottom of sprite i,3) into item 4 of line j of newRegions
  807.             set j = 25
  808.           else
  809.             if j = the number of lines in newRegions then
  810.               putMsge "No match for region/sprite:" && cName && i
  811.             end if
  812.           end if 
  813.         end repeat
  814.       end if
  815.     end if
  816.     set i =  i - 1
  817.   end repeat
  818.   set the text of cast fldName to newRegions
  819.   beep 3
  820.   -- getRegions
  821.   
  822. on fillNum baseNum,totalChar
  823.   set baseNum = string(baseNum)
  824.   repeat while length(baseNum) < totalChar
  825.     set baseNum = "0" & baseNum
  826.   end repeat
  827.   return(baseNum)
  828.   --end fillNum
  829.   
  830. on checkKey
  831.   put "Keydown" && the Key 
  832.   if the Key = "`" then 
  833.     putAudioTime
  834.   else if the Key = "h" then 
  835.     hideMsge
  836.   else if the Key = "s" then 
  837.     showMsge
  838.   end if
  839.   -- end ckeckKey
  840.   
  841. on putMsge mText
  842.   global gMsgeFlag
  843.   if gMsgeFlag = 1 then
  844.     if the number of lines in the text of cast "MessageField" > 30 then
  845.       set the text of cast "messageField" to empty 
  846.     end if
  847.     set the text of cast "MessageField" to mText & RETURN & the text of cast "MessageField"
  848.     showMsge
  849.   else
  850.     put mText
  851.   end if
  852.   -- end putMsge
  853.   
  854. on clearMsge mText
  855.   set the text of cast "MessageField" to "Messages"
  856.   -- end putMsge
  857.   
  858. on showMsge mText
  859.   global gMsgeFlag
  860.   if the shiftDown then
  861.     set gMsgeFlag = 1
  862.     puppetSprite 21,1
  863.   end if
  864.   set the castNum of sprite 21 to the number of cast "Messages"
  865.   set the locV of sprite 21 to 300
  866.   updateStage
  867.   -- end putMsge
  868.   
  869. on hideMsge mText
  870.   global gMsgeFlag
  871.   if the shiftDown then
  872.     set gMsgeFlag = 0
  873.     puppetSprite 21,0
  874.   end if
  875.   set the locV of sprite 21 to 700
  876.   updateStage
  877.   -- end putMsge
  878.   
  879. on initLoadtest
  880.   global gStartLoad,gFreeMemKB
  881.   unloadCast
  882.   initBA
  883.   set gFreeMemKB = (the freeBytes)/1024
  884.   puppetSound "CWM51b.Snd"
  885.   putMsge "initLoadTest (Free Kb)" && (gFreeMemKB)
  886.   --end initLoadtest
  887.   
  888. on showLoadInfo
  889.   global gFreeMemKB,gStartLoad
  890.   putMsge "Load After Mem:"  && (gFreeMemKB - (the freeBytes/1024)) && "Kb"
  891.   putMsge "Load After Time:" && ((the ticks - gStartLoad)/60 ) && "seconds"
  892.   --end showLoadInfo
  893.   
  894. on showArrays
  895.   global gLeftArray,gTopArray,gRightArray,gBottomArray
  896.   global gTypeArray,gOptionArray,gFlagArray,gCounterArray,gNameArray,gRegionTotal
  897.   set currentRegions = ""
  898.   repeat with i = 1 to gRegionTotal
  899.     put gLeftArray(mGet,i) & "," after currentRegions
  900.     put gTopArray(mGet,i) & "," after currentRegions
  901.     put gRightArray(mGet,i) & "," after currentRegions
  902.     put gBottomArray(mGet,i) & "," after currentRegions
  903.     put gTypeArray(mGet,i) & "," after currentRegions
  904.     put gOptionArray(mGet,i) & "," after currentRegions
  905.     put gFlagArray(mGet,i) & "," after currentRegions
  906.     put gCounterArray(mGet,i) & "," after currentRegions
  907.     put gNameArray(mGet,i) & "," after currentRegions
  908.     put RETURN after currentRegions
  909.   end repeat
  910.   putMsge "CurrentRegions:" & Return & currentRegions
  911.   --end showArrays
  912.   
  913.