//
        // Methods
        //

        /// <summary>
        ///		Sets the sprite used as a model by the flyweight proxy sprite
        /// </summary>
        /// <param name="newSprite"></param>
        public void SetModelSprite(SpriteEntity newSprite)
        {
            if (this.SpriteName == Sprite.Name.NULL)
            {
                // Do nothing
                return;
            }
            this.modelSprite = newSprite;
            this.SetName(newSprite.SpriteName);
        }
Exemplo n.º 2
0
        ///////////////////////////////////////////////////////
        //
        // Methods
        //
        ///////////////////////////////////////////////////////

        /// <summary>
        ///		Create a new flyweight sprite referencing a model sprite entity
        /// </summary>
        /// <param name="proxyName"></param>
        /// <param name="entityName">The entity's ID should be 0</param>
        /// <param name="id"></param>
        /// <returns></returns>
        public SpriteProxy Create(Sprite.Name spriteName, uint id)
        {
            if (spriteName == Sprite.Name.NULL || spriteName == Sprite.Name.UNINITIALIZED)
            {
                return(this.nullSpriteProxy);
            }
            SpriteEntity modelSprite = SpriteEntityManager.Self.Find(spriteName);
            SpriteProxy  newProxy    = this.BaseCreate(id) as SpriteProxy;

            newProxy.SetName(spriteName);
            newProxy.SetModelSprite(modelSprite);
            return(newProxy);
        }
        /// <summary>
        ///		Removes the given sprite to be used again from the pool
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public bool Recycle(Sprite.Name name)
        {
            if (name == Sprite.Name.NULL || name == Sprite.Name.UNINITIALIZED)
            {
                return(false);
            }
            SpriteEntity oldNode = this.BaseRecycle(name) as SpriteEntity;

            if (oldNode == null)
            {
                return(false);
            }
            oldNode.Reset();
            return(true);
        }
        ///////////////////////////////////////////////////////
        //
        // Methods
        //
        ///////////////////////////////////////////////////////

        /// <summary>
        ///		Creates the sprite from the memory pool
        /// </summary>
        /// <param name="newName"></param>
        /// <param name="imageName"></param>
        /// <returns></returns>
        public SpriteEntity Create(Sprite.Name newName, Image.Name imageName)
        {
            if (newName == Sprite.Name.NULL || newName == Sprite.Name.UNINITIALIZED)
            {
                return(nullSprite);
            }
            Image        image     = ImageManager.Self.Find(imageName);
            SpriteEntity newSprite = this.BaseCreate() as SpriteEntity;

            newSprite.SetName(newName);
            newSprite.SetMapping(image);
            Azul.Sprite2D sprite = new Azul.Sprite2D(image.Texture.TextureMap,
                                                     image.ImageMapping,
                                                     new Azul.Rect(0, 0, image.Width, image.Height)
                                                     );
            newSprite.SetSprite(sprite);
            return(newSprite);
        }
        ///////////////////////////////////////////////////////
        //
        // Methods
        //
        ///////////////////////////////////////////////////////

        /// <summary>
        ///		Create the sprite from the memory pool
        /// </summary>
        /// <param name="newName"></param>
        /// <returns></returns>
        public SpriteCollision Create(Sprite.Name newName)
        {
            Debug.Assert(newName != Sprite.Name.UNINITIALIZED);
            //Debug.Assert(newName != Sprite.Name.NULL);

            if (newName == Sprite.Name.NULL)
            {
                SpriteCollision newNullSprite = this.BaseCreate() as SpriteCollision;
                newNullSprite.SetName(newName);
                newNullSprite.SetPosition(0, 0);
                newNullSprite.SetDimensions(5, 5);
                return(newNullSprite);
            }

            SpriteEntity referenceSprite = SpriteEntityManager.Self.Find(newName);

            SpriteCollision newSprite = this.BaseCreate() as SpriteCollision;

            newSprite.SetName(newName);
            newSprite.SetPosition(referenceSprite.X, referenceSprite.Y);
            newSprite.ResizeToSprite(referenceSprite);
            return(newSprite);
        }
 /// <summary>
 ///		Resizes this sprite so that it's the same size as the given SpriteEntity
 /// </summary>
 /// <param name="sprite"></param>
 public void ResizeToSprite(SpriteEntity sprite)
 {
     this.rect.SetDimensions(sprite.ImageMap.Width * sprite.ScaleX,
                             sprite.ImageMap.Height * sprite.ScaleY);
 }
