#define SONGNAME_SCROLL_SPEED 0.2857 public songname_len; public songname_animator; public songname_timer; public on_songname_animator_restart(val) { new id; id = anim (get_int (songname_len) * SONGNAME_SCROLL_SPEED, "on_songname_animator", round (abs (1 - val))); set_int (songname_animator, id); } public on_songname_animator(val, Float:pos) { new p = PART:"player.songname"; set_state_val (p, STATE_ALIGNMENT, abs (val - pos), 0.5); set_state (p, "custom", 0.0); if (pos == 1.0) { new id = timer (1.0, "on_songname_animator_restart", val); set_int (songname_timer, id); } } public set_songname (sname[], len) { new p = PART:"player.songname", id; if ((id = get_int (songname_timer))) cancel_timer (id); if ((id = get_int (songname_animator))) cancel_anim (id); set_text (p, sname); set_state (p, "default", 0.0); /* with the font and size we're using, 18 characters * are fitting into the display (no scrolling required) */ len -= 18; if (len > 0) { set_int (songname_len, len); id = timer (1.0, "on_songname_animator_restart", 1); set_int (songname_timer, id); } }