ACGTLoop Actionscript

Table of contents | Previous document | Download ACGTLoop.as | SWF!T Homepage

RCSfile: ACGTLoop.as,v  Revision: 1.7  Date: 2003/03/05 19:52:16  

Copyright 2003 Orgdot AS. All Rights Reserved. http://dev.swfit.com
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.


Loop for the ACGT piece.
author      Olaf Havnes
version     Revision: 1.7  Date: 2003/03/05 19:52:16  
since       SWFIT1.0


Tell the parent that we've left the start pos.

if (report)
{
   report = false;
   _parent.conv_name = "";
}

Fade in the piece

_alpha = (_alpha * _parent.delay + 100) / (_parent.delay + 1);

if (conveyor)
{
   if (pause_counter++ > pause)
   {

Reset counter

       pause_counter = 0;

Move to the left

       pos_lock --;
       if (pos_lock == _parent.num_conv - 1) report = true;
       

Making a slight moving sound

       /:shift_acgt_audio_play ++;

       remove = false;

Are we off the board ?

       if (pos_lock == 0 && mergee eq "")
       {
           remove = true;
           _parent.dead += 1;

           _parent.nuggets = 0;

play un-succesful sound

           /:failure_acgt_audio_play ++;
       }
       else if (pos_lock == 0)
       {
           _parent.life += _parent.life_size;
           _parent.nuggets ++;

play succesful sound

           /:success_acgt_audio_play ++;
       }

       if (pos_lock < 0)
       {
           remove = true;
       }
       
       if (remove)
       {

Remove ourself from the register

           i = 0;
           while (i < _parent.num_conv + 1)
           {
               if (_name eq eval ("../:conv_" add i))
               {
                   set ("../:conv_" add i, "");
                   break;
               }
               i++;
           };
           if (mergee ne "") removeMovieClip ("../" add mergee);
           removeMovieClip ("");
       }
   }

Implement the slot shuffle movement.

   xd = (x_min + pos_lock * pos_wdt) - _x;

Compute the speed based on distance we have to travel.

   xv += ac * xd - fr * xv;

Set the new x pos.

   xp += xv;
   
   _x = int (xp);
   

Have we been merged with another ?

   if (mergee ne "")
   {

Rise until we meet the mergee ...

       if (_y > _parent.merge_fall) _y = _y - fall_speed;
       else
       {

           if (goldie)
           {

Dont do anything

           }
           else
           {

Play gold sound

               /:goldie_acgt_audio_play ++;
           }
           goldie = true;

Turn both pieces to gold

           tellTarget (type)
           {
               gotoAndStop ("gold");
           }
           mtype = eval ("../" add mergee add ":type")

           tellTarget ("../" add mergee add "/" add mtype)
           {
               gotoAndStop ("gold");
           }
       }
       

Let the mergee follow follow our x-movement

       setProperty ("../" add mergee, _x, int (xp));
   }
}
else
{
   if (falling)
   {

Check - once - for merge

       if (merge_check && _y > _parent.free_fall)
       {
           merge_check = false;

Run through the register and find the one with the same lock pos

           i = 0;
           while (i < _parent.num_conv + 1)
           {
               cname = eval ("../:conv_" add i);
               if (cname ne "")
               {
                   if (pos_lock == eval ("../" add cname add ":pos_lock"))
                   {

Is the matching piece un-merged ?

                       cmergee = eval ("../" add cname add ":mergee");

Do we have a matching type ?

                       ctype = eval ("../" add cname add ":type");
                       if
                       (
                           (cmergee eq "") &&
                           (
                               (ctype eq "a" && type eq "t") ||
                               (ctype eq "t" && type eq "a") ||
                               (ctype eq "c" && type eq "g") ||
                               (ctype eq "g" && type eq "c")
                           )
                       )
                       {
                           mergee = cname;
                           set ("../" add cname add ":mergee", _name);
                       }
                       break;
                   }
               }
               i++;
           }
       }

Are we above the merge line?

       if (_y < _parent.merge_fall - _height) _y += fall_speed;
       else if (mergee eq "") _y += fall_speed;

       if (_y > _parent.water_fall)
       {
           _parent.drown += _parent.drown_size;

Tell the  bubbles to start bubbling

           ../../:drown = true;
           ../../:bpos = _x;
           removeMovieClip ("");

play drown sound

           /:drown_acgt_audio_play ++;
       }
   }
}