public CrazyStorm( GraphicsDevice g, CSManager csm_c, bool bansound_b, string filename, Vector2 Player) { shoot = new List <byte>(); id = filename; bgset = new List <BarrageType>(); csm = csm_c; bansound = bansound_b; layerm = new LayerManager(); center = new Center(); time = new Time(csm, this, layerm); StreamReader streamReader = new StreamReader(Cry.Decry("Content/Data/" + filename + ".xna", 0)); if (streamReader.ReadLine() == "Crazy Storm Data 1.01") { string source = streamReader.ReadLine(); if (File.Exists("Content/Data/" + filename + ".dat")) { tex = Texture2D.FromFile(g, Cry.Decry("Content/Data/" + filename + ".dat", 0)); } if (source.Contains("Types")) { int num = int.Parse(source.Split(' ')[0]); for (int index = 0; index < num; ++index) { string str = streamReader.ReadLine(); BarrageType barrageType = new BarrageType { name = str.Split('_')[0], rect = new Rectangle(int.Parse(str.Split('_')[1]), int.Parse(str.Split('_')[2]), int.Parse(str.Split('_')[3]), int.Parse(str.Split('_')[4])), origin = new Vector2(int.Parse(str.Split('_')[5]), int.Parse(str.Split('_')[6])), origin0 = new Vector2(int.Parse(str.Split('_')[5]), int.Parse(str.Split('_')[6])), pdr0 = int.Parse(str.Split('_')[7]) }; if (str.Split('_')[8] != "") { barrageType.color = int.Parse(str.Split('_')[8]); } else { barrageType.color = -1; } bgset.Add(barrageType); } source = streamReader.ReadLine(); } if (source.Contains("GlobalEvents")) { int num1 = int.Parse(source.Split(' ')[0]); for (int index = 0; index < num1; ++index) { string str = streamReader.ReadLine(); time.GEcount.Add(int.Parse(str.Split('_')[0]) - 1); GlobalEvent globalEvent = new GlobalEvent { gotocondition = int.Parse(str.Split('_')[1]), gotoopreator = str.Split('_')[2], gotocvalue = int.Parse(str.Split('_')[3]), isgoto = (bool.Parse(str.Split('_')[4]) ? 1 : 0) != 0, gototime = int.Parse(str.Split('_')[5]), gotowhere = int.Parse(str.Split('_')[6]), quakecondition = int.Parse(str.Split('_')[7]), quakeopreator = str.Split('_')[8], quakecvalue = int.Parse(str.Split('_')[9]), isquake = (bool.Parse(str.Split('_')[10]) ? 1 : 0) != 0, quaketime = int.Parse(str.Split('_')[11]), quakelevel = int.Parse(str.Split('_')[12]), stopcondition = int.Parse(str.Split('_')[13]), stopopreator = str.Split('_')[14], stopcvalue = int.Parse(str.Split('_')[15]), isstop = (bool.Parse(str.Split('_')[16]) ? 1 : 0) != 0, stoptime = int.Parse(str.Split('_')[17]), stoplevel = int.Parse(str.Split('_')[18]) }; if (time.GE.Count < int.Parse(str.Split('_')[0])) { int num2 = 0; while (true) { if (num2 < int.Parse(str.Split('_')[0])) { time.GE.Add(new GlobalEvent() { gotocondition = -1, quakecondition = -1, stopcondition = -1, stoplevel = -1 }); ++num2; } else { break; } } } time.GE[int.Parse(str.Split('_')[0]) - 1] = globalEvent; } source = streamReader.ReadLine(); } if (source.Contains("Sounds")) { int num = int.Parse(source.Split(' ')[0]); for (int index = 0; index < num; ++index) { string str = streamReader.ReadLine(); csm.bgset[int.Parse(str.Split('_')[0]) - 1].sound = str.Split('_')[1]; } source = streamReader.ReadLine(); } if (source.Contains(',')) { center.Available = true; center.x = float.Parse(source.Split(':')[1].Split(',')[0]); center.y = float.Parse(source.Split(':')[1].Split(',')[1]); if (source.Split(':')[1].Split(',').Length >= 7) { center.speed = float.Parse(source.Split(':')[1].Split(',')[2]); center.speedd = float.Parse(source.Split(':')[1].Split(',')[3]); center.aspeed = float.Parse(source.Split(':')[1].Split(',')[4]); center.aspeedd = float.Parse(source.Split(':')[1].Split(',')[5]); int index = 0; while (true) { if (index < source.Split(':')[1].Split(',')[6].Split(';').Length - 1) { center.events.Add(source.Split(':')[1].Split(',')[6].Split(';')[index]); ++index; } else { break; } } } } else { center.Available = false; } time.total = int.Parse(streamReader.ReadLine().Split(',')[0].Split(':')[1]); for (int index1 = 0; index1 < 4; ++index1) { string str1 = streamReader.ReadLine(); if (str1.Split(':')[1].Split(',')[0] != "empty") { Layer layer = new Layer(layerm, int.Parse(str1.Split(':')[1].Split(',')[1]), int.Parse(str1.Split(':')[1].Split(',')[2])); int num1 = int.Parse(str1.Split(':')[1].Split(',')[3]); for (int index2 = 0; index2 < num1; ++index2) { string str2 = streamReader.ReadLine(); Batch batch = new Batch(float.Parse(str2.Split(',')[6]), float.Parse(str2.Split(',')[7]), layerm) { id = int.Parse(str2.Split(',')[0]), parentid = int.Parse(str2.Split(',')[1]), Binding = (bool.Parse(str2.Split(',')[2]) ? 1 : 0) != 0, bindid = int.Parse(str2.Split(',')[3]), Bindwithspeedd = (bool.Parse(str2.Split(',')[4]) ? 1 : 0) != 0, begin = int.Parse(str2.Split(',')[8]), life = int.Parse(str2.Split(',')[9]), fx = float.Parse(str2.Split(',')[10]), fy = float.Parse(str2.Split(',')[11]), r = int.Parse(str2.Split(',')[12]), rdirection = float.Parse(str2.Split(',')[13]) }; string str3 = str2.Split(',')[14].Replace("{", "").Replace("}", ""); batch.rdirections.X = float.Parse(str3.Split(' ')[0].Split(':')[1]); batch.rdirections.Y = float.Parse(str3.Split(' ')[1].Split(':')[1]); batch.tiao = int.Parse(str2.Split(',')[15]); batch.t = int.Parse(str2.Split(',')[16]); batch.fdirection = float.Parse(str2.Split(',')[17]); string str4 = str2.Split(',')[18].Replace("{", "").Replace("}", ""); batch.fdirections.X = float.Parse(str4.Split(' ')[0].Split(':')[1]); batch.fdirections.Y = float.Parse(str4.Split(' ')[1].Split(':')[1]); batch.range = int.Parse(str2.Split(',')[19]); batch.speed = float.Parse(str2.Split(',')[20]); batch.speedd = float.Parse(str2.Split(',')[21]); string str5 = str2.Split(',')[22].Replace("{", "").Replace("}", ""); batch.speedds.X = float.Parse(str5.Split(' ')[0].Split(':')[1]); batch.speedds.Y = float.Parse(str5.Split(' ')[1].Split(':')[1]); batch.aspeed = float.Parse(str2.Split(',')[23]); batch.aspeedd = float.Parse(str2.Split(',')[24]); string str6 = str2.Split(',')[25].Replace("{", "").Replace("}", ""); batch.aspeedds.X = float.Parse(str6.Split(' ')[0].Split(':')[1]); batch.aspeedds.Y = float.Parse(str6.Split(' ')[1].Split(':')[1]); batch.sonlife = int.Parse(str2.Split(',')[26]); batch.type = int.Parse(str2.Split(',')[27]); batch.wscale = float.Parse(str2.Split(',')[28]); batch.hscale = float.Parse(str2.Split(',')[29]); batch.colorR = int.Parse(str2.Split(',')[30]); batch.colorG = int.Parse(str2.Split(',')[31]); batch.colorB = int.Parse(str2.Split(',')[32]); batch.alpha = int.Parse(str2.Split(',')[33]); batch.head = float.Parse(str2.Split(',')[34]); string str7 = str2.Split(',')[35].Replace("{", "").Replace("}", ""); batch.heads.X = float.Parse(str7.Split(' ')[0].Split(':')[1]); batch.heads.Y = float.Parse(str7.Split(' ')[1].Split(':')[1]); batch.Withspeedd = (bool.Parse(str2.Split(',')[36]) ? 1 : 0) != 0; batch.sonspeed = float.Parse(str2.Split(',')[37]); batch.sonspeedd = float.Parse(str2.Split(',')[38]); string str8 = str2.Split(',')[39].Replace("{", "").Replace("}", ""); batch.sonspeedds.X = float.Parse(str8.Split(' ')[0].Split(':')[1]); batch.sonspeedds.Y = float.Parse(str8.Split(' ')[1].Split(':')[1]); batch.sonaspeed = float.Parse(str2.Split(',')[40]); batch.sonaspeedd = float.Parse(str2.Split(',')[41]); string str9 = str2.Split(',')[42].Replace("{", "").Replace("}", ""); batch.sonaspeedds.X = float.Parse(str9.Split(' ')[0].Split(':')[1]); batch.sonaspeedds.Y = float.Parse(str9.Split(' ')[1].Split(':')[1]); batch.xscale = float.Parse(str2.Split(',')[43]); batch.yscale = float.Parse(str2.Split(',')[44]); batch.Mist = (bool.Parse(str2.Split(',')[45]) ? 1 : 0) != 0; batch.Dispel = (bool.Parse(str2.Split(',')[46]) ? 1 : 0) != 0; batch.Blend = (bool.Parse(str2.Split(',')[47]) ? 1 : 0) != 0; batch.Afterimage = (bool.Parse(str2.Split(',')[48]) ? 1 : 0) != 0; batch.Outdispel = (bool.Parse(str2.Split(',')[49]) ? 1 : 0) != 0; batch.Invincible = (bool.Parse(str2.Split(',')[50]) ? 1 : 0) != 0; string str10 = str2.Split(',')[51]; int idx1 = 0; while (true) { if (idx1 < str10.Split('&').Length - 1) { string str11 = str10.Split('&')[idx1]; Event @event = new Event(idx1) { tag = str11.Split('|')[0], t = int.Parse(str11.Split('|')[1]), addtime = int.Parse(str11.Split('|')[2]) }; int index3 = 0; while (true) { if (index3 < str11.Split('|')[3].Split(';').Length - 1) { @event.events.Add(str11.Split('|')[3].Split(';')[index3]); ++index3; } else { break; } } batch.Parentevents.Add(@event); ++idx1; } else { break; } } string str12 = str2.Split(',')[52]; int idx2 = 0; while (true) { if (idx2 < str12.Split('&').Length - 1) { string str11 = str12.Split('&')[idx2]; Event @event = new Event(idx2) { tag = str11.Split('|')[0], t = int.Parse(str11.Split('|')[1]), addtime = int.Parse(str11.Split('|')[2]) }; int index3 = 0; while (true) { if (index3 < str11.Split('|')[3].Split(';').Length - 1) { @event.events.Add(str11.Split('|')[3].Split(';')[index3]); ++index3; } else { break; } } batch.Sonevents.Add(@event); ++idx2; } else { break; } } batch.rand.fx = float.Parse(str2.Split(',')[53]); batch.rand.fy = float.Parse(str2.Split(',')[54]); batch.rand.r = int.Parse(str2.Split(',')[55]); batch.rand.rdirection = float.Parse(str2.Split(',')[56]); batch.rand.tiao = int.Parse(str2.Split(',')[57]); batch.rand.t = int.Parse(str2.Split(',')[58]); batch.rand.fdirection = float.Parse(str2.Split(',')[59]); batch.rand.range = int.Parse(str2.Split(',')[60]); batch.rand.speed = float.Parse(str2.Split(',')[61]); batch.rand.speedd = float.Parse(str2.Split(',')[62]); batch.rand.aspeed = float.Parse(str2.Split(',')[63]); batch.rand.aspeedd = float.Parse(str2.Split(',')[64]); batch.rand.head = float.Parse(str2.Split(',')[65]); batch.rand.sonspeed = float.Parse(str2.Split(',')[66]); batch.rand.sonspeedd = float.Parse(str2.Split(',')[67]); batch.rand.sonaspeed = float.Parse(str2.Split(',')[68]); batch.rand.sonaspeedd = float.Parse(str2.Split(',')[69]); if (str2.Split(',').Length >= 72) { batch.Cover = (bool.Parse(str2.Split(',')[70]) ? 1 : 0) != 0; batch.Rebound = (bool.Parse(str2.Split(',')[71]) ? 1 : 0) != 0; batch.Force = (bool.Parse(str2.Split(',')[72]) ? 1 : 0) != 0; } if (str2.Split(',').Length >= 74) { batch.Deepbind = (bool.Parse(str2.Split(',')[73]) ? 1 : 0) != 0; } layerm.LayerArray[index1].BatchArray.Add(batch); } if (str1.Split(':')[1].Split(',').Length >= 7) { int num2 = int.Parse(str1.Split(':')[1].Split(',')[4]); for (int index2 = 0; index2 < num2; ++index2) { string str2 = streamReader.ReadLine(); Lase lase = new Lase(float.Parse(str2.Split(',')[6]), float.Parse(str2.Split(',')[7]), layerm) { id = int.Parse(str2.Split(',')[0]), parentid = int.Parse(str2.Split(',')[1]), Binding = (bool.Parse(str2.Split(',')[2]) ? 1 : 0) != 0, bindid = int.Parse(str2.Split(',')[3]), Bindwithspeedd = (bool.Parse(str2.Split(',')[4]) ? 1 : 0) != 0, begin = int.Parse(str2.Split(',')[8]), life = int.Parse(str2.Split(',')[9]), r = int.Parse(str2.Split(',')[10]), rdirection = float.Parse(str2.Split(',')[11]) }; string str3 = str2.Split(',')[12].Replace("{", "").Replace("}", ""); lase.rdirections.X = float.Parse(str3.Split(' ')[0].Split(':')[1]); lase.rdirections.Y = float.Parse(str3.Split(' ')[1].Split(':')[1]); lase.tiao = int.Parse(str2.Split(',')[13]); lase.t = int.Parse(str2.Split(',')[14]); lase.fdirection = float.Parse(str2.Split(',')[15]); string str4 = str2.Split(',')[16].Replace("{", "").Replace("}", ""); lase.fdirections.X = float.Parse(str4.Split(' ')[0].Split(':')[1]); lase.fdirections.Y = float.Parse(str4.Split(' ')[1].Split(':')[1]); lase.range = int.Parse(str2.Split(',')[17]); lase.speed = float.Parse(str2.Split(',')[18]); lase.speedd = float.Parse(str2.Split(',')[19]); string str5 = str2.Split(',')[20].Replace("{", "").Replace("}", ""); lase.speedds.X = float.Parse(str5.Split(' ')[0].Split(':')[1]); lase.speedds.Y = float.Parse(str5.Split(' ')[1].Split(':')[1]); lase.aspeed = float.Parse(str2.Split(',')[21]); lase.aspeedd = float.Parse(str2.Split(',')[22]); string str6 = str2.Split(',')[23].Replace("{", "").Replace("}", ""); lase.aspeedds.X = float.Parse(str6.Split(' ')[0].Split(':')[1]); lase.aspeedds.Y = float.Parse(str6.Split(' ')[1].Split(':')[1]); lase.sonlife = int.Parse(str2.Split(',')[24]); lase.type = int.Parse(str2.Split(',')[25]); lase.wscale = float.Parse(str2.Split(',')[26]); lase.longs = float.Parse(str2.Split(',')[27]); lase.alpha = int.Parse(str2.Split(',')[28]); lase.Ray = (bool.Parse(str2.Split(',')[29]) ? 1 : 0) != 0; lase.sonspeed = float.Parse(str2.Split(',')[30]); lase.sonspeedd = float.Parse(str2.Split(',')[31]); string str7 = str2.Split(',')[32].Replace("{", "").Replace("}", ""); lase.sonspeedds.X = float.Parse(str7.Split(' ')[0].Split(':')[1]); lase.sonspeedds.Y = float.Parse(str7.Split(' ')[1].Split(':')[1]); lase.sonaspeed = float.Parse(str2.Split(',')[33]); lase.sonaspeedd = float.Parse(str2.Split(',')[34]); string str8 = str2.Split(',')[35].Replace("{", "").Replace("}", ""); lase.sonaspeedds.X = float.Parse(str8.Split(' ')[0].Split(':')[1]); lase.sonaspeedds.Y = float.Parse(str8.Split(' ')[1].Split(':')[1]); lase.xscale = float.Parse(str2.Split(',')[36]); lase.yscale = float.Parse(str2.Split(',')[37]); lase.Blend = (bool.Parse(str2.Split(',')[38]) ? 1 : 0) != 0; lase.Outdispel = (bool.Parse(str2.Split(',')[39]) ? 1 : 0) != 0; lase.Invincible = (bool.Parse(str2.Split(',')[40]) ? 1 : 0) != 0; string str9 = str2.Split(',')[42]; int idx1 = 0; while (true) { if (idx1 < str9.Split('&').Length - 1) { string str10 = str9.Split('&')[idx1]; Event @event = new Event(idx1) { tag = str10.Split('|')[0], t = int.Parse(str10.Split('|')[1]), addtime = int.Parse(str10.Split('|')[2]) }; int index3 = 0; while (true) { if (index3 < str10.Split('|')[3].Split(';').Length - 1) { @event.events.Add(str10.Split('|')[3].Split(';')[index3]); ++index3; } else { break; } } lase.Parentevents.Add(@event); ++idx1; } else { break; } } string str11 = str2.Split(',')[43]; int idx2 = 0; while (true) { if (idx2 < str11.Split('&').Length - 1) { string str10 = str11.Split('&')[idx2]; Event @event = new Event(idx2) { tag = str10.Split('|')[0], t = int.Parse(str10.Split('|')[1]), addtime = int.Parse(str10.Split('|')[2]) }; int index3 = 0; while (true) { if (index3 < str10.Split('|')[3].Split(';').Length - 1) { @event.events.Add(str10.Split('|')[3].Split(';')[index3]); ++index3; } else { break; } } lase.Sonevents.Add(@event); ++idx2; } else { break; } } lase.rand.r = int.Parse(str2.Split(',')[44]); lase.rand.rdirection = float.Parse(str2.Split(',')[45]); lase.rand.tiao = int.Parse(str2.Split(',')[46]); lase.rand.t = int.Parse(str2.Split(',')[47]); lase.rand.fdirection = float.Parse(str2.Split(',')[48]); lase.rand.range = int.Parse(str2.Split(',')[49]); lase.rand.speed = float.Parse(str2.Split(',')[50]); lase.rand.speedd = float.Parse(str2.Split(',')[51]); lase.rand.aspeed = float.Parse(str2.Split(',')[52]); lase.rand.aspeedd = float.Parse(str2.Split(',')[53]); lase.rand.sonspeed = float.Parse(str2.Split(',')[54]); lase.rand.sonspeedd = float.Parse(str2.Split(',')[55]); lase.rand.sonaspeed = float.Parse(str2.Split(',')[56]); lase.rand.sonaspeedd = float.Parse(str2.Split(',')[57]); if (str2.Split(',').Length >= 59) { lase.Deepbind = (bool.Parse(str2.Split(',')[58]) ? 1 : 0) != 0; } layerm.LayerArray[index1].LaseArray.Add(lase); } int num3 = int.Parse(str1.Split(':')[1].Split(',')[5]); for (int index2 = 0; index2 < num3; ++index2) { string str2 = streamReader.ReadLine(); Cover cover = new Cover(float.Parse(str2.Split(',')[2]), float.Parse(str2.Split(',')[3]), layerm) { id = int.Parse(str2.Split(',')[0]), parentid = int.Parse(str2.Split(',')[1]), begin = int.Parse(str2.Split(',')[4]), life = int.Parse(str2.Split(',')[5]), halfw = int.Parse(str2.Split(',')[6]), halfh = int.Parse(str2.Split(',')[7]), Circle = (bool.Parse(str2.Split(',')[8]) ? 1 : 0) != 0, type = int.Parse(str2.Split(',')[9]), controlid = int.Parse(str2.Split(',')[10]), speed = float.Parse(str2.Split(',')[11]), speedd = float.Parse(str2.Split(',')[12]) }; string str3 = str2.Split(',')[13].Replace("{", "").Replace("}", ""); cover.speedds.X = float.Parse(str3.Split(' ')[0].Split(':')[1]); cover.speedds.Y = float.Parse(str3.Split(' ')[1].Split(':')[1]); cover.aspeed = float.Parse(str2.Split(',')[14]); cover.aspeedd = float.Parse(str2.Split(',')[15]); string str4 = str2.Split(',')[16].Replace("{", "").Replace("}", ""); cover.aspeedds.X = float.Parse(str4.Split(' ')[0].Split(':')[1]); cover.aspeedds.Y = float.Parse(str4.Split(' ')[1].Split(':')[1]); string str5 = str2.Split(',')[17]; int idx1 = 0; while (true) { if (idx1 < str5.Split('&').Length - 1) { string str6 = str5.Split('&')[idx1]; Event @event = new Event(idx1) { tag = str6.Split('|')[0], t = int.Parse(str6.Split('|')[1]), addtime = int.Parse(str6.Split('|')[2]) }; int index3 = 0; while (true) { if (index3 < str6.Split('|')[3].Split(';').Length - 1) { @event.events.Add(str6.Split('|')[3].Split(';')[index3]); ++index3; } else { break; } } cover.Parentevents.Add(@event); ++idx1; } else { break; } } string str7 = str2.Split(',')[18]; int idx2 = 0; while (true) { if (idx2 < str7.Split('&').Length - 1) { string str6 = str7.Split('&')[idx2]; Event @event = new Event(idx2) { tag = str6.Split('|')[0], t = int.Parse(str6.Split('|')[1]), addtime = int.Parse(str6.Split('|')[2]) }; int index3 = 0; while (true) { if (index3 < str6.Split('|')[3].Split(';').Length - 1) { @event.events.Add(str6.Split('|')[3].Split(';')[index3]); ++index3; } else { break; } } cover.Sonevents.Add(@event); ++idx2; } else { break; } } cover.rand.speed = float.Parse(str2.Split(',')[19]); cover.rand.speedd = float.Parse(str2.Split(',')[20]); cover.rand.aspeed = float.Parse(str2.Split(',')[21]); cover.rand.aspeedd = float.Parse(str2.Split(',')[22]); if (str2.Split(',').Length >= 24) { cover.bindid = int.Parse(str2.Split(',')[23]); } if (str2.Split(',').Length >= 25) { if (str2.Split(',')[24] != "") { cover.Deepbind = (bool.Parse(str2.Split(',')[24]) ? 1 : 0) != 0; } } layerm.LayerArray[index1].CoverArray.Add(cover); } int num4 = int.Parse(str1.Split(':')[1].Split(',')[6]); for (int index2 = 0; index2 < num4; ++index2) { string str2 = streamReader.ReadLine(); Rebound rebound = new Rebound(float.Parse(str2.Split(',')[2]), float.Parse(str2.Split(',')[3]), layerm) { id = int.Parse(str2.Split(',')[0]), parentid = int.Parse(str2.Split(',')[1]), begin = int.Parse(str2.Split(',')[4]), life = int.Parse(str2.Split(',')[5]), longs = int.Parse(str2.Split(',')[6]), angle = int.Parse(str2.Split(',')[7]), time = int.Parse(str2.Split(',')[8]), speed = float.Parse(str2.Split(',')[9]), speedd = float.Parse(str2.Split(',')[10]), aspeed = float.Parse(str2.Split(',')[11]), aspeedd = float.Parse(str2.Split(',')[12]) }; string str3 = str2.Split(',')[13]; int idx = 0; while (true) { if (idx < str3.Split('&').Length - 1) { string str4 = str3.Split('&')[idx]; rebound.Parentevents.Add(new Event(idx) { tag = str4 }); ++idx; } else { break; } } rebound.rand.speed = float.Parse(str2.Split(',')[14]); rebound.rand.speedd = float.Parse(str2.Split(',')[15]); rebound.rand.aspeed = float.Parse(str2.Split(',')[16]); rebound.rand.aspeedd = float.Parse(str2.Split(',')[17]); layerm.LayerArray[index1].ReboundArray.Add(rebound); } int num5 = int.Parse(str1.Split(':')[1].Split(',')[7]); for (int index2 = 0; index2 < num5; ++index2) { string str2 = streamReader.ReadLine(); layerm.LayerArray[index1].ForceArray.Add(new Force(float.Parse(str2.Split(',')[2]), float.Parse(str2.Split(',')[3]), layerm) { id = int.Parse(str2.Split(',')[0]), parentid = int.Parse(str2.Split(',')[1]), begin = int.Parse(str2.Split(',')[4]), life = int.Parse(str2.Split(',')[5]), halfw = int.Parse(str2.Split(',')[6]), halfh = int.Parse(str2.Split(',')[7]), Circle = (bool.Parse(str2.Split(',')[8]) ? 1 : 0) != 0, type = int.Parse(str2.Split(',')[9]), controlid = int.Parse(str2.Split(',')[10]), speed = float.Parse(str2.Split(',')[11]), speedd = float.Parse(str2.Split(',')[12]), aspeed = float.Parse(str2.Split(',')[13]), aspeedd = float.Parse(str2.Split(',')[14]), addaspeed = float.Parse(str2.Split(',')[15]), addaspeedd = float.Parse(str2.Split(',')[16]), Suction = (bool.Parse(str2.Split(',')[17]) ? 1 : 0) != 0, Repulsion = (bool.Parse(str2.Split(',')[18]) ? 1 : 0) != 0, addspeed = float.Parse(str2.Split(',')[19]), rand = { speed = float.Parse(str2.Split(',')[20]), speedd = float.Parse(str2.Split(',')[21]), aspeed = float.Parse(str2.Split(',')[22]), aspeedd = float.Parse(str2.Split(',')[23]) } }); } } } } } time.Init(Player); }
public void Update( LayerManager layerm, CrazyStorm cs, Time Times, Center Centers, Vector2 Player) { if (!(Times.now >= this.begin & Times.now <= this.begin + this.life - 1)) { return; } int now = Times.now; this.speedx += this.aspeedx; this.speedy += this.aspeedy; this.x += this.speedx; this.y += this.speedy; float x1 = this.x - 4f; float y1 = this.y + 16f; float x2 = (float)((double)this.x - 4.0 + (double)this.longs * Math.Cos((double)MathHelper.ToRadians(this.angle))); float y2 = (float)((double)this.y + 16.0 + (double)this.longs * Math.Sin((double)MathHelper.ToRadians(this.angle))); Line line1 = new Line(new PointF(x1, y1), new PointF(x2, y2)); foreach (Barrage barrage in layerm.LayerArray[this.parentid].Barrages) { if (barrage.Rebound && (barrage.time > 15 || !barrage.Mist) && !barrage.Dis) { float speedx = barrage.speedx; float speedy = barrage.speedy; float num1 = speedx + barrage.aspeedx; float num2 = speedy + barrage.aspeedy; float x3 = barrage.x; float y3 = barrage.y; float num3 = x3 + (num1 - this.speedx); float num4 = y3 + (num2 - this.speedy); float x4 = num3; float y4 = num4; float x5 = barrage.x; float y5 = barrage.y; Line line2 = new Line(new PointF(x4, y4), new PointF(x5, y5)); if (((Main.CheckTwoLineCrose(line1, line2) ? 1 : 0) & (barrage.reboundtime < this.time ? 1 : (this.time == 0 ? 1 : 0))) != 0) { float num5 = (float)(((double)y2 - (double)y1) * ((double)x5 - (double)x4) - ((double)y5 - (double)y4) * ((double)x2 - (double)x1)); float num6 = (float)(((double)x2 - (double)x1) * ((double)x5 - (double)x4) * ((double)y4 - (double)y1) + ((double)y2 - (double)y1) * ((double)x5 - (double)x4) * (double)x1 - ((double)y5 - (double)y4) * ((double)x2 - (double)x1) * (double)x4) / num5; float num7 = (float)((((double)y2 - (double)y1) * ((double)y5 - (double)y4) * ((double)x4 - (double)x1) + ((double)x2 - (double)x1) * ((double)y5 - (double)y4) * (double)y1 - ((double)x5 - (double)x4) * ((double)y2 - (double)y1) * (double)y4) / -(double)num5); barrage.speedd = 2f * this.angle - barrage.speedd; float num8 = (float)(((double)num6 - (double)x4) * ((double)num6 - (double)x4) + ((double)num7 - (double)y4) * ((double)num7 - (double)y4)); barrage.x = num6 + barrage.xscale * (float)(Math.Sqrt((double)num8) * Math.Cos((double)MathHelper.ToRadians(barrage.speedd))); barrage.y = num7 + barrage.yscale * (float)(Math.Sqrt((double)num8) * Math.Sin((double)MathHelper.ToRadians(barrage.speedd))); barrage.speedx = barrage.xscale * barrage.speed * (float)Math.Cos((double)MathHelper.ToRadians(barrage.speedd)); barrage.speedy = barrage.yscale * barrage.speed * (float)Math.Sin((double)MathHelper.ToRadians(barrage.speedd)); ++barrage.reboundtime; foreach (Event parentevent in this.Parentevents) { string str = ""; string s = ""; int num9 = 0; string tag = parentevent.tag; if (parentevent.tag.Contains("变化到")) { str = tag.Split("变化到".ToCharArray())[0]; s = tag.Split("变化到".ToCharArray())[3].Split('+')[0]; num9 = 1; } if (parentevent.tag.Contains("增加")) { str = tag.Split("增".ToCharArray())[0]; s = tag.Split("增".ToCharArray())[1].Replace("加", "").Split('+')[0]; num9 = 2; } if (parentevent.tag.Contains("减少")) { str = tag.Split("减少".ToCharArray())[0]; s = tag.Split("减少".ToCharArray())[2].Split('+')[0]; num9 = 3; } if (parentevent.tag.Contains("+")) { float num10 = float.Parse(parentevent.tag.Split('+')[1]); s = (float.Parse(s) + MathHelper.Lerp(-num10, num10, (float)this.Rand(cs.effect && !cs.bomb, cs.bomb))).ToString(); } if (str == "生命") { switch (num9) { case 1: barrage.life = (int)float.Parse(s); break; case 2: barrage.life += (int)float.Parse(s); break; case 3: barrage.life -= (int)float.Parse(s); break; } } if (str == "类型") { switch (num9) { case 1: barrage.type = (int)float.Parse(s); break; case 2: barrage.type += (int)float.Parse(s); break; case 3: barrage.type -= (int)float.Parse(s); break; } } if (str == "宽比") { switch (num9) { case 1: barrage.wscale = float.Parse(s); break; case 2: barrage.wscale += float.Parse(s); break; case 3: barrage.wscale -= float.Parse(s); break; } } if (str == "高比") { switch (num9) { case 1: barrage.hscale = float.Parse(s); break; case 2: barrage.hscale += float.Parse(s); break; case 3: barrage.hscale -= float.Parse(s); break; } } if (str == "R") { switch (num9) { case 1: barrage.R = float.Parse(s); break; case 2: barrage.R += float.Parse(s); break; case 3: barrage.R -= float.Parse(s); break; } } if (str == "G") { switch (num9) { case 1: barrage.G = float.Parse(s); break; case 2: barrage.G += float.Parse(s); break; case 3: barrage.G -= float.Parse(s); break; } } if (str == "B") { switch (num9) { case 1: barrage.B = float.Parse(s); break; case 2: barrage.B += float.Parse(s); break; case 3: barrage.B -= float.Parse(s); break; } } if (str == "不透明度") { switch (num9) { case 1: barrage.alpha = float.Parse(s); break; case 2: barrage.alpha += float.Parse(s); break; case 3: barrage.alpha -= float.Parse(s); break; } } if (str == "朝向") { switch (num9) { case 1: barrage.head = float.Parse(s); break; case 2: barrage.head += float.Parse(s); break; case 3: barrage.head -= float.Parse(s); break; } } if (str == "子弹速度") { switch (num9) { case 1: barrage.speed = float.Parse(s); break; case 2: barrage.speed += float.Parse(s); break; case 3: barrage.speed -= float.Parse(s); break; } barrage.speedx = barrage.xscale * barrage.speed * (float)Math.Cos((double)MathHelper.ToRadians(barrage.speedd)); barrage.speedy = barrage.yscale * barrage.speed * (float)Math.Sin((double)MathHelper.ToRadians(barrage.speedd)); } if (str == "子弹速度方向") { if (s.Contains("自机")) { barrage.speedd = MathHelper.ToDegrees(Main.Twopointangle(Player.X, Player.Y, barrage.x, barrage.y)); } else { switch (num9) { case 1: barrage.speedd = float.Parse(s); break; case 2: barrage.speedd += float.Parse(s); break; case 3: barrage.speedd -= float.Parse(s); break; } } barrage.speedx = barrage.xscale * barrage.speed * (float)Math.Cos((double)MathHelper.ToRadians(barrage.speedd)); barrage.speedy = barrage.yscale * barrage.speed * (float)Math.Sin((double)MathHelper.ToRadians(barrage.speedd)); } if (str == "子弹加速度") { switch (num9) { case 1: barrage.aspeed = float.Parse(s); break; case 2: barrage.aspeed += float.Parse(s); break; case 3: barrage.aspeed -= float.Parse(s); break; } barrage.aspeedx = barrage.xscale * barrage.aspeed * (float)Math.Cos((double)MathHelper.ToRadians(barrage.aspeedd)); barrage.aspeedy = barrage.yscale * barrage.aspeed * (float)Math.Sin((double)MathHelper.ToRadians(barrage.aspeedd)); } if (str == "子弹加速度方向") { if (s.Contains("自机")) { barrage.aspeedd = MathHelper.ToDegrees(Main.Twopointangle(Player.X, Player.Y, barrage.x, barrage.y)); } else { switch (num9) { case 1: barrage.aspeedd = float.Parse(s); break; case 2: barrage.aspeedd += float.Parse(s); break; case 3: barrage.aspeedd -= float.Parse(s); break; } } barrage.aspeedx = barrage.xscale * barrage.aspeed * (float)Math.Cos((double)MathHelper.ToRadians(barrage.aspeedd)); barrage.aspeedy = barrage.yscale * barrage.aspeed * (float)Math.Sin((double)MathHelper.ToRadians(barrage.aspeedd)); } if (str == "横比") { switch (num9) { case 1: barrage.xscale = float.Parse(s); break; case 2: barrage.xscale += float.Parse(s); break; case 3: barrage.xscale -= float.Parse(s); break; } } if (str == "纵比") { switch (num9) { case 1: barrage.yscale = float.Parse(s); break; case 2: barrage.yscale += float.Parse(s); break; case 3: barrage.yscale -= float.Parse(s); break; } } if (str == "雾化效果") { barrage.Mist = (int)float.Parse(s) > 0; } if (str == "消除效果") { barrage.Dispel = (int)float.Parse(s) > 0; } if (str == "高光效果") { barrage.Blend = (int)float.Parse(s) > 0; } if (str == "拖影效果") { barrage.Afterimage = (int)float.Parse(s) > 0; } if (str == "出屏即消") { barrage.Outdispel = (int)float.Parse(s) > 0; } if (str == "无敌状态") { barrage.Invincible = (int)float.Parse(s) > 0; } } } } } }
public void Update( LayerManager lm, CrazyStorm cs, CSManager csm, Time Times, Center Centers, Character Player, EnemyManager em, Boss b, bool bs, bool allpan, Vector2 ppos, bool isforshoot, bool usekira, bool bansound) { if (!cs.IsClosing() && this.Visible) { for (int index = 0; index < this.ForceArray.Count; ++index) { this.ForceArray[index].id = index; this.ForceArray[index].parentid = this.sort; this.ForceArray[index].copys.Update(lm, Times, Centers, Player); } for (int index = 0; index < this.ReboundArray.Count; ++index) { this.ReboundArray[index].id = index; this.ReboundArray[index].parentid = this.sort; this.ReboundArray[index].copys.Update(lm, cs, Times, Centers, Player.body.position + new Vector2(93f, -13f)); } for (int index = 0; index < this.CoverArray.Count; ++index) { this.CoverArray[index].id = index; this.CoverArray[index].parentid = this.sort; this.CoverArray[index].copys.Update(lm, cs, Times, Centers, Player.body.position + new Vector2(93f, -13f)); } for (int index = 0; index < this.LaseArray.Count; ++index) { this.LaseArray[index].id = index; this.LaseArray[index].parentid = this.sort; this.LaseArray[index].copys.Update(lm, cs, Times, Centers, Player.body.position + new Vector2(93f, -13f)); } for (int index = 0; index < this.BatchArray.Count; ++index) { this.BatchArray[index].id = index; this.BatchArray[index].parentid = this.sort; this.BatchArray[index].copys.Update(lm, cs, Times, Centers, Player.body.position + new Vector2(93f, -13f)); } } bool flag = false; for (int index = 0; index < this.Barrages.Count; ++index) { this.Barrages[index].id = index; this.Barrages[index].Update(csm, cs, Times, Centers, Player, em, b, bs, allpan, ppos, isforshoot, usekira, bansound); this.Barrages[index].LUpdate(csm, cs, Times, Centers, Player, bs); if (cs.IsBreaking()) { if (!this.Barrages[index].Dis && cs.IsItem()) { Program.game.game.SmallItem(new Vector2(this.Barrages[index].x - 93f, this.Barrages[index].y + 13f)); flag = true; } this.Barrages[index].life = 0; this.Barrages[index].Dis = true; this.Barrages[index].Blend = true; this.Barrages[index].randf = 6.283185f * (float)Main.rand.NextDouble(); } } if (!flag) { return; } cs.itemed = true; }