public override void Ctrl() { base.Ctrl(); if (this.Time >= this.LifeTime) { this.BulletList.ForEach((Action <BaseBullet_Touhou>)(x => x.Enabled = true)); } if (this.Time % 2 != 0 || this.indexY >= this.length) { return; } for (int index = 0; index < this.length; ++index) { if (this.BulletPic[index, this.indexY]) { PointF OriginalPosition = new PointF(this.OriginalPosition.X + (float)(index - this.length / 2) * 5f, this.OriginalPosition.Y + (float)(this.indexY - this.length / 2) * 5f); BaseBullet_Touhou baseBulletTouhou = new BaseBullet_Touhou(this.StageData, (string)null, OriginalPosition, 0.0f, 0.0); baseBulletTouhou.Copy(this.Bullet); baseBulletTouhou.OriginalPosition = OriginalPosition; baseBulletTouhou.Velocity = (float)baseBulletTouhou.GetDistance(this.OriginalPosition) * 3f / (float)this.length; baseBulletTouhou.DirectionDegree = (double)this.Ran.Next(360); baseBulletTouhou.Enabled = false; this.StageData.SoundPlay("se_tan00a.wav"); } } ++this.indexY; }
public static void ShootBulletPic02( StageDataPackage StageData, string BPicName, BaseObject Bullet, PointF OriginalPosition, double Direction, byte ColorType, float Scale, bool Mirrored) { bool[,] bulletPic = StageData.GlobalData.BulletPicDictionary[BPicName]; int num1 = (int)Math.Sqrt((double)bulletPic.Length); int num2 = Mirrored ? -1 : 1; for (int index1 = 0; index1 < num1; ++index1) { for (int index2 = 0; index2 < num1; ++index2) { if (bulletPic[index1, index2]) { float num3 = (float)((double)num2 * (double)((float)index1 - (float)(((double)num1 - 1.0) / 2.0)) * Math.Cos(Direction - Math.PI / 2.0) + (double)((float)index2 - (float)(((double)num1 - 1.0) / 2.0)) * Math.Sin(Direction - Math.PI / 2.0)); float num4 = (float)((double)-num2 * (double)((float)index1 - (float)(((double)num1 - 1.0) / 2.0)) * Math.Sin(Direction - Math.PI / 2.0) + (double)((float)index2 - (float)(((double)num1 - 1.0) / 2.0)) * Math.Cos(Direction - Math.PI / 2.0)); PointF pointF = new PointF(OriginalPosition.X + num3 * Scale, OriginalPosition.Y - num4 * Scale); BaseBullet_Touhou baseBulletTouhou = new BaseBullet_Touhou(StageData, (string)null, OriginalPosition, 0.0f, 0.0); baseBulletTouhou.Copy(Bullet); baseBulletTouhou.ColorType = ColorType; baseBulletTouhou.OriginalPosition = OriginalPosition; baseBulletTouhou.DestPoint = pointF; } } } }
public BulletGroupCircle( StageDataPackage StageData, BaseObject bullet, PointF OriginalPosition, double Direction, int Count, int Radius, byte ColorType) { double num = Direction; for (int index = 0; index < Count; ++index) { PointF OriginalPosition1 = new PointF(OriginalPosition.X + (float)Radius * (float)Math.Cos(num), OriginalPosition.Y + (float)Radius * (float)Math.Sin(num)); BaseBullet_Touhou baseBulletTouhou = new BaseBullet_Touhou(StageData, (string)null, OriginalPosition1, 0.0f, 0.0, ColorType); baseBulletTouhou.Copy(bullet); baseBulletTouhou.OriginalPosition = OriginalPosition1; baseBulletTouhou.Direction = num; num += 2.0 * Math.PI / (double)Count; } StageData.SoundPlay("se_tan00a.wav"); }