Exemplo n.º 7
0
        //
        // Methods
        //

        /// <summary>
        ///		Creates all the SpriteEntities and SpriteCollisions ever neeed.
        ///		This should call only once!
        /// </summary>
        public void Create()
        {
            SpriteEntity sprRef = null;

            // Shields
            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.ShieldPiece, Image.Name.Block);
            sprRef.ScaleX = this.BlockScale;
            sprRef.ScaleY = this.BlockScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.ShieldPiece);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.ShieldPieceUL, Image.Name.BlockUL);
            sprRef.ScaleX = this.BlockScale;
            sprRef.ScaleY = this.BlockScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.ShieldPieceUL);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.ShieldPieceUR, Image.Name.BlockUR);
            sprRef.ScaleX = this.BlockScale;
            sprRef.ScaleY = this.BlockScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.ShieldPieceUR);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.ShieldPieceBL, Image.Name.BlockBL);
            sprRef.ScaleX = this.BlockScale;
            sprRef.ScaleY = this.BlockScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.ShieldPieceBL);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.ShieldPieceBR, Image.Name.BlockBR);
            sprRef.ScaleX = this.BlockScale;
            sprRef.ScaleY = this.BlockScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.ShieldPieceBR);


            // Player
            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.Player, Image.Name.Player_W);
            sprRef.ScaleX = this.PlayerFactoryScale * this.ScalePlayer;
            sprRef.ScaleY = this.PlayerFactoryScale * this.ScalePlayer;
            SpriteCollisionManager.Self.Create(Sprite.Name.Player);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.LaserPlayer, Image.Name.LaserStraight_Alpha);
            sprRef.ScaleX = this.PlayerFactoryScale * this.ScalePlayerLaser * this.AdditionalPlayerLaserScaleX;
            sprRef.ScaleY = this.PlayerFactoryScale * this.ScalePlayerLaser;
            SpriteCollisionManager.Self.Create(Sprite.Name.LaserPlayer);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.DeadPlayer, Image.Name.DeadPlayer1_X);
            sprRef.ScaleX = this.PlayerFactoryScale * this.ScalePlayer * this.DeadPlayerScaleAdjustment;
            sprRef.ScaleY = this.PlayerFactoryScale * this.ScalePlayer * this.DeadPlayerScaleAdjustment;
            SpriteCollisionManager.Self.Create(Sprite.Name.DeadPlayer);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.SmallExplosionMissile, Image.Name.SmallExplosion_Delta);
            sprRef.ScaleX = this.PlayerFactoryScale;
            sprRef.ScaleY = this.PlayerFactoryScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.SmallExplosionMissile);

            // Player Lives icon
            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.HUD_Player, Image.Name.Player_W);
            sprRef.ScaleX = this.PlayerLivesIconScale;
            sprRef.ScaleY = this.PlayerLivesIconScale;

            // Aliens
            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.AlienCrab, Image.Name.AlienCrab_B);
            sprRef.ScaleX = this.AlienScale;
            sprRef.ScaleY = this.AlienScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.AlienCrab);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.AlienSquid, Image.Name.AlienSquid_D);
            sprRef.ScaleX = this.AlienScale;
            sprRef.ScaleY = this.AlienScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.AlienSquid);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.AlienOctopus, Image.Name.AlienOctopus_G);
            sprRef.ScaleX = this.AlienScale;
            sprRef.ScaleY = this.AlienScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.AlienOctopus);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.DeadAlien, Image.Name.DeadAlien_Z);
            sprRef.ScaleX = this.AlienScale * this.DeadAlienScaleAdjustment;
            sprRef.ScaleY = this.AlienScale * this.DeadAlienScaleAdjustment;
            SpriteCollisionManager.Self.Create(Sprite.Name.DeadAlien);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.SmallExplosionBomb, Image.Name.SmallExplosion_Delta);
            sprRef.ScaleX = this.AlienScale;
            sprRef.ScaleY = this.AlienScale;
            sprRef.SetColor(Colors.Green);
            SpriteCollisionManager.Self.Create(Sprite.Name.SmallExplosionBomb);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.LaserAlienStraight, Image.Name.LaserStraight_Alpha);
            sprRef.ScaleX = this.AlienScale * this.AlienLaserScaleX;
            sprRef.ScaleY = this.AlienScale * this.AlienLaserScaleY;
            SpriteCollisionManager.Self.Create(Sprite.Name.LaserAlienStraight);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.LaserAlienDagger, Image.Name.LaserDagger_Beta);
            sprRef.ScaleX = this.AlienScale * this.AlienLaserScaleX;
            sprRef.ScaleY = this.AlienScale * this.AlienLaserScaleY;
            SpriteCollisionManager.Self.Create(Sprite.Name.LaserAlienDagger);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.LaserAlienZigzag, Image.Name.LaserZigzag_Y);
            sprRef.ScaleX = this.AlienScale * this.AlienLaserScaleX;
            sprRef.ScaleY = this.AlienScale * this.AlienLaserScaleY;
            SpriteCollisionManager.Self.Create(Sprite.Name.LaserAlienZigzag);


            // UFO
            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.DeadUFO, Image.Name.SmallExplosion_Delta);
            sprRef.ScaleX = this.UFOScale;
            sprRef.ScaleY = this.UFOScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.DeadUFO);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.UFO, Image.Name.UFO_V);
            sprRef.ScaleX = this.UFOScale;
            sprRef.ScaleY = this.UFOScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.UFO);

            sprRef        = SpriteEntityManager.Self.Create(Sprite.Name.UFOMissile, Image.Name.UFOMissile_Gamma);
            sprRef.ScaleX = this.UFOScale;
            sprRef.ScaleY = this.UFOScale;
            SpriteCollisionManager.Self.Create(Sprite.Name.UFOMissile);



            // Floor
            SpriteEntity floorSpr = SpriteEntityManager.Self.Create(Sprite.Name.Floor, Image.Name.Floor);

            floorSpr.SetPosition(Constants.SCREEN_CENTER_X, this.FloorY);
            floorSpr.ScaleX = this.FloorScaleX;
            floorSpr.ScaleY = this.FloorScaleY;
            floorSpr.SetColor(this.FloorColor);
        }
 /// <summary>
 ///		Clears the data in the Sprite
 /// </summary>
 /// <remarks>
 ///		Does not clear base data. Use <c>BaseReset()</c> for that.
 /// </remarks>
 public override void Reset()
 {
     this.modelSprite = null;
     this.SpriteReset();
 }
        //
        // Constructors
        //

        public SpriteProxy() : base()
        {
            this.modelSprite = null;
            this.SetName(Sprite.Name.UNINITIALIZED);
        }