done moving bone without accel
[livewp] / applet / src / fifteen.c
1 #include <hildon/hildon.h>
2 #include <time.h>
3 #include "livewp-common.h"
4 #include "livewp-actor.h"
5
6 enum {
7     UP = 0,
8     RIGHT = 1,
9     DOWN = 2,
10     LEFT = 3
11 };
12
13 gint pg[16];
14 Actor *actors[15];
15 gint empty;
16
17 void init_pg(gint *pg)
18 {
19     srand(time(NULL));
20     gint i, j, t;
21     for (i=0; i<16; i++){
22         pg[i] = i;
23     }
24     for (i=0; i<15; i++){
25         j = rand()%15;
26         t = pg[i];
27         pg[i] = pg[j];
28         pg[j] = t;
29     }
30 }
31
32 void move(gint direction, AWallpaperPlugin *desktop_plugin)
33 {
34     gint bone;
35     Actor *actor;
36     switch (direction) {
37         case UP:
38             bone = empty + 4;
39             if (bone > 15) return;
40             break;
41         case RIGHT:
42             bone = empty - 1;
43             if (empty % 4 == 0) return;
44             break;
45         case DOWN:
46             bone = empty - 4;
47             if (bone < 0) return;
48             break;
49         case LEFT:
50             bone = empty + 1;
51             if (bone % 4) return;
52     }
53     fprintf(stderr, "from %d to %d x=%d y=%d\n", bone, empty, (empty%4)*200, (empty/4)*120);
54     actor = actors[pg[bone]];
55     set_actor_position(actor, (empty%4)*200, (empty/4)*120, actor->z, desktop_plugin);
56     pg[empty] = pg[bone];
57     pg[bone] = 15;
58     empty = bone;
59 }
60 gboolean make_move(AWallpaperPlugin *desktop_plugin)
61 {
62     move(RIGHT, desktop_plugin);
63     return TRUE;
64 }
65 int main( int   argc, char *argv[] )
66 {
67     GtkWidget *window;
68     AWallpaperPlugin *desktop_plugin = g_new0 (AWallpaperPlugin, 1);
69     Animation_WallpaperPrivate *priv = g_new0 (Animation_WallpaperPrivate, 1);
70     Actor *actor;
71     gint i;
72
73     hildon_gtk_init (&argc, &argv);
74     g_set_application_name ("Simplest example");
75     window = hildon_window_new ();
76     g_signal_connect (G_OBJECT (window), "delete_event",
77                         G_CALLBACK (gtk_main_quit), NULL);
78     priv->window = window;
79     priv->theme = g_strdup("Fifteen"); 
80     priv->xapplet = 0;
81     priv->yapplet = 0;
82     desktop_plugin->priv = priv;
83     init_pg(pg);
84     empty = 15;
85     for (i=0; i<15; i++){
86         actor = init_object(desktop_plugin, "bone", g_strdup_printf("%d.png", pg[i]+1), 
87                       (i%4)*200, (i/4)*120, 2, 200, 120, 
88                       TRUE, TRUE, 100, 255, 
89                       NULL, NULL, NULL);
90         actors[pg[i]] = actor;
91     }
92     gtk_widget_show  (window);
93     g_timeout_add(4000, make_move, desktop_plugin);
94     gtk_main ();
95     return 0;
96 }
97
98