// // 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); }
/////////////////////////////////////////////////////// // // 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); }
// // 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); }