acrossTheRiver.html

<HTML>

<HEAD>

 

<script>var dFrameFilePath = '../../../'</script>

<script language="Javascript" src="../../../lib/dFrameAPI.js"></script>

 

<script language="Javascript">

     //DynAPI libraries

     DynAPI.setLibraryPath('../../../dynapi/src/lib/');

     DynAPI.include('dynapi.util.thread.js');

     DynAPI.include('dynapi.util.pathanim.js');

 

     //Style

     var dFrameStyleForText

     DFrameAPI.include('./acrossTheRiver/acrossTheRiverStyle.js', 'A')

    

    

     var leftSide, river, rightSide

     var wolf, goat, cabbage

     var boat

     var barInsertCoins

     var travelNb

    

     DFrameAPI.onLoad = function(){

    

          var baseAll = new DFrame([0, 0, 100, 100], 'This is the very amazing gane "Across the river" ...', dFrameStyle)

 

          dFrameStyle.setTitleBar(false)

         

    

          var dFrameStyleForSide = new DFrameStyle(dFrameStyle)

          dFrameStyleForSide.getDefaultBarStyle().setStartFrom('TOP')

          dFrameStyleForSide.getDefaultBarStyle().setAutoHeight('CONTENT')

 

          leftSide = new DFrame([0, 25, '90', 75], 'Left side', dFrameStyleForSide, baseAll)

          leftSide.setBackgroundColor('green')

         

          position = [0, 25, 90, '118']

          position[0] = [leftSide, 'Right', 0];

          river = new DFrame(position, 'River', dFrameStyle, baseAll)

          river.setBgImage('./acrossTheRiver/river.gif')       

         

          barInsertCoins = river.addBar(['*','*','*','*'])

          barInsertCoins.addButton('Insert coins', 'inits()')

         

          position = [0, 25, '90', 75]

          position[0] = [river, 'Right', 0];

          rightSide = new DFrame(position, 'Right side', dFrameStyleForSide, baseAll)

          rightSide.setBackgroundColor('green')

         

          leftSide.show()

          river.show()

          rightSide.show()

 

     }

     function inits() {

          barInsertCoins.show(false)       

          if (!boat) boat = new Boat()

          travelNb = -1

          if (boat.counter) boat.counter.show(true)                       

          if (boat.position == 'rightSide') boat.travel()

          travelNb = 0

          boat.init()

          if (!wolf) wolf = new Passenger('wolf', 'Yap ! Yap ! !')

          wolf.init()                    

          if (!goat) goat = new Passenger('goat', 'Meuuuuuuhhh !')

          goat.init()

          if (!cabbage) cabbage = new Passenger('cabbage', 'Crunch ! Crunch !')     

          cabbage.init()

 

     }

 

     function hide() {

          boat.bar.show(false)

          boat.counter.show(false)

          wolf.hide()                  

          goat.hide()

          cabbage.hide()

          barInsertCoins.show(true)

     }        

 

     function Passenger(name, shout) {

          this.name = name

          this.shout = shout

         

          //"this" in action of a Button: Indicates the Button. Here: this.leftSide

          //The transfert method is a method the Passenger class

          //Set this.leftSide.passenger and Use "this.passenger" as target and set it as the owner of the Button                   

          this.leftSide = leftSide.addButtonImage(name, 'this.passenger.transfert()')

          this.leftSide.passenger = this   

         

          this.boat = boat.bar.addButtonImage(name, 'this.passenger.transfert()')

          this.boat.passenger = this       

         

          this.rightSide = rightSide.addButtonImage(name, 'this.passenger.transfert()')

          this.rightSide.passenger = this 

         

          this.init()

     }   

    

     Passenger.prototype.init = function () {

          this.leftSide.show(true)

          this.boat.show(false)                           

          this.rightSide.show(false)

          this.position = 'leftSide'                        

     }

     Passenger.prototype.hide = function () {

          this.init()

          this.leftSide.show(false)

     }   

     Passenger.prototype.transfert = function () {

          if (this.position != 'boat' && (this.position != boat.position)) {                    

              this.afraidShout()

              return

          }

          if (this.position == 'leftSide' || this.position == 'rightSide') {

              this.leftSide.show(false)                              

              this.rightSide.show(false)                            

              this.boat.show(true)

              this.position = 'boat'

              boat.passenger = this

              message('Vroum ! Vroum !', 0.5)                                          

              setTimeout('boat.travel()',1000)

          } else {

              this.boat.show(false)          

              if (boat.position == 'leftSide') {

                   this.leftSide.show(true)                          

                   boat.bar.setBgImage('./acrossTheRiver/boat.gif')                                                   

              } else {

                   this.rightSide.show(true)

                   boat.bar.setBgImage('./acrossTheRiver/boatBack.gif')                                                       

              }   

              this.position = boat.position

              boat.passenger = null                     

              message('Et hop !', 0.5)

          }

          checkOver()                

     }

     Passenger.prototype.afraidShout = function () {

          message('Plouf !<br>'+this.shout, 2)

     }   

    

     function Boat() {

          var style = river.getStyle().getDefaultBarStyle()

          style.setTitleBar(false)

          style.setBackgroundImage('./acrossTheRiver/boat.gif', 'A')

          style.setAutoWidth(false)

          style.setAutoHeight(false)        

          style.setItemsVAlign('Bottom') 

          this.bar = river.addBar('Boat',[0,0,'250', '120'], style)

          this.bar.boat = this

         

          var listener = new EventListener();

          listener.onpathstop = function(e) {

              if (boat.passenger != null) {  

                   setTimeout('boat.passenger.transfert()', 1000)

              }

          }

          this.bar.addEventListener(listener);

             

          this.bar.addButton('Travel', 'boat.travel()')

         

          this.init()

     }   

     Boat.prototype.init = function () {

          this.bar.show(true)

          this.position = 'leftSide'

     }   

     Boat.prototype.travel = function () {

          if (this.position == 'leftSide') {

              this.bar.setBgImage('./acrossTheRiver/boat.gif')

              this.position = 'rightSide'

              endPos = this.bar.parent.getWidth() - this.bar.getWidth()

          } else {

              this.bar.setBgImage('./acrossTheRiver/boatBack.gif')

              this.position = 'leftSide'                   

              endPos = 0

          }

          this.bar.slideTo(endPos, this.bar.getY())

          if (!this.counter) this.counter = river.addText('', buttonStyleForText, [0, '150'])

          travelNb += 1

          var txt = travelNb > 1 ? ' travels' : ' travel'

          this.counter.setText('<h2>' + travelNb + txt + '</h2>')

          checkPositions()                     

     }

    

     function message(text, timer) {

          river.addText('<H1>'+text+'</H1>', buttonStyleForText, ['*', '50'], timer)

     }   

    

     function checkPositions() {

          var end = false

          if (boat.position != wolf.position && wolf.position == goat.position) {

              message('Miam !Miam !<br>The wolf (yes, it is a wolf !) eat the cow:<br>You LOOSE !!<br>Game over.', 4)

              end = true 

          } else {

              if (boat.position != goat.position && goat.position == cabbage.position) {

                   message('Miam !Miam !<br>The cow eat the flower:<br> You LOOSE !!<br>Game over.', 4)

                   end = true

              }

          }

          if (end) setTimeout('hide()', 4000)

     }

     function checkOver() {

          var end = false

          if (wolf.position == 'rightSide' && goat.position == 'rightSide' && cabbage.position == 'rightSide') {

              message('<br>You WIN !!<br>Game over.', 3)

              end = true

          }

          if (end) setTimeout('hide()', 4000)

     }

 

    

</script>

</HEAD>