home *** CD-ROM | disk | FTP | other *** search
/ 600 Games / 600games.iso / Acao / midnightstrike1.swf / scripts / __Packages / com / neodelight / v2D / V2DObject.as < prev    next >
Encoding:
Text File  |  2007-04-02  |  8.1 KB  |  262 lines

  1. class com.neodelight.v2D.V2DObject
  2. {
  3.    var mc;
  4.    var config;
  5.    var id;
  6.    var groups;
  7.    var cells;
  8.    var teams;
  9.    var owner;
  10.    var size;
  11.    var pos;
  12.    var boundingRect;
  13.    var totalBoundingRect;
  14.    var cellsRect;
  15.    var animMgr;
  16.    var animMgrStep;
  17.    var snd;
  18.    var cargo;
  19.    var flags;
  20.    var defHitPoints;
  21.    var maxHitPoints;
  22.    var defDeathCount;
  23.    var events;
  24.    var inactive;
  25.    var ghost;
  26.    var fixed;
  27.    var strong;
  28.    var carrier;
  29.    var carryable;
  30.    var crusher;
  31.    var spareOwner;
  32.    var invincible;
  33.    var gunsoff;
  34.    var actHitPoints;
  35.    var actDeathCount;
  36.    static var FlagInactive = 1;
  37.    static var FlagGhost = 2;
  38.    static var FlagFixed = 4;
  39.    static var FlagStrong = 8;
  40.    static var FlagCarrier = 16;
  41.    static var FlagCarryable = 32;
  42.    static var FlagCrusher = 64;
  43.    static var FlagSpareOwner = 128;
  44.    static var FlagInvincible = 256;
  45.    static var FlagGunsOff = 512;
  46.    function V2DObject(mc, flags)
  47.    {
  48.       this.mc = mc;
  49.       this.mc.engine = this;
  50.       this.config = this.mc;
  51.       if(this.mc.id)
  52.       {
  53.          this.id = this.mc.id;
  54.       }
  55.       else
  56.       {
  57.          this.id = com.neodelight.std.Unique.getKey();
  58.       }
  59.       if(this.id == "test2")
  60.       {
  61.          _global.test2 = this;
  62.       }
  63.       this.mc._name = this.id;
  64.       this.groups = new Array();
  65.       this.cells = new Array();
  66.       this.teams = new Array();
  67.       if(this.mc.owner)
  68.       {
  69.          this.owner = this.mc.owner;
  70.       }
  71.       if(this.mc.team)
  72.       {
  73.          this.teams[this.mc.team] = true;
  74.       }
  75.       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);
  76.       this.pos = new com.neodelight.std.Vector3D(mc._x,mc._y,mc._rotation / 180 * 3.141592653589793);
  77.       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));
  78.       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));
  79.       this.cellsRect = new com.neodelight.std.Rect(new com.neodelight.std.Vector(0,0),new com.neodelight.std.Vector(0,0));
  80.       if(this.config.animManager)
  81.       {
  82.          var _loc5_ = com.neodelight.std.ClassLib.getClass(this.config.animManager);
  83.          this.animMgr = new _loc5_(this.mc,this);
  84.       }
  85.       this.animMgrStep = false;
  86.       if(this.config.sound)
  87.       {
  88.          this.snd = new com.neodelight.v2D.V2DSound(this,this.config);
  89.       }
  90.       this.cargo = undefined;
  91.       this.flags = int(flags);
  92.       this.defHitPoints = !mc.statHitPoints ? -1 : com.neodelight.std.XMath.toNumber(mc.statHitPoints);
  93.       this.maxHitPoints = this.defHitPoints;
  94.       this.defDeathCount = com.neodelight.std.XMath.toNumber(int(Math.random() * mc.statDeathCount));
  95.       for(var _loc4_ in this.mc)
  96.       {
  97.          if(_loc4_.substr(0,2) == "on" && (_loc4_.substr(2,1) >= "A" && _loc4_.substr(2,1) <= "Z") && this.mc[_loc4_] != undefined && this.mc[_loc4_] != "")
  98.          {
  99.             if(!this.events)
  100.             {
  101.                this.events = new Array();
  102.             }
  103.             this.events[_loc4_] = this.mc[_loc4_];
  104.          }
  105.       }
  106.       if(this.config.explosion)
  107.       {
  108.          this.config.explosion = com.neodelight.std.Blueprint.getBlueprint(this.config.explosion);
  109.       }
  110.       this.reset();
  111.       if(mc.groupsReg && !mc.mover)
  112.       {
  113.          _global.world.register(this,mc.groupsReg.split(","));
  114.       }
  115.    }
  116.    function reset()
  117.    {
  118.       this.inactive = (this.flags & com.neodelight.v2D.V2DObject.FlagInactive) > 0 || this.mc.flagInactive;
  119.       this.ghost = (this.flags & com.neodelight.v2D.V2DObject.FlagGhost) > 0 || this.mc.flagGhost;
  120.       this.fixed = (this.flags & com.neodelight.v2D.V2DObject.FlagFixed) > 0 || this.mc.flagFixed;
  121.       this.strong = (this.flags & com.neodelight.v2D.V2DObject.FlagStrong) > 0 || this.mc.flagStrong;
  122.       this.carrier = (this.flags & com.neodelight.v2D.V2DObject.FlagCarrier) > 0 || this.mc.flagCarrier;
  123.       this.carryable = (this.flags & com.neodelight.v2D.V2DObject.FlagCarryable) > 0 || this.mc.flagCarryable;
  124.       this.crusher = (this.flags & com.neodelight.v2D.V2DObject.FlagCrusher) > 0 || this.mc.flagCrusher;
  125.       if(this.crusher)
  126.       {
  127.          this.strong = true;
  128.       }
  129.       this.spareOwner = (this.flags & com.neodelight.v2D.V2DObject.FlagSpareOwner) > 0 || this.mc.flagSpareOwner;
  130.       this.invincible = (this.flags & com.neodelight.v2D.V2DObject.FlagInvincible) > 0 || this.mc.flagInvincible;
  131.       this.gunsoff = (this.flags & com.neodelight.v2D.V2DObject.FlagGunsOff) > 0 || this.mc.flagGunsOff;
  132.       this.groups.splice(0,this.groups.length);
  133.       this.cells.splice(0,this.cells.length);
  134.       this.actHitPoints = this.defHitPoints;
  135.       this.actDeathCount = 0;
  136.    }
  137.    function damage(amount)
  138.    {
  139.       if(this.invincible)
  140.       {
  141.          return false;
  142.       }
  143.       if(this.actHitPoints <= 0)
  144.       {
  145.          return undefined;
  146.       }
  147.       this.actHitPoints = Math.max(0,this.actHitPoints - amount);
  148.       if(this.animMgr)
  149.       {
  150.          this.animMgr.visualize("damage",0);
  151.       }
  152.       else
  153.       {
  154.          this.mc.gfx.gotoAndPlay("damage");
  155.       }
  156.       if(this.actHitPoints == 0)
  157.       {
  158.          if(this.defDeathCount)
  159.          {
  160.             this.actDeathCount = this.defDeathCount;
  161.             return true;
  162.          }
  163.          this.die();
  164.          return true;
  165.       }
  166.       return false;
  167.    }
  168.    function eventDamage(self, partner, args)
  169.    {
  170.       if(this.snd)
  171.       {
  172.          this.snd.playEvent("Damage");
  173.       }
  174.       partner.damage(com.neodelight.std.XMath.toNumber(args[0]));
  175.    }
  176.    function eventNextLevel()
  177.    {
  178.       _root.eventNextLevel();
  179.    }
  180.    function eventBonusPlayer(partner, args)
  181.    {
  182.       switch(args[1])
  183.       {
  184.          case "score":
  185.             _global.game.player.score(args[2]);
  186.             break;
  187.          case "lifes":
  188.             _global.game.player.modLifes(args[2]);
  189.             break;
  190.          default:
  191.             trace("#ERROR: unknown bonus type \'" + args[1] + "\' at V2DObject.eventBonusPlayer()");
  192.       }
  193.       if(args[3] == "die")
  194.       {
  195.          this.die();
  196.       }
  197.    }
  198.    function eventDie()
  199.    {
  200.       this.die();
  201.    }
  202.    function die()
  203.    {
  204.       if(this.inactive)
  205.       {
  206.          return undefined;
  207.       }
  208.       this.inactive = true;
  209.       if(this.config.explosion)
  210.       {
  211.          var _loc4_ = this.pos.x + this.size.x * 0.5;
  212.          var _loc3_ = this.pos.y + this.size.y * 0.5;
  213.          _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);
  214.       }
  215.       if(this.events.onDie)
  216.       {
  217.          this.events.onDie.run(this,undefined);
  218.       }
  219.       if(this.config.score)
  220.       {
  221.          _global.score.alter(this.config.score);
  222.       }
  223.       if(this.snd)
  224.       {
  225.          this.snd.playEvent("Die");
  226.       }
  227.       if(this.animMgr)
  228.       {
  229.          this.animMgr.visualize("die",1);
  230.          this.kill(true);
  231.       }
  232.       else if(this.mc.gfx)
  233.       {
  234.          this.mc.gfx.gotoAndPlay("die");
  235.          this.kill(true);
  236.       }
  237.       else
  238.       {
  239.          this.kill(false);
  240.       }
  241.    }
  242.    function kill(noRemove)
  243.    {
  244.       this.inactive = true;
  245.       _global.world.deregister(this);
  246.       if(!noRemove)
  247.       {
  248.          this.mc.removeMovieClip();
  249.          this.mc._visible = false;
  250.       }
  251.       false;
  252.    }
  253.    function getBoundingRect()
  254.    {
  255.       return this.boundingRect;
  256.    }
  257.    function getTotalBoundingRect()
  258.    {
  259.       return this.getBoundingRect();
  260.    }
  261. }
  262.