private void SetStatusSprite(StatusSprite statSpr, PermStatus?permStat = null, TempStatus?tempStat = null) { // Don't bother displaying more than three sprites if (statSprites.Count >= 3) { return; } dynamic stat; if (permStat != null) { stat = permStat; } else if (tempStat != null) { stat = tempStat; } else { return; } float xPos = Position.X + (26 * (statSprites.Count % 3)); float yPos = Position.Y - 20; // 20 for bubble statSpr.SetPosition(new Vector2(xPos, yPos)); statSpr.SetAnimation(StatSpritAnimMap[stat]); statSpr.Visible = true; statSprites.Add(stat, statSpr); }
public override bool AddTempStatus(TempStatus tempStatus) { bool ret = base.AddTempStatus(tempStatus); // If the status is not an instant kill, add the status sprite if (ret) { if (tempStatus != TempStatus.Mini) { StatusSprite statSpr = StatusSpriteManager.GetStatusSprite(); SetStatusSprite(statSpr, tempStat: tempStatus); } } return(ret); }
public override bool AddPermStatus(PermStatus permStatus) { bool ret = base.AddPermStatus(permStatus); if (ret) { // If the status is not an instant kill, add the status sprite PermStatus[] killStatuses = new PermStatus[] { PermStatus.KO, PermStatus.Stone, PermStatus.Toad }; if (!killStatuses.Contains(permStatus)) { StatusSprite statSpr = StatusSpriteManager.GetStatusSprite(); SetStatusSprite(statSpr, permStat: permStatus); } } return(ret); }
///////////// // Publics // ///////////// public static StatusSprite GetStatusSprite() { // Check for an available status sprite. If none are available, // make and return a new one for (int i = 0; i < statusSprites.Count; i++) { StatusSprite statSpr = statusSprites[i]; if (!statSpr.Visible) { return(statSpr); } } StatusSprite newStatSpr = new StatusSprite(); newStatSpr.LoadContent(Content); // Revisit statusSprites.Add(newStatSpr); return(newStatSpr); }