Advertisement
Guest User

Untitled

a guest
Nov 17th, 2012
498
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * create a new snowball
  3.  *
  4.  * @param x - int
  5.  * @param y - int
  6.  */
  7. xmas.Entity.Image.Snowball = function(x, y) {
  8.    
  9.     this.src          = 'snowball';
  10.    
  11.     // setting an offset to the image to have the ball spawn in the middle of the mouse click
  12.     this.offsetX      = 0;
  13.     this.offsetY      = 0;
  14.    
  15.     // use radius to check for collision later
  16.     this.r            = 0;
  17.    
  18.     // actual draw points - should include some kind of offset calculation
  19.     this.drawX        = 0;
  20.     this.drawY        = 0;
  21.    
  22.     this.scaleX       = 1;
  23.     this.scaleY       = 1;
  24.    
  25.     this.z            = 0;
  26.     this.vx           = 0;
  27.     this.vy           = 3;
  28.     this.vz           = 1;
  29.    
  30.     this.gravity      = - 0.097;
  31.    
  32.     this._constructor(this.src, x, y, 1);
  33.    
  34.     this.update = function() {
  35.      
  36.       this.x  += this.vx;
  37.       this.y  += this.vy;
  38.       this.z  += this.vz;
  39.      
  40.       this.vy -= this.gravity;
  41.    
  42.       // need to check if on the ground later
  43.       // todo
  44.      
  45.       // did I hit something somewhere "back" in the environment..?
  46.       // todo
  47.       // this.r   = ?
  48.    
  49. //      this.vx *= 0.99;
  50. //      this.vy *= 0.99;
  51. //      this.vz *= 0.99;
  52.  
  53.     };
  54.    
  55.    
  56.     this.onImgLoaded = function() {
  57.       this.img.inViewport   = true;
  58.       this.img.widthScaled  = this.img.width;
  59.       this.img.heightScaled = this.img.height;
  60.      
  61.       // set radius for later collision detection because the image is a ball :)
  62.       this.r                =   this.img.widthScaled/2;
  63.      
  64.       // update coords for the offset to have the ball spawn at the center of the mouse position
  65.       this.offsetX          = - this.img.widthScaled/2;
  66.       this.offsetY          = - this.img.heightScaled/2;
  67.       this.x               +=   this.offsetX;
  68.       this.y               +=   this.offsetY;
  69.     };
  70.    
  71.     this.debug = function() {
  72.       console.log("coord", this.x, this.y, this.z);
  73.       console.log("pos  ", this.drawX, this.drawY);
  74.       console.log("scale", this.scaleX, this.scaleY);
  75.       console.log("imgO ", this.img.width, this.img.height)
  76.       console.log("img  ", this.img.widthScaled, this.img.heightScaled);
  77.       console.log("---------------------------------");
  78.     };
  79.    
  80.     /**
  81.      * renders the image
  82.      */
  83.     this.render = function() {
  84.       if(this.isVisible() && this.img.isLoaded && this.img.inViewport) {
  85.  
  86.        
  87.         this.drawX  = this.x / this.z;
  88.         this.drawY  = this.y / this.z;
  89.         // using this instead will simply drop the ball
  90.         //this.drawX  = this.x;
  91.         //this.drawY  = this.y;
  92.        
  93.         // scaleX and scaleY becoming *very* low - about 10^(-100) - so no scaling is happening
  94.         this.scaleX = this.scaleX / this.z;
  95.         this.scaleY = this.scaleY / this.z;
  96.        
  97.         this.img.widthScaled  = this.img.width * this.scaleX;
  98.         this.img.heightScaled = this.img.width * this.scaleY;
  99.  
  100.         //this.debug();
  101.  
  102. //        xmas.Draw.image(this.img, this.drawX, this.drawY, this.img.widthScaled, this.img.heightScaled);
  103.  
  104.         xmas.ctxPreRender.drawImage(this.img, this.drawX, this.drawY, this.img.widthScaled, this.img.heightScaled);
  105.  
  106.       }
  107.     };    
  108.        
  109.    
  110. }
  111.  
  112.  
  113.  
  114. /**
  115.  * create a new image
  116.  *
  117.  * @param src - string
  118.  * @param x - int
  119.  * @param y - int
  120.  * @param opacity - float
  121.  */
  122. xmas.Entity.Image = function(src, x, y, opacity) {
  123.  
  124.     this.type         = 'image';  
  125.     this.group        = null;
  126.     this.isLoaded     = false;
  127.     this.img          = null;
  128.    
  129.     var self          = this;
  130.    
  131.     this._constructor  = function(src, x, y, opacity) {
  132.      
  133.       this.x            = x;              // the x coordinate
  134.       this.y            = y;              // the y coordinate
  135.       this.opacity      = opacity || 1;   // initial opacity; the dot will fade out
  136.       // create image
  137.       this.img          = new Image();
  138.       this.img.opacity  = this.opacity;
  139.      
  140.       this.loadImage(src);
  141.      
  142.     };
  143.    
  144.     this.setOpacity  = function(opacity) {
  145.       this.opacity     = opacity;
  146.       this.img.opacity = opacity;
  147.     };
  148.    
  149.     /**
  150.      * loads an image
  151.      *
  152.      * @param src - string
  153.      */
  154.     this.loadImage = function(src) {
  155.      
  156.       var self            = this;
  157.       this.img.isLoaded   = false;
  158.       this.img.inViewport = false;
  159.      
  160.       this.img.onload   = function() {
  161.         this.isLoaded   = true;
  162.         this.calculateCenter();
  163.         self.isLoaded   = true;
  164.         self.onImgLoaded();
  165.       }
  166.      
  167.       var source        = xmas.Resources.get(this.type, src);
  168.      
  169.       if(source) {
  170.         this.img.src      = source;
  171.       }
  172.     };
  173.    
  174.     this.init   = function() {
  175.       // nothing to do here
  176.     };
  177.  
  178.     this.update = function() {
  179.       // nothing to do here
  180.     };
  181.    
  182.     this.onImgLoaded = function() {
  183.       // do when image is loaded, nothing to do here
  184.     }
  185.  
  186.     /**
  187.      * when changing condition
  188.      */
  189.     this.onChangeCondition = function() {
  190.       this.setImageSpriteByCondition(this.getCondition());
  191.     };
  192.  
  193.     /**
  194.      * set the image sprite by status, assuming all sprites have equal withs
  195.      * and are set in one row
  196.      *
  197.      * sx = 0      sx = w      sx = w*2    sx = w*3
  198.      * |-----------|-----------|-----------|-----------|
  199.      * |  Default  |   Hover   |  Active   | InActive  |
  200.      * |-----------|-----------|-----------|-----------|
  201.      *
  202.      * @param condition - int
  203.      */
  204.     this.setImageSpriteByCondition = function(condition) {
  205.       if(this.img && this.img.isLoaded) {
  206.        
  207.         this.sy = 0;
  208.         this.sw = this.w;
  209.         this.sh = this.h;
  210.  
  211.         switch(condition) {
  212.           case xmas.Entity.CONDITION._default:
  213.             this.sx = 0;
  214.           break;
  215.           case xmas.Entity.CONDITION._hover:
  216.             this.sx = this.w;
  217.           break;
  218.           case xmas.Entity.CONDITION._active:
  219.             this.sx = this.w * 2;
  220.           break;
  221.           case xmas.Entity.CONDITION._inactive:
  222.             this.sx = this.w * 3;
  223.           break;
  224.         }
  225.  
  226.       }
  227.     };  
  228.  
  229.     /**
  230.      * renders the image
  231.      * @param dw - int new width (optional)
  232.      * @param dh - int new height (optional)
  233.      */
  234.     this.render = function(dw, dh) {
  235.       if(this.isVisible() && this.img.isLoaded && this.img.inViewport) {
  236.         xmas.Draw.image(this.img, this.x, this.y, dw, dh);
  237.       }
  238.     };
  239.  
  240.     this._constructor(src, x, y, opacity);
  241.  
  242. }
  243.  
  244.  
  245. // inheritance
  246. xmas.Entity.Image.prototype   = new xmas.Entity();
  247. xmas.Entity.Image.constructor = xmas.Entity.Image;
  248. xmas.Entity.Image.Snowball.prototype   = new xmas.Entity.Image();
  249. xmas.Entity.Image.Snowball.constructor = xmas.Entity.Image.Snowball;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement