/*[Header("Ship Components")] * [SerializeField] * private SpriteRenderer spriteRenderer; * public SpriteRenderer SpriteRenderer * { * get; protected set; * }*/ // Start is called before the first frame update void Start() { // FuelBar.SetMaxFuel(ShipStats.InitialFuel); // PowerBank.SetMaxPower(ShipStats.InitialPower); //IntegrityBar.SetMaxIntegrity(ShipStats.InitialIntegrity); //FuelBar.SetFuel(ShipStats.InitialFuel); //DescentSpeedDisplay.SetInitialDescentSpeed(ShipStats.InitialDescentSpeed) IntegrityText.SetMaxIntegrity(ShipStats.InitialIntegrity); PowerText.SetMaxPower(ShipStats.InitialPower); FuelText.SetMaxFuel(ShipStats.InitialFuel); }
protected override void Draw(GameTime gameTime) { //Window data int width = graphics.GraphicsDevice.Viewport.Width; int height = graphics.GraphicsDevice.Viewport.Height; // Begin drawing sprites spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend); //Draw bg if (spellcard != null) for (int i = 0; i < spellcard.backgrounds.Count; i++) spellcard.backgrounds[i].draw(); else for (int i = 0; i < level.backgrounds.Length; i++) level.backgrounds[i].draw(); //Move and draw player bullets for (int i = 0; i < pBullets.Count; i++) { Bullet b = pBullets[i]; if (!b.update()) { pBullets.RemoveAt(i); i--; continue; } b.draw(0.4f); } //Move and draw the player Player.update(); Player.draw(0.5f); //Move and draw enemies for (int i = 0; i < enemies.Count; i++) { Enemy e = enemies[i]; if (!e.update() || e.collide()) { enemies.RemoveAt(i); i--; continue; } e.draw(0.3f); } //Draw boss if (boss != null) { boss.collide(); boss.draw(0.3f); } //Switch blend state for color blending spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied); //Move and draw enemy bullets for (int i = 0; i < eBullets.Count; i++) { Bullet b = eBullets[i]; if (!b.update() || b.collide()) { eBullets.RemoveAt(i); i--; continue; } b.draw(0.2f); } //Switch back spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend); //Move and draw items for (int i = 0; i < items.Count; i++) { Item x = items[i]; if (!x.update()) { items.RemoveAt(i); i--; continue; } x.draw(0.1f); } //Move and draw score texts for (int i = 0; i < scoreTexts.Count; i++) { ScoreText t = scoreTexts[i]; if (!t.update()) { scoreTexts.RemoveAt(i); i--; continue; } spriteBatch.DrawString(font, t.amount.ToString(), t.pos, t.color); } if (powerText != null) { spriteBatch.Draw(powerText.text, powerText.pos, powerText.text.Bounds, Color.White, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0.1f); if (!powerText.update()) powerText = null; } //Update and draw orbs for (int i = 0; i < orbs.Count; i++) { Orb b = orbs[i]; if (!b.update()) { orbs.RemoveAt(i); i--; explosions.Add(new Explosion("explode", b.pos, 5.0f, 1.0f, 1.0f, Color.White)); sounds["enemyshoot1"].play(); continue; } b.draw(0.1f); } //Switch blend state for color blending spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied); //Update and draw explosions for (int i = 0; i < explosions.Count; i++) { Explosion e = explosions[i]; if (!e.update()) { explosions.RemoveAt(i); i--; continue; } e.draw(0.05f); } //Switch back spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend); //Update spellcards if (spellcard != null && !spellcard.update()) spellcard = null; if (bomb != null && !bomb.update()) bomb = null; //Draw conversation if (conversation != null) if (!conversation.show()) conversation = null; //Draw foreground drawForeground(); //Draw other text spriteBatch.DrawString(fontfps, fps.ToString(), new Vector2(0,450), Color.White); if (fullPowerTime >= 0) { fullPowerTime += dt; spriteBatch.DrawString(fontfps, "Max Power Mode!!", new Vector2(MathHelper.Clamp((float)fullPowerTime * 500 - 400, -1000, 100), 100.0f), Color.Red); if (fullPowerTime >= 3) fullPowerTime = -1; } //End drawing sprites spriteBatch.End(); //base.Draw(gameTime); }
public override bool update() { if (autoCollect) { //Auto collect item radians = MathHelper.ToRadians(Player.getAngle(pos) - 90.0f); pos += new Vector2((float)Math.Cos(radians), (float)Math.Sin(radians)) * 300.0f *(float)dt; } else { //Cause the item to fall speed += (float)dt; if (speed >= 1.5f) speed = 1.5f; pos.Y += speed; } //Draw arrow if item above screen if (pos.Y < 0) { Texture2D arrowImg = textures[item + "arrow"]; spriteBatch.Draw(arrowImg, new Vector2(pos.X - arrowImg.Width / 2, 0), Color.White); } //Return false if item off-screen if (pos.Y > gameDim.Y + 10) return false; //Check for item collisions with player (but only if the player is not dead) if (Math.Abs(pos.X - Player.pos.X) < Player.img.dim.X - 10 && Math.Abs(pos.Y - Player.pos.Y) < Player.img.dim.Y - 20 && Player.status != PlayerStatus.Dead) //Destroy item upon collision with player and create text { sounds["item"].play(); switch(item) { case "itempower": scoreTexts.Add(new ScoreText(10, pos, Color.White)); power++; if (Player.powerUp()) { powerText = new PowerText(textures["powerup"], pos, Color.White); sounds["powersound"].play(); } break; case "itemhighpower": scoreTexts.Add(new ScoreText(100, pos, Color.White)); power += 10; if (Player.powerUp()) { powerText = new PowerText(textures["powerup"], pos, Color.White); sounds["powersound"].play(); } break; case "itemfullpower": scoreTexts.Add(new ScoreText(1000, pos, Color.White)); power = 128; if (Player.powerUp()) { powerText = new PowerText(textures["powerup"], pos, Color.White); sounds["powersound"].play(); } break; case "itembomb": bombs++; break; case "itemplayer": players++; sounds["1up"].play(); break; case "itempoint": point++; if (Player.pos.Y < 150) scoreTexts.Add(new ScoreText(100000, pos, Color.Yellow)); else scoreTexts.Add(new ScoreText(100000 - (int)Player.pos.Y * 100, pos, Color.White)); break; case "itemstar": scoreTexts.Add(new ScoreText(1000+graze*10, pos, Color.White)); break; } //Return false to indicate item destruction return false; } return true; }