home *** CD-ROM | disk | FTP | other *** search
- CLevel = function(mc)
- {
- var _loc1_ = this;
- _loc1_.mc = mc;
- _loc1_.minX = 0;
- _loc1_.maxX = 550;
- };
- CLevel.prototype.prepare = function()
- {
- var _loc1_ = _root;
- this.mc.gotoAndStop(_loc1_.actLevel + 1);
- _loc1_.bg0.gotoAndStop(_loc1_.actLevel + 1);
- };
- CLevel.prototype.load = function()
- {
- var _loc2_ = this;
- var _loc3_ = _root;
- _loc2_.moving = new Array();
- _loc2_.shooting = new Array();
- _loc2_.walls = new Array();
- _loc2_.wallsMoving = new Array();
- _loc2_.wallsFixed = new Array();
- _loc2_.wallsFixedPtrFrom = 0;
- _loc2_.wallsFixedPtrTo = 100;
- _loc2_.xtras = new Array();
- _loc2_.mc.dynosdMc.mcCount = _loc2_.mc.dynosdMc.mcCount + 1;
- _loc2_.monsters = new Array();
- _loc3_.shots = new Array();
- for(var i in _loc2_.mc)
- {
- var _loc1_ = _loc2_.mc[i];
- _loc1_._x = Math.round(_loc1_._x);
- _loc1_._y = Math.round(_loc1_._y);
- _loc1_.x = _loc1_._x;
- _loc1_.y = _loc1_._y;
- _loc1_.size = Math.vector(_loc1_._width,_loc1_._height);
- if(_loc1_.mover ne "")
- {
- _loc1_.move = _loc3_[_loc1_.mover];
- _loc2_.moving.push(_loc1_);
- }
- if(_loc1_.shooter ne "")
- {
- _loc1_.shoot = _loc3_[_loc1_.shooter];
- _loc2_.shooting.push(_loc1_);
- }
- switch(_loc1_.behaviour)
- {
- case "platform":
- if(_loc1_.onStep ne "")
- {
- _loc1_.onStep = _loc3_[_loc1_.onStep];
- }
- _loc1_.w = _loc1_._width;
- _loc1_.v = Math.vector(0,0);
- _loc3_[_loc1_.mover + "Init"](_loc1_);
- _loc2_.walls.push(_loc1_);
- if(_loc1_.mover ne "")
- {
- _loc2_.wallsMoving.push(_loc1_);
- }
- else
- {
- _loc2_.wallsFixed.push(_loc1_);
- }
- break;
- case "xtra":
- _loc1_.gfx.gotoAndStop(_loc1_.type + _loc1_.style);
- _loc2_.xtras.push(_loc1_);
- break;
- case "monster":
- _loc1_.onHitPlayer = _loc3_[_loc1_.onHitPlayer];
- _loc1_.onHitShot = _loc3_[_loc1_.onHitShot];
- if(_loc1_.gfx.hotspot)
- {
- _loc1_.gfx.hotspot._visible = false;
- _loc1_.size.x = _loc1_.gfx.hotspot._width;
- _loc1_.size.y = _loc1_.gfx.hotspot._height;
- }
- _loc1_.v = Math.vector(0,0);
- _loc1_.active = 1;
- _loc1_.actHitpoints = !int(_loc1_.hitpoints == 0) ? int(_loc1_.hitpoints) : 1;
- _loc3_[_loc1_.mover + "Init"](_loc1_);
- _loc2_.monsters.push(_loc1_);
- }
- }
- _loc3_.player.init(_loc2_.mc.playerMc);
- _loc3_.cam.init();
- _loc2_.wallsFixed.sort(_loc3_.CLevel.sortWalls);
- _loc2_.reset();
- };
- CLevel.prototype.reset = function()
- {
- var _loc2_ = this;
- trace("reset level");
- for(var _loc3_ in _loc2_.monsters)
- {
- var _loc1_ = _loc2_.monsters[_loc3_];
- _loc1_.active = 1;
- _loc1_._visible = true;
- _loc1_.gotoAndStop("default");
- }
- for(_loc3_ in _loc2_.xtras)
- {
- _loc1_ = _loc2_.xtras[_loc3_];
- _loc1_.active = 1;
- _loc1_._visible = true;
- _loc1_.gotoAndStop("default");
- }
- _root.player.reset();
- _root.cam.init();
- };
- CLevel.sortWalls = function(a, b)
- {
- return a.y > b.y;
- };
- CLevel.prototype.move = function()
- {
- var _loc1_ = this;
- for(var _loc2_ in _loc1_.moving)
- {
- _loc1_.moving[_loc2_].move();
- }
- for(_loc2_ in _loc1_.shooting)
- {
- _loc1_.shooting[_loc2_].shoot();
- }
- };
- CLevel.prototype.spriteCollision = function(sprite)
- {
- var _loc1_ = sprite;
- var _loc2_ = this;
- var col = {type:0,scale:9999};
- var topY = Math.min(_loc1_.pos.y,_loc1_.t.y) + _loc1_.size.y;
- var bottomY = Math.max(_loc1_.pos.y,_loc1_.t.y) + _loc1_.size.y;
- while(_loc2_.wallsFixed[_loc2_.wallsFixedPtrFrom].y < topY)
- {
- _loc2_.wallsFixedPtrFrom = _loc2_.wallsFixedPtrFrom + 1;
- }
- while(_loc2_.wallsFixed[_loc2_.wallsFixedPtrFrom - 1].y >= topY && _loc2_.wallsFixedPtrFrom > 0)
- {
- _loc2_.wallsFixedPtrFrom = _loc2_.wallsFixedPtrFrom - 1;
- }
- while(_loc2_.wallsFixed[_loc2_.wallsFixedPtrTo + 1].y < bottomY && _loc2_.wallsFixedPtrTo < _loc2_.wallsFixed.length - 1)
- {
- _loc2_.wallsFixedPtrTo = _loc2_.wallsFixedPtrTo + 1;
- }
- while((_loc2_.wallsFixed[_loc2_.wallsFixedPtrTo].y > bottomY || _loc2_.wallsFixed[_loc2_.wallsFixedPtrTo].y == undefined) && _loc2_.wallsFixedPtrTo > 0)
- {
- _loc2_.wallsFixedPtrTo = _loc2_.wallsFixedPtrTo - 1;
- }
- var i = _loc2_.wallsFixedPtrFrom;
- while(i <= _loc2_.wallsFixedPtrTo)
- {
- var _loc3_ = _loc2_.wallsFixed[i];
- if(_loc1_.pos.y + _loc1_.size.y <= _loc3_.y && _loc1_.t.y + _loc1_.size.y >= _loc3_.y)
- {
- var scale = (_loc3_.y - (_loc1_.pos.y + _loc1_.size.y)) / (_loc1_.t.y - _loc1_.pos.y);
- if(scale < col.scale)
- {
- var dx = _loc1_.pos.x + scale * (_loc1_.t.x - _loc1_.pos.x) - _loc3_.x;
- if(dx <= _loc3_.w && dx >= -1 * _loc1_.size.x)
- {
- col.scale = scale;
- col.type = 1;
- col.obj = _loc3_;
- }
- }
- }
- i++;
- }
- for(var i in _loc2_.wallsMoving)
- {
- _loc3_ = _loc2_.wallsMoving[i];
- 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)
- {
- var scale = (_loc3_.y - (_loc1_.pos.y + _loc1_.size.y)) / (_loc1_.t.y - _loc1_.pos.y);
- if(scale < col.scale)
- {
- var dx = _loc1_.pos.x + scale * (_loc1_.t.x - _loc1_.pos.x) - _loc3_.x;
- if(dx <= _loc3_.w && dx >= -1 * _loc1_.size.x)
- {
- col.scale = scale;
- col.type = 1;
- col.obj = _loc3_;
- }
- }
- }
- }
- return col;
- };
- CLevel.prototype.xtrasCollision = function(p0, p1, sprite)
- {
- var _loc2_ = _root;
- for(var i in this.xtras)
- {
- var _loc1_ = this.xtras[i];
- if(_loc1_.active)
- {
- var _loc3_ = Math.rectHit(p0,p1,_loc1_,Math.vectorAdded(_loc1_,_loc1_.size));
- if(_loc3_)
- {
- mc._x = _loc1_.x;
- mc._y = _loc1_.y;
- switch(_loc1_.type)
- {
- case "score100":
- _loc2_.actScore += 100;
- _loc2_.osd.update();
- var display = "100 Points";
- _loc2_.snd.playEvent("sPickup1.wav",1);
- _loc2_.fPickText(display,_loc1_);
- _loc1_.gotoAndPlay("vanish");
- _loc1_.active = 0;
- break;
- case "score200":
- _loc2_.actScore += 200;
- _loc2_.osd.update();
- var display = "200 Points";
- _loc2_.snd.playEvent("sPickup1.wav",1);
- _loc2_.fPickText(display,_loc1_);
- _loc1_.gotoAndPlay("vanish");
- _loc1_.active = 0;
- break;
- case "score500":
- _loc2_.actScore += 500;
- _loc2_.osd.update();
- var display = "500 Points";
- _loc2_.snd.playEvent("sPickup1.wav",1);
- _loc2_.fPickText(display,_loc1_);
- _loc1_.gotoAndPlay("vanish");
- _loc1_.active = 0;
- break;
- case "life":
- if(_loc2_.actLifes < _loc2_.maxShots)
- {
- _loc2_.actLifes = _loc2_.actLifes + 1;
- _loc2_.osd.update();
- var display = "Extra Life";
- _loc2_.snd.playEvent("sPickup2.wav",1);
- _loc2_.fPickText(display,_loc1_);
- _loc1_.gotoAndPlay("vanish");
- _loc1_.active = 0;
- }
- break;
- case "shots":
- if(_loc2_.actShots < _loc2_.maxShots)
- {
- _loc2_.actShots = _loc2_.actShots + 1;
- _loc2_.osd.update();
- var display = "Extra Shot";
- _loc2_.snd.playEvent("sPickup2.wav",1);
- _loc2_.fPickText(display,_loc1_);
- _loc1_.gotoAndPlay("vanish");
- _loc1_.active = 0;
- }
- break;
- default:
- trace("unknown xtra type: " + _loc1_.type);
- }
- }
- }
- }
- };
- CLevel.prototype.monstersCollision2 = function(p0, sprite)
- {
- var _loc2_ = sprite;
- for(var i in this.monsters)
- {
- var _loc1_ = this.monsters[i];
- if(_loc1_.active)
- {
- var p1 = _loc1_.gfx.hotspot;
- var _loc3_ = p0.hitTest(p1);
- if(_loc3_)
- {
- if(_loc2_.isPlayer)
- {
- _loc1_.onHitPlayer(_loc2_);
- }
- if(_loc2_.isShot)
- {
- _loc1_.onHitShot(_loc2_);
- }
- }
- }
- }
- };
- CLevel.prototype.monstersCollision = function(p0, p1, sprite)
- {
- var _loc2_ = sprite;
- };
- CLevel.prototype.shotsCollision = function(p0, p1, sprite)
- {
- var _loc3_ = sprite;
- for(var i in _root.shots)
- {
- var _loc1_ = _root.shots[i];
- if(_loc1_.active)
- {
- var _loc2_ = Math.rectHit(p0,p1,_loc1_.pos,Math.vectorAdded(_loc1_.pos,_loc1_.v));
- if(_loc2_)
- {
- if(_loc3_.isPlayer)
- {
- _loc1_.onHitPlayer(_loc3_);
- }
- }
- }
- }
- };
-