037ade7bd26aa3f8acdd45cd19d46188f3c5980b
[multipass-eu.git] / src / player-display-track.sma
1 /* $Id: player-display-track.sma 1 2005-04-19 09:41:42Z tilman $ */
2
3 #define SONGNAME_SCROLL_SPEED 0.2857
4
5 public songname_len;
6 public songname_animator;
7 public songname_timer;
8
9 public on_songname_animator_restart(val)
10 {
11         new id;
12
13         id = anim (get_int (songname_len) * SONGNAME_SCROLL_SPEED,
14                    "on_songname_animator", round (abs (1 - val)));
15         set_int (songname_animator, id);
16 }
17
18 public on_songname_animator(val, Float:pos)
19 {
20         new p = PART:"player.songname";
21
22         set_state_val (p, STATE_ALIGNMENT, abs (val - pos), 0.5);
23         set_state (p, "custom", 0.0);
24
25         if (pos == 1.0) {
26                 new id = timer (1.0, "on_songname_animator_restart", val);
27                 set_int (songname_timer, id);
28         }
29 }
30
31 public set_songname (sname[], len)
32 {
33         new p = PART:"player.songname", id;
34
35         if ((id = get_int (songname_timer)))
36                 cancel_timer (id);
37
38         if ((id = get_int (songname_animator)))
39                 cancel_anim (id);
40
41         set_text (p, sname);
42         set_state (p, "default", 0.0);
43
44         /* with the font and size we're using, 18 characters
45          * are fitting into the display (no scrolling required)
46          */
47         len -= 18;
48
49         if (len > 0) {
50                 set_int (songname_len, len);
51
52                 id = timer (1.0, "on_songname_animator_restart", 1);
53                 set_int (songname_timer, id);
54         }
55 }