home *** CD-ROM | disk | FTP | other *** search
/ One Click 21 (Special) / OC021.iso / Juegos / miniscrapercaper / miniscrapercaper.swf / scripts / frame_3 / DoAction_8.as < prev    next >
Encoding:
Text File  |  2006-02-02  |  9.7 KB  |  312 lines

  1. CLevel = function(mc)
  2. {
  3.    var _loc1_ = this;
  4.    _loc1_.mc = mc;
  5.    _loc1_.minX = 0;
  6.    _loc1_.maxX = 550;
  7. };
  8. CLevel.prototype.prepare = function()
  9. {
  10.    var _loc1_ = _root;
  11.    this.mc.gotoAndStop(_loc1_.actLevel + 1);
  12.    _loc1_.bg0.gotoAndStop(_loc1_.actLevel + 1);
  13. };
  14. CLevel.prototype.load = function()
  15. {
  16.    var _loc2_ = this;
  17.    var _loc3_ = _root;
  18.    _loc2_.moving = new Array();
  19.    _loc2_.shooting = new Array();
  20.    _loc2_.walls = new Array();
  21.    _loc2_.wallsMoving = new Array();
  22.    _loc2_.wallsFixed = new Array();
  23.    _loc2_.wallsFixedPtrFrom = 0;
  24.    _loc2_.wallsFixedPtrTo = 100;
  25.    _loc2_.xtras = new Array();
  26.    _loc2_.mc.dynosdMc.mcCount = _loc2_.mc.dynosdMc.mcCount + 1;
  27.    _loc2_.monsters = new Array();
  28.    _loc3_.shots = new Array();
  29.    for(var i in _loc2_.mc)
  30.    {
  31.       var _loc1_ = _loc2_.mc[i];
  32.       _loc1_._x = Math.round(_loc1_._x);
  33.       _loc1_._y = Math.round(_loc1_._y);
  34.       _loc1_.x = _loc1_._x;
  35.       _loc1_.y = _loc1_._y;
  36.       _loc1_.size = Math.vector(_loc1_._width,_loc1_._height);
  37.       if(_loc1_.mover ne "")
  38.       {
  39.          _loc1_.move = _loc3_[_loc1_.mover];
  40.          _loc2_.moving.push(_loc1_);
  41.       }
  42.       if(_loc1_.shooter ne "")
  43.       {
  44.          _loc1_.shoot = _loc3_[_loc1_.shooter];
  45.          _loc2_.shooting.push(_loc1_);
  46.       }
  47.       switch(_loc1_.behaviour)
  48.       {
  49.          case "platform":
  50.             if(_loc1_.onStep ne "")
  51.             {
  52.                _loc1_.onStep = _loc3_[_loc1_.onStep];
  53.             }
  54.             _loc1_.w = _loc1_._width;
  55.             _loc1_.v = Math.vector(0,0);
  56.             _loc3_[_loc1_.mover + "Init"](_loc1_);
  57.             _loc2_.walls.push(_loc1_);
  58.             if(_loc1_.mover ne "")
  59.             {
  60.                _loc2_.wallsMoving.push(_loc1_);
  61.             }
  62.             else
  63.             {
  64.                _loc2_.wallsFixed.push(_loc1_);
  65.             }
  66.             break;
  67.          case "xtra":
  68.             _loc1_.gfx.gotoAndStop(_loc1_.type + _loc1_.style);
  69.             _loc2_.xtras.push(_loc1_);
  70.             break;
  71.          case "monster":
  72.             _loc1_.onHitPlayer = _loc3_[_loc1_.onHitPlayer];
  73.             _loc1_.onHitShot = _loc3_[_loc1_.onHitShot];
  74.             if(_loc1_.gfx.hotspot)
  75.             {
  76.                _loc1_.gfx.hotspot._visible = false;
  77.                _loc1_.size.x = _loc1_.gfx.hotspot._width;
  78.                _loc1_.size.y = _loc1_.gfx.hotspot._height;
  79.             }
  80.             _loc1_.v = Math.vector(0,0);
  81.             _loc1_.active = 1;
  82.             _loc1_.actHitpoints = !int(_loc1_.hitpoints == 0) ? int(_loc1_.hitpoints) : 1;
  83.             _loc3_[_loc1_.mover + "Init"](_loc1_);
  84.             _loc2_.monsters.push(_loc1_);
  85.       }
  86.    }
  87.    _loc3_.player.init(_loc2_.mc.playerMc);
  88.    _loc3_.cam.init();
  89.    _loc2_.wallsFixed.sort(_loc3_.CLevel.sortWalls);
  90.    _loc2_.reset();
  91. };
  92. CLevel.prototype.reset = function()
  93. {
  94.    var _loc2_ = this;
  95.    trace("reset level");
  96.    for(var _loc3_ in _loc2_.monsters)
  97.    {
  98.       var _loc1_ = _loc2_.monsters[_loc3_];
  99.       _loc1_.active = 1;
  100.       _loc1_._visible = true;
  101.       _loc1_.gotoAndStop("default");
  102.    }
  103.    for(_loc3_ in _loc2_.xtras)
  104.    {
  105.       _loc1_ = _loc2_.xtras[_loc3_];
  106.       _loc1_.active = 1;
  107.       _loc1_._visible = true;
  108.       _loc1_.gotoAndStop("default");
  109.    }
  110.    _root.player.reset();
  111.    _root.cam.init();
  112. };
  113. CLevel.sortWalls = function(a, b)
  114. {
  115.    return a.y > b.y;
  116. };
  117. CLevel.prototype.move = function()
  118. {
  119.    var _loc1_ = this;
  120.    for(var _loc2_ in _loc1_.moving)
  121.    {
  122.       _loc1_.moving[_loc2_].move();
  123.    }
  124.    for(_loc2_ in _loc1_.shooting)
  125.    {
  126.       _loc1_.shooting[_loc2_].shoot();
  127.    }
  128. };
  129. CLevel.prototype.spriteCollision = function(sprite)
  130. {
  131.    var _loc1_ = sprite;
  132.    var _loc2_ = this;
  133.    var col = {type:0,scale:9999};
  134.    var topY = Math.min(_loc1_.pos.y,_loc1_.t.y) + _loc1_.size.y;
  135.    var bottomY = Math.max(_loc1_.pos.y,_loc1_.t.y) + _loc1_.size.y;
  136.    while(_loc2_.wallsFixed[_loc2_.wallsFixedPtrFrom].y < topY)
  137.    {
  138.       _loc2_.wallsFixedPtrFrom = _loc2_.wallsFixedPtrFrom + 1;
  139.    }
  140.    while(_loc2_.wallsFixed[_loc2_.wallsFixedPtrFrom - 1].y >= topY && _loc2_.wallsFixedPtrFrom > 0)
  141.    {
  142.       _loc2_.wallsFixedPtrFrom = _loc2_.wallsFixedPtrFrom - 1;
  143.    }
  144.    while(_loc2_.wallsFixed[_loc2_.wallsFixedPtrTo + 1].y < bottomY && _loc2_.wallsFixedPtrTo < _loc2_.wallsFixed.length - 1)
  145.    {
  146.       _loc2_.wallsFixedPtrTo = _loc2_.wallsFixedPtrTo + 1;
  147.    }
  148.    while((_loc2_.wallsFixed[_loc2_.wallsFixedPtrTo].y > bottomY || _loc2_.wallsFixed[_loc2_.wallsFixedPtrTo].y == undefined) && _loc2_.wallsFixedPtrTo > 0)
  149.    {
  150.       _loc2_.wallsFixedPtrTo = _loc2_.wallsFixedPtrTo - 1;
  151.    }
  152.    var i = _loc2_.wallsFixedPtrFrom;
  153.    while(i <= _loc2_.wallsFixedPtrTo)
  154.    {
  155.       var _loc3_ = _loc2_.wallsFixed[i];
  156.       if(_loc1_.pos.y + _loc1_.size.y <= _loc3_.y && _loc1_.t.y + _loc1_.size.y >= _loc3_.y)
  157.       {
  158.          var scale = (_loc3_.y - (_loc1_.pos.y + _loc1_.size.y)) / (_loc1_.t.y - _loc1_.pos.y);
  159.          if(scale < col.scale)
  160.          {
  161.             var dx = _loc1_.pos.x + scale * (_loc1_.t.x - _loc1_.pos.x) - _loc3_.x;
  162.             if(dx <= _loc3_.w && dx >= -1 * _loc1_.size.x)
  163.             {
  164.                col.scale = scale;
  165.                col.type = 1;
  166.                col.obj = _loc3_;
  167.             }
  168.          }
  169.       }
  170.       i++;
  171.    }
  172.    for(var i in _loc2_.wallsMoving)
  173.    {
  174.       _loc3_ = _loc2_.wallsMoving[i];
  175.       if(_loc1_.pos.y + _loc1_.size.y <= _loc3_.y + Math.abs(_loc3_.v.y) + 1 && _loc1_.t.y + _loc1_.size.y >= _loc3_.y - Math.abs(_loc3_.v.y) - 1)
  176.       {
  177.          var scale = (_loc3_.y - (_loc1_.pos.y + _loc1_.size.y)) / (_loc1_.t.y - _loc1_.pos.y);
  178.          if(scale < col.scale)
  179.          {
  180.             var dx = _loc1_.pos.x + scale * (_loc1_.t.x - _loc1_.pos.x) - _loc3_.x;
  181.             if(dx <= _loc3_.w && dx >= -1 * _loc1_.size.x)
  182.             {
  183.                col.scale = scale;
  184.                col.type = 1;
  185.                col.obj = _loc3_;
  186.             }
  187.          }
  188.       }
  189.    }
  190.    return col;
  191. };
  192. CLevel.prototype.xtrasCollision = function(p0, p1, sprite)
  193. {
  194.    var _loc2_ = _root;
  195.    for(var i in this.xtras)
  196.    {
  197.       var _loc1_ = this.xtras[i];
  198.       if(_loc1_.active)
  199.       {
  200.          var _loc3_ = Math.rectHit(p0,p1,_loc1_,Math.vectorAdded(_loc1_,_loc1_.size));
  201.          if(_loc3_)
  202.          {
  203.             mc._x = _loc1_.x;
  204.             mc._y = _loc1_.y;
  205.             switch(_loc1_.type)
  206.             {
  207.                case "score100":
  208.                   _loc2_.actScore += 100;
  209.                   _loc2_.osd.update();
  210.                   var display = "100 Points";
  211.                   _loc2_.snd.playEvent("sPickup1.wav",1);
  212.                   _loc2_.fPickText(display,_loc1_);
  213.                   _loc1_.gotoAndPlay("vanish");
  214.                   _loc1_.active = 0;
  215.                   break;
  216.                case "score200":
  217.                   _loc2_.actScore += 200;
  218.                   _loc2_.osd.update();
  219.                   var display = "200 Points";
  220.                   _loc2_.snd.playEvent("sPickup1.wav",1);
  221.                   _loc2_.fPickText(display,_loc1_);
  222.                   _loc1_.gotoAndPlay("vanish");
  223.                   _loc1_.active = 0;
  224.                   break;
  225.                case "score500":
  226.                   _loc2_.actScore += 500;
  227.                   _loc2_.osd.update();
  228.                   var display = "500 Points";
  229.                   _loc2_.snd.playEvent("sPickup1.wav",1);
  230.                   _loc2_.fPickText(display,_loc1_);
  231.                   _loc1_.gotoAndPlay("vanish");
  232.                   _loc1_.active = 0;
  233.                   break;
  234.                case "life":
  235.                   if(_loc2_.actLifes < _loc2_.maxShots)
  236.                   {
  237.                      _loc2_.actLifes = _loc2_.actLifes + 1;
  238.                      _loc2_.osd.update();
  239.                      var display = "Extra Life";
  240.                      _loc2_.snd.playEvent("sPickup2.wav",1);
  241.                      _loc2_.fPickText(display,_loc1_);
  242.                      _loc1_.gotoAndPlay("vanish");
  243.                      _loc1_.active = 0;
  244.                   }
  245.                   break;
  246.                case "shots":
  247.                   if(_loc2_.actShots < _loc2_.maxShots)
  248.                   {
  249.                      _loc2_.actShots = _loc2_.actShots + 1;
  250.                      _loc2_.osd.update();
  251.                      var display = "Extra Shot";
  252.                      _loc2_.snd.playEvent("sPickup2.wav",1);
  253.                      _loc2_.fPickText(display,_loc1_);
  254.                      _loc1_.gotoAndPlay("vanish");
  255.                      _loc1_.active = 0;
  256.                   }
  257.                   break;
  258.                default:
  259.                   trace("unknown xtra type: " + _loc1_.type);
  260.             }
  261.          }
  262.       }
  263.    }
  264. };
  265. CLevel.prototype.monstersCollision2 = function(p0, sprite)
  266. {
  267.    var _loc2_ = sprite;
  268.    for(var i in this.monsters)
  269.    {
  270.       var _loc1_ = this.monsters[i];
  271.       if(_loc1_.active)
  272.       {
  273.          var p1 = _loc1_.gfx.hotspot;
  274.          var _loc3_ = p0.hitTest(p1);
  275.          if(_loc3_)
  276.          {
  277.             if(_loc2_.isPlayer)
  278.             {
  279.                _loc1_.onHitPlayer(_loc2_);
  280.             }
  281.             if(_loc2_.isShot)
  282.             {
  283.                _loc1_.onHitShot(_loc2_);
  284.             }
  285.          }
  286.       }
  287.    }
  288. };
  289. CLevel.prototype.monstersCollision = function(p0, p1, sprite)
  290. {
  291.    var _loc2_ = sprite;
  292. };
  293. CLevel.prototype.shotsCollision = function(p0, p1, sprite)
  294. {
  295.    var _loc3_ = sprite;
  296.    for(var i in _root.shots)
  297.    {
  298.       var _loc1_ = _root.shots[i];
  299.       if(_loc1_.active)
  300.       {
  301.          var _loc2_ = Math.rectHit(p0,p1,_loc1_.pos,Math.vectorAdded(_loc1_.pos,_loc1_.v));
  302.          if(_loc2_)
  303.          {
  304.             if(_loc3_.isPlayer)
  305.             {
  306.                _loc1_.onHitPlayer(_loc3_);
  307.             }
  308.          }
  309.       }
  310.    }
  311. };
  312.