home *** CD-ROM | disk | FTP | other *** search
/ CyberMycha 2006 April / SGP.iso / dema / Keepsake-Demo-en-li-v1.0.exe / res / puzzles / basement.puzzle.tcl < prev    next >
Text File  |  2005-10-29  |  6KB  |  181 lines

  1. proc pzlLetterLogic { letter } {
  2.     set pzlBasementDoor [ozGet pzlBasementDoor]
  3.     set lastletter [ozGet pzlBasementLL]
  4.  
  5.     switch -exact $letter {
  6.         B { 
  7.             set pzlBasementDoor "X T R" 
  8.             if {$lastletter == "M"} {ozSet pzlBasementLL "B"} else {ozSet pzlBasementLL ""}
  9.         }
  10.         
  11.         F { 
  12.             set pzlBasementDoor "R T C" 
  13.             if {$lastletter == "T"} {ozSet pzlBasementLL "F"} else {ozSet pzlBasementLL ""}
  14.         }
  15.         
  16.         X { 
  17.             set pzlBasementDoor "M S K" 
  18.             if {$lastletter == "C"} {ozSet pzlBasementLL "X"} else {ozSet pzlBasementLL ""}
  19.         }
  20.         
  21.         M  { 
  22.             set pzlBasementDoor "C S B" 
  23.             if {$lastletter == ""} {ozSet pzlBasementLL "M"} else {ozSet pzlBasementLL ""}
  24.         }
  25.         
  26.         T { 
  27.             set pzlBasementDoor "F M K"
  28.             if {$lastletter == "B"} {ozSet pzlBasementLL "T"} else {ozSet pzlBasementLL ""}
  29.         }
  30.         
  31.         C { 
  32.             set pzlBasementDoor "X M S" 
  33.             if {$lastletter == "F"} {ozSet pzlBasementLL "C"} else {ozSet pzlBasementLL ""}
  34.         }
  35.         
  36.         R { 
  37.             set pzlBasementDoor "T F X" 
  38.             ozSet pzlBasementLL ""
  39.         }
  40.         
  41.         S { 
  42.             set pzlBasementDoor "B R K"
  43.             ozSet pzlBasementLL ""
  44.         }
  45.  
  46.         K { 
  47.             set pzlBasementDoor "F C B"
  48.             ozSet pzlBasementLL ""
  49.         }
  50.     }
  51.  
  52.     ozSet pzlBasementDoor $pzlBasementDoor
  53. }
  54.  
  55. proc pzlInit { } {
  56.     if { [ozGet pzlBasementInit] == "ok" } { return }
  57.     ozSet pzlBasementInit "ok"
  58.     ozSet pzlBasementDoor "M S K"
  59.     ozSet pzlBasementLL ""
  60. }
  61.  
  62. proc useBrick {side} {
  63.     pzlInit
  64.  
  65.     set pzlBasementDoor [ozGet pzlBasementDoor]
  66.     
  67.     set pBrickL [lindex $pzlBasementDoor 0]
  68.     set pBrickM [lindex $pzlBasementDoor 1]
  69.     set pBrickR [lindex $pzlBasementDoor 2]
  70.  
  71.     set sname ""
  72.     switch -exact $side {
  73.         L {set sname Left}
  74.         M {set sname Middle}
  75.         R {set sname Right}
  76.     }
  77.  
  78.     ozqSound::NewFX "/sound/puzzles/puzzleBrick/brickGlow.ogg"
  79.     
  80.     wineCavePuzzleCloseUp::new [set pBrick${side}]${sname}Glow -play
  81.  
  82.     oz'event {
  83.         wq'widget::delete& wineCavePuzzleCloseUp::${pBrickL}LeftOutSt
  84.         wq'widget::delete& wineCavePuzzleCloseUp::${pBrickM}MiddleOutSt
  85.         wq'widget::delete& wineCavePuzzleCloseUp::${pBrickR}RightOutSt
  86.     }
  87.     
  88.     ozqSound::NewFX "/sound/puzzles/puzzleBrick/brickPush.ogg"
  89.     
  90.     wineCavePuzzleCloseUp::new ${pBrickL}LeftIn
  91.     wineCavePuzzleCloseUp::new ${pBrickM}MiddleIn
  92.     wineCavePuzzleCloseUp::new ${pBrickR}RightIn -play
  93.     wq'widget::delete& wineCavePuzzleCloseUp::${pBrickL}LeftIn
  94.     wq'widget::delete& wineCavePuzzleCloseUp::${pBrickM}MiddleIn
  95.  
  96.     oz'event [subst {pzlLetterLogic [set pBrick${side}]}]
  97.     
  98.     oz'event {
  99.         set pzlBasementDoor [ozGet pzlBasementDoor]
  100.     
  101.         set pBrickL [lindex \$pzlBasementDoor 0]
  102.         set pBrickM [lindex \$pzlBasementDoor 1]
  103.         set pBrickR [lindex \$pzlBasementDoor 2]
  104.         
  105.         wineCavePuzzleCloseUp::newSt \${pBrickL}LeftOutSt
  106.         wineCavePuzzleCloseUp::newSt \${pBrickM}MiddleOutSt
  107.         wineCavePuzzleCloseUp::newSt \${pBrickR}RightOutSt
  108.     }
  109.  
  110.     chainEvent {
  111.         set pzlBasementDoor [ozGet pzlBasementDoor]
  112.     
  113.         set pBrickL [lindex $pzlBasementDoor 0]
  114.         set pBrickM [lindex $pzlBasementDoor 1]
  115.         set pBrickR [lindex $pzlBasementDoor 2]
  116.         
  117.         wineCavePuzzleCloseUp::new ${pBrickL}LeftOut
  118.         wineCavePuzzleCloseUp::new ${pBrickM}MiddleOut
  119.         wineCavePuzzleCloseUp::new ${pBrickR}RightOut -play
  120.         wq'widget::delete& wineCavePuzzleCloseUp::${pBrickL}LeftOut
  121.         wq'widget::delete& wineCavePuzzleCloseUp::${pBrickM}MiddleOut
  122.     }
  123.     
  124.     chainEvent {
  125.         set pzlBasementDoor [ozGet pzlBasementDoor]
  126.     
  127.         set pBrickL [lindex $pzlBasementDoor 0]
  128.         set pBrickM [lindex $pzlBasementDoor 1]
  129.         set pBrickR [lindex $pzlBasementDoor 2]
  130.     
  131.         if {[ozGet pzlBasementLL] == "X"} {
  132.             wq'widget::delete& wineCavePuzzleCloseUp::${pBrickL}LeftOutSt
  133.             wq'widget::delete& wineCavePuzzleCloseUp::${pBrickM}MiddleOutSt
  134.             wq'widget::delete& wineCavePuzzleCloseUp::${pBrickR}RightOutSt
  135.             callEvent "basement.wineCavePuzzleSolved"
  136.         }
  137.     }
  138. }
  139.     
  140. event "useBrickLeft" {
  141.     useBrick L
  142. }
  143.  
  144. event "useBrickMiddle" {
  145.     useBrick M
  146. }
  147.  
  148. event "useBrickRight" {
  149.     useBrick R
  150. }
  151.  
  152. proc useBrickReset {} {
  153.     pzlInit
  154.  
  155.     set pzlBasementDoor [ozGet pzlBasementDoor]
  156.     
  157.     set pBrickL [lindex $pzlBasementDoor 0]
  158.     set pBrickM [lindex $pzlBasementDoor 1]
  159.     set pBrickR [lindex $pzlBasementDoor 2]
  160.         
  161.     wq'widget::fadeto [set wineCavePuzzleCloseUp::${pBrickL}LeftOutSt]   0
  162.     wq'widget::fadeto [set wineCavePuzzleCloseUp::${pBrickM}MiddleOutSt] 0
  163.     wq'widget::fadeto [set wineCavePuzzleCloseUp::${pBrickR}RightOutSt]  0
  164.     
  165.     ozqSound::NewFX "/sound/puzzles/common/reset.ogg"
  166.     
  167.     wineCavePuzzleCloseUp::new reset -play
  168.  
  169.     wq'widget::delete& wineCavePuzzleCloseUp::${pBrickL}LeftOutSt
  170.     wq'widget::delete& wineCavePuzzleCloseUp::${pBrickM}MiddleOutSt
  171.     wq'widget::delete& wineCavePuzzleCloseUp::${pBrickR}RightOutSt
  172.  
  173.     ozSet pzlBasementDoor "M S K"
  174.     ozSet pzlBasementLL ""
  175. }
  176.  
  177. event "useBrickReset" {
  178.     useBrickReset
  179. }
  180.  
  181.