home *** CD-ROM | disk | FTP | other *** search
- class com.neodelight.v2D.World
- {
- var objects;
- var raster;
- var tmpCellsRect;
- var levelMc;
- var layers;
- var arrayStyleLevels;
- var arrayStyleLevel;
- var arrayStyleLevelPointer;
- function World(raster, levelMc)
- {
- _global.world = this;
- this.objects = new Array();
- this.raster = raster;
- this.tmpCellsRect = new com.neodelight.std.Rect(new com.neodelight.std.Vector(0,0),new com.neodelight.std.Vector(0,0));
- this.levelMc = levelMc;
- this.layers = new Array();
- this.arrayStyleLevels = new Array();
- }
- function init(levelMc, layers)
- {
- if(levelMc)
- {
- this.levelMc = levelMc;
- }
- if(layers)
- {
- this.layers = layers;
- }
- this.layers = [_root.bg0];
- this.reset();
- }
- function reset()
- {
- for(var _loc2_ in this.objects)
- {
- delete this.objects[_loc2_];
- }
- com.neodelight.std.Canvas.getCanvas(this.levelMc.shotsMc,"shots").reset();
- com.neodelight.std.Canvas.getCanvas(this.levelMc.explosionsMc,"explosions").reset();
- com.neodelight.std.Canvas.getCanvas(this.levelMc.dynosdMc,"dynosd").reset();
- com.neodelight.game.EventScript.reset();
- }
- function prepare()
- {
- this.levelMc.gotoAndStop("clear");
- for(var _loc2_ in this.layers)
- {
- this.layers[_loc2_].gotoAndStop("clear");
- }
- }
- function setLevel()
- {
- this.levelMc.gotoAndStop(_global.game.actLevel + 1);
- for(var _loc3_ in this.layers)
- {
- this.layers[_loc3_].gotoAndStop(_global.game.actLevel + 1);
- }
- }
- function readLevel(levelMc)
- {
- if(!levelMc)
- {
- levelMc = this.levelMc;
- }
- this.reset();
- for(var _loc6_ in levelMc)
- {
- var _loc2_ = levelMc[_loc6_];
- if(typeof _loc2_ == "movieclip")
- {
- if(_loc2_.blueprint)
- {
- com.neodelight.std.Blueprint.apply(_loc2_);
- }
- if(_loc2_.id)
- {
- _loc2_._name = _loc2_.id;
- }
- }
- }
- for(_loc6_ in levelMc)
- {
- _loc2_ = levelMc[_loc6_];
- if(typeof _loc2_ == "movieclip")
- {
- var _loc4_ = com.neodelight.std.ClassLib.getClass(_loc2_.behaviour);
- if(_loc4_)
- {
- var _loc5_ = new _loc4_(_loc2_);
- }
- }
- }
- }
- function arrayStyleAddLevel(data)
- {
- this.arrayStyleLevels[data.id] = data;
- }
- function arrayStyleInitLevel()
- {
- this.arrayStyleLevel = this.arrayStyleLevels[_global.game.actLevel];
- this.arrayStyleLevelPointer = 0;
- for(var _loc3_ in this.levelMc)
- {
- if(typeof this.levelMc[_loc3_] == "movieclip")
- {
- this.levelMc[_loc3_].removeMovieClip();
- }
- }
- this.levelMc._x = 0;
- this.levelMc._y = 0;
- this.levelMc._xscale = this.levelMc._yscale = 100;
- }
- function arrayStyleCreateNextSprites(x)
- {
- if(x == undefined)
- {
- trace("#ERROR: World.arrayStyleCreateNextSprites(): x == undefined");
- return undefined;
- }
- var _loc5_ = this.arrayStyleLevel.data;
- while(this.arrayStyleLevelPointer < _loc5_.length && _loc5_[this.arrayStyleLevelPointer].x <= x)
- {
- var _loc2_ = _loc5_[this.arrayStyleLevelPointer];
- if(_loc2_.blueprint)
- {
- com.neodelight.std.Blueprint.apply(_loc2_);
- }
- if(!_loc2_.libId || _loc2_.x == undefined || _loc2_.y == undefined)
- {
- trace("#ERROR: World.arrayStyleLevelPointer(): leveldata contains object without libId || x || y: " + com.neodelight.std.XString.dump(_loc2_));
- break;
- }
- var _loc3_ = this.levelMc.attachMovie(_loc2_.libId,!_loc2_.id ? com.neodelight.std.Unique.getKey() : _loc2_.id,this.levelMc.getNextHighestDepth());
- for(var _loc7_ in _loc2_)
- {
- _loc3_[_loc7_] = _loc2_[_loc7_];
- }
- _loc3_.id = _loc3_._name;
- _loc3_._x = _loc2_.x;
- _loc3_._y = _loc2_.y;
- var _loc4_ = com.neodelight.std.ClassLib.getClass(_loc2_.behaviour);
- if(!_loc4_)
- {
- trace("#ERROR: World.arrayStyleLevelPointer(): leveldata contains object unknown class: " + _loc2_.behaviour);
- break;
- }
- var _loc6_ = new _loc4_(_loc3_);
- this.arrayStyleLevelPointer = this.arrayStyleLevelPointer + 1;
- }
- }
- function register(o, groups)
- {
- for(var _loc6_ in groups)
- {
- if(!this.objects[groups[_loc6_]])
- {
- this.objects[groups[_loc6_]] = new Array();
- }
- }
- var _loc7_ = o.getTotalBoundingRect();
- o.cellsRect.p0.x = Math.floor(_loc7_.p0.x / this.raster);
- o.cellsRect.p1.x = Math.floor(_loc7_.p1.x / this.raster);
- o.cellsRect.p0.y = Math.floor(_loc7_.p0.y / this.raster);
- o.cellsRect.p1.y = Math.floor(_loc7_.p1.y / this.raster);
- for(_loc6_ in groups)
- {
- var _loc6_ = groups[_loc6_];
- o.groups[_loc6_] = true;
- var _loc4_ = o.cellsRect.p0.x;
- while(_loc4_ <= o.cellsRect.p1.x)
- {
- var _loc2_ = o.cellsRect.p0.y;
- while(_loc2_ <= o.cellsRect.p1.y)
- {
- if(!this.objects[_loc6_][_loc4_ + "_" + _loc2_])
- {
- this.objects[_loc6_][_loc4_ + "_" + _loc2_] = new Array();
- }
- this.objects[_loc6_][_loc4_ + "_" + _loc2_][o.id] = o;
- o.cells[_loc4_ + "_" + _loc2_] = true;
- _loc2_ = _loc2_ + 1;
- }
- _loc4_ = _loc4_ + 1;
- }
- }
- }
- function deregister(o)
- {
- var _loc5_ = false;
- for(var _loc6_ in o.groups)
- {
- _loc5_ = true;
- if(!this.objects[o.groups[_loc6_]])
- {
- this.objects[o.groups[_loc6_]] = new Array();
- }
- }
- if(!_loc5_)
- {
- return undefined;
- }
- var _loc7_ = o.getTotalBoundingRect();
- for(_loc6_ in o.groups)
- {
- var _loc6_ = o.groups[_loc6_];
- delete o.groups[_loc6_];
- var _loc4_ = o.cellsRect.p0.x;
- while(_loc4_ <= o.cellsRect.p1.x)
- {
- var _loc3_ = o.cellsRect.p0.y;
- while(_loc3_ <= o.cellsRect.p1.y)
- {
- delete this.objects[_loc6_][_loc4_ + "_" + _loc3_][o.id];
- delete o.cells[_loc4_ + "_" + _loc3_];
- _loc3_ = _loc3_ + 1;
- }
- _loc4_ = _loc4_ + 1;
- }
- }
- }
- function registerUpdate(o, groups)
- {
- var _loc8_ = o.getBoundingRect();
- this.tmpCellsRect.p0.x = Math.floor(_loc8_.p0.x / this.raster);
- this.tmpCellsRect.p1.x = Math.floor(_loc8_.p1.x / this.raster);
- this.tmpCellsRect.p0.y = Math.floor(_loc8_.p0.y / this.raster);
- this.tmpCellsRect.p1.y = Math.floor(_loc8_.p1.y / this.raster);
- if(this.tmpCellsRect.p0.x != o.cellsRect.p0.x || this.tmpCellsRect.p1.x != o.cellsRect.p1.x || this.tmpCellsRect.p0.y != o.cellsRect.p0.y || this.tmpCellsRect.p1.y != o.cellsRect.p1.y)
- {
- for(var _loc7_ in groups)
- {
- o.groups[_loc7_] = true;
- var _loc5_ = o.cellsRect.p0.x;
- while(_loc5_ <= o.cellsRect.p1.x)
- {
- var _loc4_ = o.cellsRect.p0.y;
- while(_loc4_ <= o.cellsRect.p1.y)
- {
- delete this.objects[_loc7_][_loc5_ + "_" + _loc4_][o.id];
- o.cells[_loc5_ + "_" + _loc4_] = false;
- _loc4_ = _loc4_ + 1;
- }
- _loc5_ = _loc5_ + 1;
- }
- }
- var _loc9_ = this.tmpCellsRect;
- this.tmpCellsRect = o.cellsRect;
- o.cellsRect = _loc9_;
- for(_loc7_ in groups)
- {
- o.groups[_loc7_] = true;
- _loc5_ = o.cellsRect.p0.x;
- while(_loc5_ <= o.cellsRect.p1.x)
- {
- _loc4_ = o.cellsRect.p0.y;
- while(_loc4_ <= o.cellsRect.p1.y)
- {
- if(isNaN(_loc4_))
- {
- _root.gotoAndStop("debug");
- return undefined;
- }
- if(!this.objects[_loc7_][_loc5_ + "_" + _loc4_])
- {
- this.objects[_loc7_][_loc5_ + "_" + _loc4_] = new Array();
- }
- this.objects[_loc7_][_loc5_ + "_" + _loc4_][o.id] = o;
- o.cells[_loc5_ + "_" + _loc4_] = true;
- _loc4_ = _loc4_ + 1;
- }
- _loc5_ = _loc5_ + 1;
- }
- }
- }
- }
- function getCollisionGroup(groupId, rect, caller)
- {
- var _loc6_ = caller.id;
- var _loc8_ = this.objects[groupId];
- var _loc12_ = Math.floor(rect.p0.x / this.raster);
- var _loc11_ = Math.ceil(rect.p1.x / this.raster);
- var _loc10_ = Math.floor(rect.p0.y / this.raster);
- var _loc9_ = Math.ceil(rect.p1.y / this.raster);
- var _loc4_ = undefined;
- var _loc2_ = undefined;
- var _loc5_ = _loc12_;
- while(_loc5_ < _loc11_)
- {
- var _loc3_ = _loc10_;
- while(_loc3_ < _loc9_)
- {
- _loc2_ = _loc8_[_loc5_ + "_" + _loc3_];
- for(var _loc7_ in _loc2_)
- {
- if(!(_loc7_ == _loc6_ || _loc2_[_loc7_].inactive))
- {
- if(!_loc4_)
- {
- _loc4_ = new Array();
- }
- _loc4_[_loc7_] = _loc2_[_loc7_];
- }
- }
- _loc3_ = _loc3_ + 1;
- }
- _loc5_ = _loc5_ + 1;
- }
- return _loc4_;
- }
- function getCollisionGroups(caller, groups, rect)
- {
- var _loc9_ = caller.id;
- var _loc4_ = undefined;
- for(var _loc14_ in groups)
- {
- var _loc6_ = this.objects[groups[_loc14_]];
- var _loc12_ = Math.floor(rect.p0.x / this.raster);
- var _loc10_ = Math.ceil(rect.p1.x / this.raster);
- var _loc8_ = Math.floor(rect.p0.y / this.raster);
- var _loc7_ = Math.ceil(rect.p1.y / this.raster);
- var _loc2_ = undefined;
- var _loc5_ = _loc12_;
- while(_loc5_ < _loc10_)
- {
- var _loc3_ = _loc8_;
- while(_loc3_ < _loc7_)
- {
- _loc2_ = _loc6_[_loc5_ + "_" + _loc3_];
- for(_loc14_ in _loc2_)
- {
- if(!(_loc14_ == _loc9_ || _loc2_[_loc14_].inactive))
- {
- if(!_loc4_)
- {
- _loc4_ = new Array();
- }
- _loc4_[_loc14_] = _loc2_[_loc14_];
- }
- }
- _loc3_ = _loc3_ + 1;
- }
- _loc5_ = _loc5_ + 1;
- }
- }
- return _loc4_;
- }
- function areaDamage70(caller, groups, rect, damageMin, damageMax)
- {
- var _loc4_ = this.getCollisionGroups(caller,groups,rect);
- for(var _loc6_ in _loc4_)
- {
- var _loc2_ = _loc4_[_loc6_];
- var _loc3_ = _loc2_.collisionCheck70(rect);
- if(_loc3_ > 0)
- {
- _loc2_.damage(damageMax);
- }
- }
- }
- function areaDamage71(caller, groups, circleBounding, damageMin, damageMax)
- {
- var _loc4_ = this.getCollisionGroups(caller,groups,circleBounding);
- for(var _loc7_ in _loc4_)
- {
- var _loc3_ = _loc4_[_loc7_];
- var _loc2_ = _loc3_.collisionCheck71(circleBounding);
- if(_loc2_ > 0)
- {
- _loc3_.damage((damageMax - damageMin) * _loc2_ + damageMin);
- }
- }
- }
- }
-