private void UpdateReference() { if (Event == null) { Event = new SpriteEvent(); } }
/// <summary> /// 播放动画 /// </summary> /// <param name="animName">Animation name.</param> /// <param name="loop">If set to <c>true</c> loop.</param> public override void playAnim(string animName, bool loop = false) { base.playAnim(animName, loop); SpriteEvent sprite = getEventSprite(); sprite.playAnim(animName, loop); }
private static void dokurovibrate(int starttime, int endtime, SpriteEvent dokuro, int amount, float start_y) { const int start_x = 320; const int x_threshold = 4; const int y_threshold = 4; const int r_decacc = 5000; const int r_threshold = 125; const float delay = 100f / 3; var loopcount = (int)((endtime - starttime) / (delay * amount)) + 1; //casting to int is the same as Math.Floor() //loops are different than SGL, the function CreateLoop returns a LoopEvent instance //then you use transformations on that object var loop = dokuro.CreateLoop(starttime, loopcount); for (var i = 0; i < amount; i++) { var time = (int)Math.Round(i * delay); //creating a random position using rand.Next() for both x and y var pos = new Position(start_x + rand.Next(-x_threshold, x_threshold), start_y + rand.Next(-y_threshold, y_threshold)); //cast to int because the starttime cannot be a float loop.Move(time, pos); loop.Rotate(time, randdiv(-r_threshold, r_threshold, r_decacc)); } //there's no endloop }
public void refresh() { int newPage = -1; if (!this.erased) { // 没有暂时消除的情况下 EventPage[] pages = this.getEventSprite().GetComponentsInChildren <EventPage>(true); // 按页码从大到小遍历 for (int i = pages.Length - 1; i >= 0; i -= 1) { if (this.isConditionMet(i)) { newPage = i; break; } } } if (this.page != newPage) { SpriteEvent sprite = getEventSprite(); if (this.page != -1) { sprite.gameObject.GetComponentsInChildren <EventPage> (true) [this.page].gameObject.SetActive(false); } sprite.gameObject.GetComponentsInChildren <EventPage> (true) [newPage].gameObject.SetActive(true); this.clearStarting(); this.setupPage(newPage); // 设置新启动页,-1时清除 } this.checkTriggerAuto(); // 检查自动启动 }
public void AddEvent(int frame, SpriteEvent method) { if (frame > 0 && frame <= this.frames.Count) { this.frameEvents[frame - 1] = method; } }
/// <summary> /// 停止一个循环动画,不考虑序号 /// </summary> /// <param name="animName">Animation name.</param> public override void stopLoopAnim(string animName) { base.stopLoopAnim(animName); SpriteEvent sprite = getEventSprite(); sprite.stopLoopAnim(animName); }
private static void flamespeck_new(int starttime, int endfadestart, int endfadeend, bool spazversion) { var flamespeck = new SpriteEvent("sb\\obl.png"); storyboard.AddSpriteEvent(flamespeck); //flamespeck.fade(endfadestart,endfadeend,0,0); flamespeck.Color(starttime, new Colour(255, 80, 50)); const int delay = 3000; //How long each moment takes, will most likely be 3 seconds const int fadetime = 2000; //How long it takes to start the traditional fade out, don't make this longer than delay const int colordelay = 750; //How long switching from orange to red takes var duration = endfadeend - starttime; //The presence of the flamespeck throughout existence. var color_loops = (int)(duration / (colordelay * 2.0)); //Discrete mathematics can suck it var main_loops = (int)(1.0 * duration / delay); var fade_loops = (int)(1.0 * duration / delay); const int spaz_save_count = 15; //How many positions are saved in the loop const int spaz_delay = 34; //Meh var spaz_loopcount = duration / ((spaz_save_count - 1) * spaz_delay); //How many loops to spaz for //Color Loop var loop = flamespeck.CreateLoop(starttime, color_loops); loop.Color(0, colordelay, None, new Colour(255, 170, 50), new Colour(255, 20, 20), new Colour(255, 170, 50)); //Fade Loop loop = flamespeck.CreateLoop(starttime, fade_loops); loop.Fade(0, 1); loop.Fade(fadetime, delay, None, 1, 0); for (var i = 0; i < main_loops; i++) { var curtime = starttime + i * delay; //Scaling, 0.6x to 0.15x if (!spazversion) { flamespeck.Scale(curtime, randdiv(15, 60, 100)); } flamespeck.Move(curtime, curtime + delay, None, new Position(rand.Next(50, 990) - 200, 550), new Position(rand.Next(50, 990) - 200, rand.Next(100, 440))); } if (!spazversion) { return; } loop = flamespeck.CreateLoop(starttime, spaz_loopcount); for (var i = 0; i < spaz_save_count; i++) { loop.ScaleVector(i * spaz_delay, new Position(randdiv(5, 60, 100), randdiv(5, 60, 100))); loop.Rotate(i * spaz_delay, randdiv(0, 628, 100)); } }
public void AddEvent(string name, int frame, SpriteEvent method) { string fullName = this.name + "-" + name; if (this.sequences.ContainsKey(fullName)) { this.sequences[fullName].AddEvent(frame, method); } }
public void _OnLoadSprite(string path, Sprite sp) { //如果加载失败,此时sprite是null //Debug.LogError("--- complete load " + path); SpriteEvent evt = new SpriteEvent(); evt.SetData(path, sp); GlobalEventDispatcher.SendEvent <SpriteEvent>(LOAD_SPRITE_EVENT, evt); }
public void AddEvent(string name, int frame, SpriteEvent method) { foreach (Sprite sprite in this.family) { if (sprite.sequence == name) { sprite.AddEvent(frame, method); } } }
public void Clear() { this.active = false; this.frameEvents.Clear(); this.frames.Clear(); this.current = null; this.onStart = null; this.onFirst = null; this.onStop = null; this.onLast = null; }
private static void purplebar_loop(int start, int repeats, SpriteEvent purplebar, double purplebar_delay, float purplebar_xscale, float purplebar_halfway, float purplebar_scrunch) { var loop = purplebar.CreateLoop(start, repeats); var first = new Position(purplebar_xscale, purplebar_scrunch); var second = new Position(purplebar_xscale, purplebar_halfway); var third = new Position(purplebar_xscale, purplebar_halfway * 2); loop.ScaleVector(0, (int)purplebar_delay, Out, first, second); loop.ScaleVector((int)purplebar_delay, (int)(purplebar_delay * 2), In, second, third); loop.ScaleVector((int)(purplebar_delay * 2), (int)(purplebar_delay * 3), Out, third, second); loop.ScaleVector((int)(purplebar_delay * 3), (int)(purplebar_delay * 4), In, second, first); }
/// <summary> /// 读档恢复list数据 /// </summary> /// <param name="page"></param> public void loadCommands(int page) { if (page < 0) { Debug.Log(string.Format("error page {0}", page)); return; } Debug.Log(string.Format("load commands at page {0}", page)); SpriteEvent sprite = getEventSprite(); GameObject pageObject = sprite.GetComponentsInChildren <EventPage>(true)[page].gameObject; pageObject.SetActive(true); this.list = this.getCommands(page); }
/// <summary> /// 读档初始化精灵 /// </summary> public void loadInitSprite() { SpriteEvent sprite = getEventSprite(); foreach (EventPage page in sprite.GetComponentsInChildren <EventPage>(true)) { page.transform.GetComponent <SpriteRenderer>().color = new Color(0, 0, 0, 0); page.gameObject.SetActive(false); } // 恢复循环动画 foreach (string animName in this.loopAnimNames) { sprite.playAnim(animName, true); } }
private static void newpellet(int xpos, int ypos, float xscale, float yscale, int time, float rot) { var pellet = new SpriteEvent("sb\\pel1.png"); storyboard.AddSpriteEvent(pellet); const Easing easing = In; const int tweentime = 700; const double xburstmulti = 1.2; const double yburstmulti = 2.0; const int rs_min = -30; const int rs_max = 30; pellet.Fade(time, 1); pellet.Fade(52546, 0); //pellet.move(time,xpos,ypos); //Will be overridden later pellet.ScaleVector(time, time + tweentime, easing, new Position(xscale, yscale), new Position(0.4f)); if (rot != 0) { pellet.Rotate(time, time + tweentime, easing, rot, 0); } const double ref_x = 320.0; const double ref_y = 240.0; float dest_x = 0; float dest_y = ypos - (float)((ref_y - ypos) / yburstmulti); if (xpos <= ref_x) { dest_x = xpos - (float)((ref_x - xpos) / xburstmulti); } else { dest_x = xpos + (float)((xpos - ref_x) / xburstmulti); } dest_x = dest_x + rand.Next(rs_min, rs_max); dest_y = dest_y + rand.Next(rs_min, rs_max); pellet.Move(time, time + tweentime, In, new Position(xpos, ypos), new Position(dest_x, dest_y)); //Make a new pellet to ease 2 into the heart LOL attackpellet(52546, 53732, dest_x, dest_y); }
/// <summary>Dispatches an event to the event receiver, if there is one.</summary> public void dispatchEvent(string name) { if (EventReceiver == null) { return; } // Create the event: SpriteEvent se = new SpriteEvent(name); // Trusted but doesn't bubble: se.SetTrusted(false); // Apply this instance: se.instance = this; // Dispatch it now: EventReceiver.dispatchEvent(se); }
private static void spazletter(SpriteEvent letter, int time, int endtime, int xpos, int ypos, int intensity) { var duration = endtime - time; // Length of whole operation const int delay = 50; // Each frame length of shake const int loopsize = 20; //Stored frames const int repeatlength = delay * loopsize; //How long it takes a full loop to go var loopcount = (int)(1.0 * duration / repeatlength); //Number of times the main loop will go var intensityscale = intensity * 5; int new_x; int new_y; const int add_x = -2; const int add_y = 6; //Main spaz loop var loop = letter.CreateLoop(time, loopcount); for (var i = 0; i <= loopsize; i++) { new_x = rand.Next(xpos - intensityscale, xpos + intensityscale); new_y = rand.Next(ypos - intensityscale, ypos + intensityscale); loop.Move(i * delay, new Position(new_x + add_x, new_y + add_y)); } //Final bits outside of the loop var curtime = time + loopcount * repeatlength; duration = endtime - curtime; var finalloopcount = (int)(1.0 * duration / delay); for (var i = 0; i < finalloopcount; i++) { new_x = rand.Next(xpos - intensityscale, xpos + intensityscale); new_y = rand.Next(ypos - intensityscale, ypos + intensityscale); letter.Move(curtime, new Position(new_x + add_x, new_y + add_y)); curtime = curtime + delay; } }
private GameInterpreter interpreter; // 并行事件用解释器 public void setup(string mapName, int id) { this.eventId = id; this.mapName = mapName; SpriteEvent sprite = getEventSprite(); foreach (EventPage page in sprite.GetComponentsInChildren <EventPage>(true)) { page.transform.GetComponent <SpriteRenderer>().color = new Color(0, 0, 0, 0); page.gameObject.SetActive(false); } this.x = sprite.transform.position.x; this.y = sprite.transform.position.y; this.realX = this.x; this.realY = this.y; this.page = -1; this.list = null; this.erased = false; }
private static void torheartshake(SpriteEvent torheart, int time, int endtime, int xbound, int ybound, double delay, int store) { var duration = endtime - time; var shakes = (int)(duration / delay); var remainder = shakes % (store - 1); var loopcount = (int)(shakes / (store - 1)); //Store is number of shakes recorded into a loop var loop = torheart.CreateLoop(time, loopcount); for (var i = 0; i < store; i++) { loop.Move((int)(i * delay), new Position(tor_pickrandom_n(320, xbound), tor_pickrandom_n(176, ybound))); } var curtime = time + (shakes - remainder) * delay; for (var i = 0; i < remainder; i++) { torheart.Move((int)curtime, new Position(tor_pickrandom_n(320, xbound), tor_pickrandom_n(176, ybound))); curtime = curtime + delay; } }
private static void new_slice(string image, int xpos, int ypos, int left) { var imagename = "sb/ct/" + image + ".png"; //Append var letter = new SpriteEvent(imagename, Background, BottomLeft); storyboard.AddSpriteEvent(letter); const int starttime = 430004; const int endtime = 432082; const int addendum = 0; const int xposmodmin = 100; const int xposmodmax = 210; letter.Move(starttime, new Position(xpos, ypos)); letter.MoveY(starttime + addendum, endtime + addendum, Out, ypos, rand.Next(1150, 1250)); letter.Fade(starttime, 1); letter.Fade(starttime + addendum, 430682, Out, 1, 0); if (left == 1) { letter.MoveX(starttime + addendum, endtime + addendum, In, xpos, xpos - rand.Next(xposmodmin, xposmodmax)); } else { letter.MoveX(starttime + addendum, endtime + addendum, In, xpos, xpos + rand.Next(xposmodmin, xposmodmax)); } var sign = rand.Next(0, 1); if (sign == 0) { sign = -1; } else { sign = 1; } letter.Rotate(starttime + addendum, endtime + addendum, In, 0, sign * randdiv(500, 4600, 1000)); }
public void AddSpriteEvent(SpriteEvent sprite) { switch (sprite.Layer) { case EventLayer.Background: BackgroundEvents.Add(sprite); break; case EventLayer.Fail: FailEvents.Add(sprite); break; case EventLayer.Pass: PassEvents.Add(sprite); break; case EventLayer.Foreground: ForegroundEvents.Add(sprite); break; default: throw new ArgumentException("The sprite's (event)layer was not set to a known storyboard layer"); } }
public override bool ReadLine(string line) { if (UseVariables && _variables.Count > 0 && line.IndexOf('$') >= 0) { line = CheckVariables(line); } if ((line.StartsWith(" ") || line.StartsWith("_")) && _lastSpriteEvent != null) { LoopEvent l; TriggerEvent te; TransformationEvent[] transforms; if (LoopEvent.TryParse(line, out l)) { _lastSpriteEvent.Loopevents.Add(l); _lastTransformable = l; } else if (TriggerEvent.TryParse(line, out te)) { _lastSpriteEvent.Triggerevents.Add(te); _lastTransformable = te; } else if (TransformationEvent.TryParse(line, out transforms)) { if (!line.StartsWith(" ") && !line.StartsWith("__")) { _lastTransformable = _lastSpriteEvent; } foreach (var transform in transforms) { _lastTransformable?.AddTransformation(transform); } return(true); } } if (base.ReadLine(line)) { return(true); } EventBase e; if (!EventBase.TryParse(line, out e)) { return(false); } var sample = e as SampleEvent; if (sample != null) { _model.SampleEvents.Add(sample); return(true); } var spriteEvent = e as SpriteEvent; if (spriteEvent == null) { return(false); } _lastSpriteEvent = spriteEvent; _lastTransformable = spriteEvent; _model.AddSpriteEvent(spriteEvent); return(true); }
private static void Main(string[] args) { //we are creating a new storyboard, not starting from an existing one storyboard = new Storyboard(); storyboard.FullPath = "412938 DM vs POCKET - uNDeRWoRLD MoNaRCHy\\DM vs. POCKET - uNDeRWoRLD MoNaRCHy (Charles445).osb"; //rand works a bit different in c# rand = new Random(); //var coverslip = new Sprite("sb/udt_cover.png", Background, Centre); //coverslip.fade(0, 0); //coverslip.scale(0, 0.67); //coverslip.move(0, 320, 240); //coverslip.fade(7445, 1); //coverslip.fade(433393, 435427, 1, 0); var coverslip = new SpriteEvent("sb\\udt_cover.png"); //slashes need to be either "\\" or @"\" because this is an escape character https://msdn.microsoft.com/en-us/library/h21280bw.aspx storyboard.AddSpriteEvent(coverslip); // you can do this before or after adding transformations, doesn't matter coverslip.Fade(0, 0); coverslip.Scale(0, 2 / 3f); //use the "f" to use decimal numbers *(0.67 is 2/3) //*(moving to 320,240 is redundant because that is the default location) coverslip.Fade(7445, 1); coverslip.Fade(433393, 435427, None, 1, 0); //notice we should type Easing.None if we didnt have that include at the top of the file //begin credits //*(We don't need to specify Background and Centre because these are the default values) var compby = new SpriteEvent(@"sb\compby.png"); //background and centre are the default values, it's redundant to type them! var tfox = new SpriteEvent(@"sb\tfox.png"); var sbmap = new SpriteEvent(@"sb\sbmap.png"); var cfourfive = new SpriteEvent(@"sb\cfourfive.png"); var arrangedby = new SpriteEvent(@"sb\arrangedby.png"); var dokuro = new SpriteEvent(@"sb\dokuro.png"); var dokuro2 = new SpriteEvent(@"sb\dokuro.png"); storyboard.AddSpriteEvent(compby); storyboard.AddSpriteEvent(tfox); storyboard.AddSpriteEvent(sbmap); storyboard.AddSpriteEvent(cfourfive); storyboard.AddSpriteEvent(arrangedby); storyboard.AddSpriteEvent(dokuro); storyboard.AddSpriteEvent(dokuro2); //use floats for everything except colours const float cred_topy = 115; //use constants if you don't change the value at runtime const float cred_descscale = 2f / 3; const float cred_namescale = 2f / 3; const float cred_boty = 245; compby.Scale(12869, cred_descscale); compby.MoveY(12869, cred_topy); //*(we only want to change the Y value -> use MoveY) compby.Fade(12869, 13547, None, 0, 1); // We need to specify the Easing when we are working with "starttime,endtime,easing,values" tfox.Scale(13547, cred_namescale); tfox.MoveY(13547, cred_boty); tfox.Fade(13547, 14225, None, 0f, 1); compby.Fade(14903, 15411, None, 1, 0); tfox.Fade(14903, 15411, None, 1, 0); sbmap.Scale(15581, cred_descscale); sbmap.MoveY(15581, cred_topy); sbmap.Fade(15581, 16259, None, 0, 1); cfourfive.Fade(16259, 16937, 0, 1); cfourfive.MoveY(16259, cred_boty); cfourfive.Scale(16259, cred_namescale); sbmap.Fade(17615, 18123, None, 1, 0); cfourfive.Fade(17615, 18123, None, 1, 0); arrangedby.Fade(18293, 19819, None, 0, 1); arrangedby.Fade(18293, cred_descscale); arrangedby.MoveY(18293, cred_topy); dokuro.Rotate(21871, 0); dokuro.Scale(21871, cred_namescale); dokuro.Fade(21871, 24925, None, 0, 1); dokuro.MoveY(21871, cred_boty); arrangedby.Fade(24925, 26015, None, 1, 0); //using a function that is defined below dokurovibrate(27305, 30010, dokuro, 22, cred_boty); dokuro.Fade(30010, 0); //PSYCHE dokuro.Fade(302885, 1); dokurovibrate(302885, 305088, dokuro, 22, cred_boty); dokuro.Fade(305088, 0); dokuro2.Rotate(305088, 0); dokuro2.Scale(305088, cred_namescale); dokuro2.Fade(305088, 1); dokuro2.MoveY(305088, cred_boty); arrangedby.Fade(305088, 305258, None, 0, 1); arrangedby.Fade(305258, 305427, None, 1, 0); dokuro2.Fade(305258, 305427, None, 1, 0); cfourfive.Fade(305597, 306275, None, 0, 1); sbmap.Fade(305597, 306275, None, 0, 1); cfourfive.Fade(306614, 307292, None, 1, 0); sbmap.Fade(307461, 307800, None, 1, 0); tfox.Fade(307970, 308309, None, 0, 1); compby.Fade(307970, 308309, None, 0, 1); tfox.Fade(308648, 309156, None, 1, 0); compby.Fade(309326, 310343, None, 1, 0); //END CREDITS // BEGIN PURPLE BAR var purplebar = new SpriteEvent("sb\\purple_bar.png", Background, BottomCentre); storyboard.AddSpriteEvent(purplebar); purplebar.MoveY(30004, 480); purplebar.Fade(30004, 1); const float purplebar_xscale = 2; const float purplebar_halfway = 0.55f; const float purplebar_scrunch = 0.05f; const int purplebar_delay = 1200; //ScaleVec is called ScaleVector and uses Position objects (the same goes for Move) purplebar.ScaleVector(30004, new Position(purplebar_xscale, purplebar_scrunch)); purplebar_loop(30004, 6, purplebar, purplebar_delay, purplebar_xscale, purplebar_halfway, purplebar_scrunch); purplebar_loop(98139, 9, purplebar, purplebar_delay, purplebar_xscale, purplebar_halfway, purplebar_scrunch); purplebar_loop(162885, 12, purplebar, purplebar_delay / 1.25, purplebar_xscale, purplebar_halfway, purplebar_scrunch); purplebar_loop(218478, 24, purplebar, purplebar_delay / 1.75, purplebar_xscale, purplebar_halfway, purplebar_scrunch); purplebar_loop(313732, 11, purplebar, purplebar_delay / 1.25, purplebar_xscale, purplebar_halfway, purplebar_scrunch); purplebar_loop(408309, 8, purplebar, purplebar_delay / 1.5, purplebar_xscale, purplebar_halfway, purplebar_scrunch); purplebar.Fade(34749, 0); purplebar.Fade(35427, 1); purplebar.Fade(45597, 0); purplebar.Fade(46275, 1); purplebar.Fade(51698, 53732, None, 1, 0); purplebar.Fade(98139, 98239, None, 0, 1); purplebar.Fade(139834, 140851, None, 1, 0); purplebar.Fade(162885, 162985, None, 0, 1); purplebar.Fade(205766, 206190, None, 1, 0); purplebar.Fade(218478, 218578, None, 0, 1); purplebar.Fade(245935, 246867, None, 1, 0); purplebar.Fade(313732, 313832, None, 0, 1); purplebar.Fade(355427, 356444, None, 1, 0); purplebar.Fade(408309, 408359, None, 0, 1); purplebar.Fade(430766, 433393, None, 1, 0); // END PURPLE BAR // BEGIN HEART HIGHRES var bigheart = new SpriteEvent("sb/heart_hr.png"); storyboard.AddSpriteEvent(bigheart); const float bigheartfademax = 0.2f; const float bigheartminscale = 0.51f; const float bigheartmaxscale = 0.75f; bigheart.Scale(218477, bigheartfademax); bigheart.Color(218477, Colour.Red);// new Colour(255, 0, 0)); var loopbh1 = bigheart.CreateLoop(218477, 14); loopbh1.Fade(1, 1017, None, 0, bigheartfademax); loopbh1.Fade(1017, 2034, Out, bigheartfademax, 0); var loopbh2 = bigheart.CreateLoop(218477, 84); loopbh2.Scale(1, 170, None, bigheartmaxscale, bigheartminscale); loopbh2.Scale(170, 339, None, bigheartminscale, bigheartminscale); dokurovibrate(218477, 246952, bigheart, 20, 240); bigheart.Fade(246952, 0); //END HEART HIGHRES //BEGIN FLAMESPECKS flamespeck_spawn(30004, 51698, 65, 60, false); flamespeck_spawn(98139, 139834, 35, 60, false); flamespeck_spawn(162885, 206275, 50, 60, false); flamespeck_spawn(218478, 246867, 50, 60, true); flamespeck_spawn(313732, 355427, 65, 60, false); flamespeck_spawn(408309, 433393, 130, 30, false); //END FLAMESPECKS //BEGIN LETTERS titledrop(30004, 51698, 40, 110, 2, 2, 0); titledrop(408309, 430004, 40, 70, 2, 3, 1); //END LETTERS //BEGIN LETTERS TO PELLETS var lpspawn = 51698; const float p_bxs = 0.1f; var p_bys = 0.7f; var p_ytp = 90; var p_ybt = 170; var pi = (float)Math.PI; //Vertical Top Row newpellet(80, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(105, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(130, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(143, 82, p_bxs, 0.4f, lpspawn, -1); // Middle N newpellet(155, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(180, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(205, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(230, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(280, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(305, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(330, p_ytp, p_bxs, p_bys, lpspawn, -0.7f); //Left W newpellet(345, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(360, p_ytp, p_bxs, p_bys, lpspawn, 0.7f); //Right W newpellet(385, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(410, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(435, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(460, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(485, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(535, p_ytp, p_bxs, p_bys, lpspawn, 0); newpellet(565, p_ytp, p_bxs, p_bys, lpspawn, 0); //Vertical Bottom Row newpellet(115, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(121, 159, p_bxs, 0.28f, lpspawn, -1); //Left M newpellet(136, 159, p_bxs, 0.28f, lpspawn, 1); //Right M newpellet(144, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(170, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(195, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(220, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(245, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(270, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(295, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(320, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(345, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(370, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(420, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(445, p_ybt, p_bxs, p_bys, lpspawn, 0); newpellet(472, 159, p_bxs, 0.28f, lpspawn, -1); //Left Y newpellet(480, 180, p_bxs, 0.4f, lpspawn, 0); //Mid Y newpellet(486, 159, p_bxs, 0.28f, lpspawn, 1); //Right Y //Horizontal p_bys = 0.4f; //Horizontal Top Top Row p_ytp = 70; newpellet(190, p_ytp, p_bxs, p_bys, lpspawn, -pi / 2); newpellet(240, 93, p_bxs, p_bys, lpspawn, pi / 2); //Middle E newpellet(240, p_ytp, p_bxs, p_bys, lpspawn, -pi / 2); newpellet(290, p_ytp, p_bxs, p_bys, lpspawn, pi / 2); newpellet(290, 93, p_bxs, p_bys, lpspawn, -pi / 2); //Middle R newpellet(395, p_ytp, p_bxs, p_bys, lpspawn, pi / 2); newpellet(445, p_ytp, p_bxs, p_bys, lpspawn, -pi / 2); newpellet(445, 93, p_bxs, p_bys, lpspawn, pi / 2); //Middle R newpellet(550, p_ytp, p_bxs, p_bys, lpspawn, -pi / 2); //Horizontal Top Bottom Row p_ytp = 117; newpellet(90, p_ytp, p_bxs, p_bys, lpspawn, -pi / 2); newpellet(190, p_ytp, p_bxs, p_bys, lpspawn, pi / 2); newpellet(240, p_ytp, p_bxs, p_bys, lpspawn, -pi / 2); newpellet(395, p_ytp, p_bxs, p_bys, lpspawn, pi / 2); newpellet(500, p_ytp, p_bxs, p_bys, lpspawn, -pi / 2); newpellet(550, p_ytp, p_bxs, p_bys, lpspawn, pi / 2); //Horizontal Bottom Top Row p_ybt = 150; newpellet(183, p_ybt, p_bxs, p_bys, lpspawn, pi / 2); newpellet(233, 162, p_bxs, 0.4f, lpspawn, -1); // Middle N newpellet(283, p_ybt, p_bxs, p_bys, lpspawn, pi / 2); newpellet(283, 173, p_bxs, p_bys, lpspawn, pi / 2); //Middle A newpellet(333, p_ybt, p_bxs, p_bys, lpspawn, pi / 2); newpellet(333, 173, p_bxs, p_bys, lpspawn, pi / 2); //Middle R newpellet(383, p_ybt, p_bxs, p_bys, lpspawn, pi / 2); newpellet(433, 173, p_bxs, p_bys, lpspawn, pi / 2); //Middle H //Horizontal Bottom Bottom Row p_ybt = 192; newpellet(183, p_ybt, p_bxs, p_bys, lpspawn, pi / 2); newpellet(383, p_ybt, p_bxs, p_bys, lpspawn, pi / 2); //END LETTERS TO PELLETS //BEGIN LETTERSLICE var slice_x = 75; var slice_y = 118; new_slice("ct_u_l", slice_x, slice_y, 1); new_slice("ct_u_r", slice_x, slice_y, 0); slice_x += 50; new_slice("ct_n_l", slice_x, slice_y, 1); new_slice("ct_n_r", slice_x, slice_y, 0); slice_x += 50; new_slice("ct_d_l", slice_x, slice_y, 1); new_slice("ct_d_r", slice_x, slice_y, 0); slice_x += 50; new_slice("ct_e_l", slice_x, slice_y, 1); new_slice("ct_e_r", slice_x, slice_y, 0); slice_x += 50; new_slice("ct_r_l", slice_x, slice_y, 1); new_slice("ct_r_r", slice_x, slice_y, 0); slice_x += 50; new_slice("ct_w_l", slice_x, slice_y, 1); new_slice("ct_w_r", slice_x, slice_y, 0); slice_x += 53; //typo? new_slice("ct_o_l", slice_x, slice_y, 1); new_slice("ct_o_r", slice_x, slice_y, 0); slice_x += 50; new_slice("ct_r_l", slice_x, slice_y, 1); new_slice("ct_r_r", slice_x, slice_y, 0); slice_x += 50; new_slice("ct_l_l", slice_x, slice_y, 1); new_slice("ct_l_r", slice_x, slice_y, 0); slice_x += 50; new_slice("ct_d_l", slice_x, slice_y, 1); new_slice("ct_d_r", slice_x, slice_y, 0); //END LETTERSLICE #region Spoilers //BEGIN TORHEART var torheart = new SpriteEvent("sb/torheart.png"); storyboard.AddSpriteEvent(torheart); //Fade in start at 292037 //Fade in end at 294410 torheart.Fade(292037, 294410, 0, 1); torheart.MoveY(292037, 176); torheart.Scale(292037, 0.2f); torheart.Scale(294410, 0.25f); torheart.Scale(295766, 0.36f); torheart.Scale(296444, 0.46f); torheart.Scale(297037, 0.4f); torheart.Fade(297122, 0); torheartspam(297461, 310, 176, 1, 10, 50, 195, 245, 0.1, 1); torheartspam(297461, 310, 176, 1, 60, 90, 195, 245, 0.1, 1); torheartspam(297461, 310, 176, 1, 100, 140, 195, 245, 0.1, 1); torheartspam(297461, 310, 176, 1, 10, 50, 195, 245, 0.1, 0); torheartspam(297461, 310, 176, 1, 60, 90, 195, 245, 0.1, 0); torheartspam(297461, 310, 176, 1, 100, 140, 195, 245, 0.1, 0); torheartshake(torheart, 292037, 294410, 2, 2, 33.333, 22); torheartshake(torheart, 294410, 295766, 4, 4, 33.333, 21); torheartshake(torheart, 295766, 296105, 6, 6, 33.333, 11); torheart.MoveY(296106, 176); torheartshake(torheart, 296444, 296783, 9, 9, 33.333, 11); torheart.MoveY(296784, 176); torheartshake(torheart, 296953, 297122, 9, 9, 33.333, 4); //END TORHEART //BEGIN HEART var heart = new SpriteEvent("sb/heart.png"); heart.Fade(30004, 1); heart.Move(30004, new Position(320, 330)); heart.Color(30004, Colour.Red); //a lot more after this... takes some time to convert though #endregion //tell the storyboard it should be written to Storyboard.FullPath storyboard.WriteFile(); }