public Sprite(SpriteData spriteData) { if (spriteData == null) throw new Exception("SpriteData cannot be null"); Data = spriteData; TextureData = ResourceManager.GetTextureData(spriteData.TextureName); currentAnimationFrameIndex = 0; CurrentAnimation = null; Time = 0.0f; }
private void generateFloorScenery() { const float minStep = 30.0f; const int randomStep = 30; const float startY = 300.0f; float lowestX, lowestY, highestX, highestY; getLowestAndHighestPositionalValuesForParties(out lowestX, out lowestY, out highestX, out highestY); Vector2 overflow = new Vector2(highestX - lowestX, highestY - lowestY) * Game1.ScreenScaleFactor; lowestX -= overflow.X; highestX += overflow.X; highestY += overflow.Y; List <string> scenerySpriteNames = OverworldEncounter.Overworld.Area.Data.BattleFloorScenerySpriteNamesToList(); Vector2 position = new Vector2(lowestX, startY); do { do { SpriteData spriteData = ResourceManager.GetSpriteData(scenerySpriteNames.Sample()); if (Game1.Random.Next(10) == 0) { Vector2 sceneryPosition = new Vector2(position.X, position.Y + Game1.Random.Next(50)); addScenery(spriteData, sceneryPosition); position.X += spriteData.Width + Game1.Random.Next(spriteData.Width); } position.Y += minStep + Game1.Random.Next(randomStep); } while (position.Y < highestY); position.X += minStep + Game1.Random.Next(randomStep); position.Y = startY; } while (position.X < highestX); }
private void addScenery(SpriteData spriteData, Vector2 position) { Scenery scenery = new Scenery(new Sprite(spriteData), position); scenery.Scale = new Vector2(0.5f); if (scenery.Sprite.Data.Animations.Count > 0) scenery.Sprite.SetAnimation(new List<string>(scenery.Sprite.Data.Animations.Keys).Sample()); addEntity(scenery); }