home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Aventura / Never_End.swf / scripts / elements / Item.as < prev    next >
Encoding:
Text File  |  2008-09-23  |  6.9 KB  |  213 lines

  1. package elements
  2. {
  3.    import flash.display.MovieClip;
  4.    import game.Model;
  5.    
  6.    public class Item extends MovieClip
  7.    {
  8.        
  9.       
  10.       private var xHitObj:*;
  11.       
  12.       public var itemHeight:Number;
  13.       
  14.       public var minJ:int;
  15.       
  16.       public var minI:int;
  17.       
  18.       private var yHitObj:*;
  19.       
  20.       private var ySpeed:Number;
  21.       
  22.       public var maxJ:int;
  23.       
  24.       public var group:*;
  25.       
  26.       public var maxI:int;
  27.       
  28.       public var itemWidth:Number;
  29.       
  30.       public var ty:Number;
  31.       
  32.       public var tx:Number;
  33.       
  34.       protected var skipTable:Array;
  35.       
  36.       private var xSpeed:Number;
  37.       
  38.       public var xPosition:Number;
  39.       
  40.       public var yPosition:Number;
  41.       
  42.       private var pairs:Array;
  43.       
  44.       public function Item(param1:Number = 0, param2:Number = 0, param3:Number = 25, param4:Number = 25)
  45.       {
  46.          super();
  47.          this.x = param1;
  48.          this.y = param2;
  49.          tx = xPosition = param1;
  50.          ty = yPosition = param2;
  51.          itemHeight = param4;
  52.          itemWidth = param3;
  53.       }
  54.       
  55.       private function getPairs() : void
  56.       {
  57.          var _loc1_:int = 0;
  58.          var _loc2_:int = 0;
  59.          _loc1_ = minI - 1;
  60.          while(_loc1_ <= maxI + 1)
  61.          {
  62.             _loc2_ = minJ - 1;
  63.             while(_loc2_ <= maxJ + 1)
  64.             {
  65.                if(_loc1_ >= 0 && _loc1_ < 18 && _loc2_ >= 0 && _loc2_ < 18)
  66.                {
  67.                   if(group.allStaticItems[_loc1_][_loc2_] != null)
  68.                   {
  69.                      pairs.push(group.allStaticItems[_loc1_][_loc2_]);
  70.                   }
  71.                   if(group.allActiveItems[_loc1_][_loc2_] != null)
  72.                   {
  73.                      pairs.push(group.allActiveItems[_loc1_][_loc2_]);
  74.                   }
  75.                }
  76.                _loc2_++;
  77.             }
  78.             _loc1_++;
  79.          }
  80.       }
  81.       
  82.       public function moveTo() : void
  83.       {
  84.          this.x = tx = xPosition;
  85.          this.y = ty = yPosition;
  86.       }
  87.       
  88.       public function checkPosition(param1:Number, param2:Number) : void
  89.       {
  90.          var _loc3_:Array = null;
  91.          var _loc4_:* = undefined;
  92.          var _loc5_:* = undefined;
  93.          var _loc6_:* = undefined;
  94.          var _loc7_:String = null;
  95.          var _loc8_:Number = NaN;
  96.          var _loc9_:Number = NaN;
  97.          _loc3_ = new Array();
  98.          for each(_loc4_ in pairs)
  99.          {
  100.             for each(_loc5_ in _loc4_)
  101.             {
  102.                if((_loc6_ = _loc5_.group) != group)
  103.                {
  104.                   _loc7_ = String(_loc5_.group._type);
  105.                   if(!(_loc3_.indexOf(_loc5_) >= 0 || group._type == "man" && (_loc7_ == "wind" || _loc7_ == "spike" || _loc7_ == "book" || _loc7_ == "key" || _loc7_ == "exit" || _loc7_ == "specialDoor" && _loc6_.opened) || _loc7_ == "man" && (group._type == "wind" || group._type == "spike" || group._type == "book" || group._type == "key" || group._type == "exit" || group._type == "specialDoor" && group.opened)))
  106.                   {
  107.                      _loc3_.push(_loc5_);
  108.                      _loc8_ = 0.5 * (itemWidth + _loc5_.itemWidth);
  109.                      _loc9_ = 0.5 * (itemHeight + _loc5_.itemHeight);
  110.                      if(Math.abs(param1 - _loc5_.tx) < _loc8_ && Math.abs(param2 - _loc5_.ty) < _loc9_)
  111.                      {
  112.                         if(!(Boolean(_loc6_.frozen) || Boolean(_loc6_.checked) || Model.isSleep))
  113.                         {
  114.                            _loc6_.hitTest();
  115.                            group.checked = false;
  116.                            group.hitTest();
  117.                            break;
  118.                         }
  119.                         if(Math.abs(_loc5_.tx - tx) >= _loc8_ && Math.abs(_loc5_.ty - ty) >= _loc9_)
  120.                         {
  121.                            skipTable.push(_loc5_);
  122.                         }
  123.                         else
  124.                         {
  125.                            if(Math.abs(_loc5_.tx - tx) >= _loc8_)
  126.                            {
  127.                               xHitObj = _loc5_;
  128.                               xPosition = _loc5_.tx - _loc8_ * ((_loc5_.tx - tx) / Math.abs(_loc5_.tx - tx));
  129.                               checkPosition(xPosition,yPosition);
  130.                               break;
  131.                            }
  132.                            if(Math.abs(_loc5_.ty - ty) >= _loc9_)
  133.                            {
  134.                               yHitObj = _loc5_;
  135.                               yPosition = _loc5_.ty - _loc9_ * ((_loc5_.ty - ty) / Math.abs(_loc5_.ty - ty));
  136.                               checkPosition(xPosition,yPosition);
  137.                               break;
  138.                            }
  139.                         }
  140.                      }
  141.                   }
  142.                }
  143.             }
  144.          }
  145.       }
  146.       
  147.       public function checkHit() : Object
  148.       {
  149.          var _loc1_:Object = null;
  150.          pairs = new Array();
  151.          getPairs();
  152.          xSpeed = group.xspeedArr[group.counter].s;
  153.          ySpeed = group.yspeedArr[group.counter].s;
  154.          xPosition = tx + xSpeed;
  155.          yPosition = ty + ySpeed;
  156.          skipTable = new Array();
  157.          checkPosition(xPosition,yPosition);
  158.          checkSkiped();
  159.          return {
  160.             "obj":this,
  161.             "x":xPosition - tx,
  162.             "y":yPosition - ty,
  163.             "xHit":xHitObj,
  164.             "yHit":yHitObj
  165.          };
  166.       }
  167.       
  168.       protected function checkSkiped() : void
  169.       {
  170.          var _loc1_:* = undefined;
  171.          var _loc2_:Number = NaN;
  172.          var _loc3_:Number = NaN;
  173.          var _loc4_:* = undefined;
  174.          var _loc5_:* = undefined;
  175.          for each(_loc1_ in skipTable)
  176.          {
  177.             _loc2_ = 0.5 * (itemWidth + _loc1_.itemWidth);
  178.             _loc3_ = 0.5 * (itemHeight + _loc1_.itemHeight);
  179.             if(Math.abs(xPosition - _loc1_.tx) < _loc2_ && Math.abs(yPosition - _loc1_.ty) < _loc3_)
  180.             {
  181.                _loc4_ = Math.atan2(_loc1_.ty - yPosition,_loc1_.tx - xPosition);
  182.                _loc5_ = Math.atan2(ySpeed,xSpeed);
  183.                if(Math.abs(Math.sin(_loc4_)) <= Math.abs(Math.sin(_loc5_)))
  184.                {
  185.                   xHitObj = _loc1_;
  186.                   xPosition = _loc1_.tx - _loc2_ * ((_loc1_.tx - tx) / Math.abs(_loc1_.tx - tx));
  187.                }
  188.                else
  189.                {
  190.                   yHitObj = _loc1_;
  191.                   yPosition = _loc1_.ty - _loc3_ * ((_loc1_.ty - ty) / Math.abs(_loc1_.ty - ty));
  192.                }
  193.             }
  194.          }
  195.       }
  196.       
  197.       public function remove() : void
  198.       {
  199.          if(loaderInfo != null)
  200.          {
  201.             parent.removeChild(this);
  202.          }
  203.       }
  204.       
  205.       public function move(param1:Number, param2:Number) : void
  206.       {
  207.          xPosition = tx + param1;
  208.          yPosition = ty + param2;
  209.          moveTo();
  210.       }
  211.    }
  212. }
  213.