home *** CD-ROM | disk | FTP | other *** search
- class com.neodelight.v2D.V2DObject
- {
- var mc;
- var config;
- var id;
- var groups;
- var cells;
- var teams;
- var owner;
- var size;
- var pos;
- var boundingRect;
- var totalBoundingRect;
- var cellsRect;
- var animMgr;
- var animMgrStep;
- var snd;
- var cargo;
- var flags;
- var defHitPoints;
- var maxHitPoints;
- var defDeathCount;
- var events;
- var inactive;
- var ghost;
- var fixed;
- var strong;
- var carrier;
- var carryable;
- var crusher;
- var spareOwner;
- var invincible;
- var gunsoff;
- var actHitPoints;
- var actDeathCount;
- static var FlagInactive = 1;
- static var FlagGhost = 2;
- static var FlagFixed = 4;
- static var FlagStrong = 8;
- static var FlagCarrier = 16;
- static var FlagCarryable = 32;
- static var FlagCrusher = 64;
- static var FlagSpareOwner = 128;
- static var FlagInvincible = 256;
- static var FlagGunsOff = 512;
- function V2DObject(mc, flags)
- {
- this.mc = mc;
- this.mc.engine = this;
- this.config = this.mc;
- if(this.mc.id)
- {
- this.id = this.mc.id;
- }
- else
- {
- this.id = com.neodelight.std.Unique.getKey();
- }
- if(this.id == "test2")
- {
- _global.test2 = this;
- }
- this.mc._name = this.id;
- this.groups = new Array();
- this.cells = new Array();
- this.teams = new Array();
- if(this.mc.owner)
- {
- this.owner = this.mc.owner;
- }
- if(this.mc.team)
- {
- this.teams[this.mc.team] = true;
- }
- this.size = new com.neodelight.std.Vector3D(!this.mc.width ? this.mc._width : com.neodelight.std.XMath.toNumber(this.mc.width),!this.mc.height ? this.mc._height : com.neodelight.std.XMath.toNumber(this.mc.height),0);
- this.pos = new com.neodelight.std.Vector3D(mc._x,mc._y,mc._rotation / 180 * 3.141592653589793);
- this.boundingRect = new com.neodelight.std.Rect(new com.neodelight.std.Vector(this.pos.x,this.pos.y),new com.neodelight.std.Vector(this.pos.x + this.size.x,this.pos.y + this.size.y));
- this.totalBoundingRect = new com.neodelight.std.Rect(new com.neodelight.std.Vector(this.boundingRect.p0.x,this.boundingRect.p0.y),new com.neodelight.std.Vector(this.boundingRect.p1.x,this.boundingRect.p1.y));
- this.cellsRect = new com.neodelight.std.Rect(new com.neodelight.std.Vector(0,0),new com.neodelight.std.Vector(0,0));
- if(this.config.animManager)
- {
- var _loc5_ = com.neodelight.std.ClassLib.getClass(this.config.animManager);
- this.animMgr = new _loc5_(this.mc,this);
- }
- this.animMgrStep = false;
- if(this.config.sound)
- {
- this.snd = new com.neodelight.v2D.V2DSound(this,this.config);
- }
- this.cargo = undefined;
- this.flags = int(flags);
- this.defHitPoints = !mc.statHitPoints ? -1 : com.neodelight.std.XMath.toNumber(mc.statHitPoints);
- this.maxHitPoints = this.defHitPoints;
- this.defDeathCount = com.neodelight.std.XMath.toNumber(int(Math.random() * mc.statDeathCount));
- for(var _loc4_ in this.mc)
- {
- if(_loc4_.substr(0,2) == "on" && (_loc4_.substr(2,1) >= "A" && _loc4_.substr(2,1) <= "Z") && this.mc[_loc4_] != undefined && this.mc[_loc4_] != "")
- {
- if(!this.events)
- {
- this.events = new Array();
- }
- this.events[_loc4_] = this.mc[_loc4_];
- }
- }
- if(this.config.explosion)
- {
- this.config.explosion = com.neodelight.std.Blueprint.getBlueprint(this.config.explosion);
- }
- this.reset();
- if(mc.groupsReg && !mc.mover)
- {
- _global.world.register(this,mc.groupsReg.split(","));
- }
- }
- function reset()
- {
- this.inactive = (this.flags & com.neodelight.v2D.V2DObject.FlagInactive) > 0 || this.mc.flagInactive;
- this.ghost = (this.flags & com.neodelight.v2D.V2DObject.FlagGhost) > 0 || this.mc.flagGhost;
- this.fixed = (this.flags & com.neodelight.v2D.V2DObject.FlagFixed) > 0 || this.mc.flagFixed;
- this.strong = (this.flags & com.neodelight.v2D.V2DObject.FlagStrong) > 0 || this.mc.flagStrong;
- this.carrier = (this.flags & com.neodelight.v2D.V2DObject.FlagCarrier) > 0 || this.mc.flagCarrier;
- this.carryable = (this.flags & com.neodelight.v2D.V2DObject.FlagCarryable) > 0 || this.mc.flagCarryable;
- this.crusher = (this.flags & com.neodelight.v2D.V2DObject.FlagCrusher) > 0 || this.mc.flagCrusher;
- if(this.crusher)
- {
- this.strong = true;
- }
- this.spareOwner = (this.flags & com.neodelight.v2D.V2DObject.FlagSpareOwner) > 0 || this.mc.flagSpareOwner;
- this.invincible = (this.flags & com.neodelight.v2D.V2DObject.FlagInvincible) > 0 || this.mc.flagInvincible;
- this.gunsoff = (this.flags & com.neodelight.v2D.V2DObject.FlagGunsOff) > 0 || this.mc.flagGunsOff;
- this.groups.splice(0,this.groups.length);
- this.cells.splice(0,this.cells.length);
- this.actHitPoints = this.defHitPoints;
- this.actDeathCount = 0;
- }
- function damage(amount)
- {
- if(this.invincible)
- {
- return false;
- }
- if(this.actHitPoints <= 0)
- {
- return undefined;
- }
- this.actHitPoints = Math.max(0,this.actHitPoints - amount);
- if(this.animMgr)
- {
- this.animMgr.visualize("damage",0);
- }
- else
- {
- this.mc.gfx.gotoAndPlay("damage");
- }
- if(this.actHitPoints == 0)
- {
- if(this.defDeathCount)
- {
- this.actDeathCount = this.defDeathCount;
- return true;
- }
- this.die();
- return true;
- }
- return false;
- }
- function eventDamage(self, partner, args)
- {
- if(this.snd)
- {
- this.snd.playEvent("Damage");
- }
- partner.damage(com.neodelight.std.XMath.toNumber(args[0]));
- }
- function eventNextLevel()
- {
- _root.eventNextLevel();
- }
- function eventBonusPlayer(partner, args)
- {
- switch(args[1])
- {
- case "score":
- _global.game.player.score(args[2]);
- break;
- case "lifes":
- _global.game.player.modLifes(args[2]);
- break;
- default:
- trace("#ERROR: unknown bonus type \'" + args[1] + "\' at V2DObject.eventBonusPlayer()");
- }
- if(args[3] == "die")
- {
- this.die();
- }
- }
- function eventDie()
- {
- this.die();
- }
- function die()
- {
- if(this.inactive)
- {
- return undefined;
- }
- this.inactive = true;
- if(this.config.explosion)
- {
- var _loc4_ = this.pos.x + this.size.x * 0.5;
- var _loc3_ = this.pos.y + this.size.y * 0.5;
- _global.world["areaDamage" + this.config.explosion.areaType](this,this.config.explosion.groupsCol.split(","),new com.neodelight.std.Rect(new com.neodelight.std.Vector(_loc4_ - this.config.explosion.areaRadius,_loc3_ - this.config.explosion.areaRadius),new com.neodelight.std.Vector(_loc4_ + this.config.explosion.areaRadius,_loc3_ + this.config.explosion.areaRadius)),this.config.explosion.areaDamageMin,this.config.explosion.areaDamageMax);
- }
- if(this.events.onDie)
- {
- this.events.onDie.run(this,undefined);
- }
- if(this.config.score)
- {
- _global.score.alter(this.config.score);
- }
- if(this.snd)
- {
- this.snd.playEvent("Die");
- }
- if(this.animMgr)
- {
- this.animMgr.visualize("die",1);
- this.kill(true);
- }
- else if(this.mc.gfx)
- {
- this.mc.gfx.gotoAndPlay("die");
- this.kill(true);
- }
- else
- {
- this.kill(false);
- }
- }
- function kill(noRemove)
- {
- this.inactive = true;
- _global.world.deregister(this);
- if(!noRemove)
- {
- this.mc.removeMovieClip();
- this.mc._visible = false;
- }
- false;
- }
- function getBoundingRect()
- {
- return this.boundingRect;
- }
- function getTotalBoundingRect()
- {
- return this.getBoundingRect();
- }
- }
-