// private bool audioPlaying = false; // private AudioSource audioSource; public void Start() { feedbackLamp = gameObject.GetComponent <MoodLight>(); arms = gameObject.GetComponent <ArmMovement>(); toolsReg = FindObjectOfType <ToolsRegistry>(); // audioSource = gameObject.GetComponent<AudioSource>(); ChangeColor(); ControlArms(); }
public void Shoot(GameTime gameTime) { if (shootTimer <= 0) { shootBurstTimer--; if (shootBurstTimer <= 0) { shootBurstTimer = shootBurst; shootTimer = shootDelay; } float ang_pos = 0f; Vector2 pos = Vector2.Zero; Vector2 vel = Vector2.Zero; shootSound.Play(); switch (thread) { case BulletThread.Linear: { ang_pos = sprite.physics.yaw_pos; pos = sprite.physics.pos; pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos)); pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos)); vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos)); vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos)); Add(ang_pos, pos, vel, bulletTexture, bulletColor); break; } case BulletThread.EnergyBurst: { for (int ang = 0; ang <= 360; ang += 360 / numBullets) { ang_pos = sprite.physics.yaw_pos + MathHelper.ToRadians(ang); pos = sprite.physics.pos; pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos)); pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos)); vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos)); vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos)); Add(ang_pos, pos, vel, bulletTexture, bulletColor); } break; } case BulletThread.Butterfly: { for (int ang = 0; ang <= 360; ang += 360 / numBullets) { ang_pos = sprite.physics.yaw_pos + MathHelper.ToRadians(ang); pos = sprite.physics.pos; pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos)); pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos)); vel.X = (float)(bullet_vel_max * Math.Sin(ang_pos)); vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos)); Add(ang_pos, pos, vel, bulletTexture, bulletColor); pos = sprite.physics.pos; pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos)); pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos)); vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos)); vel.Y = (float)(-bullet_vel_max * Math.Cos(ang_pos)); Add(ang_pos, pos, vel, bulletTexture, bulletColor); } break; } case BulletThread.DoubleEllipse: { for (int ang = 0; ang <= 360; ang += 360 / numBullets) { ang_pos = sprite.physics.yaw_pos + MathHelper.ToRadians(ang); pos = sprite.physics.pos; pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos)); pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos)); vel.X = (float)(-bullet_vel_max * Math.Cos(ang_pos)); vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos)); Add(ang_pos, pos, vel, bulletTexture, bulletColor); pos = sprite.physics.pos; pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos)); pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos)); vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos)); vel.Y = (float)(-bullet_vel_max * Math.Sin(ang_pos)); Add(ang_pos, pos, vel, bulletTexture, bulletColor); } break; } case BulletThread.Spiral: { for (int ang = 0; ang <= 360; ang += 360 / numBullets) { ang_pos = sprite.physics.yaw_pos + MathHelper.ToRadians(ang); pos = sprite.physics.pos; pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos - gameTime.TotalGameTime.Milliseconds / 100f)); pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos - gameTime.TotalGameTime.Milliseconds / 100f)); vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos)); vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos)); Add(ang_pos, pos, vel, bulletTexture, bulletColor); } break; } case BulletThread.Sakura: { if (moodLight == null) { moodLight = new MoodLight(Color.Green); // Green makes cool firework patterns! } for (int ang = 0; ang <= 360; ang += 360 / 5) { ang_pos = sprite.physics.yaw_pos + MathHelper.ToRadians(ang); pos = sprite.physics.pos; pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos - gameTime.TotalGameTime.Milliseconds / 100f)); pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos - gameTime.TotalGameTime.Milliseconds / 100f)); vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos)); vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos)); Add(ang_pos, pos, vel, bulletTexture, moodLight.color); pos = sprite.physics.pos; pos.X += (float)(sprite.texture.Width / 2 * Math.Cos(ang_pos + gameTime.TotalGameTime.Milliseconds / 100f)); pos.Y += (float)(sprite.texture.Width / 2 * Math.Sin(ang_pos + gameTime.TotalGameTime.Milliseconds / 100f)); vel.X = (float)(bullet_vel_max * Math.Cos(ang_pos)); vel.Y = (float)(bullet_vel_max * Math.Sin(ang_pos)); Add(ang_pos, pos, vel, bulletTexture, moodLight.color); } break; } } } }