Enlightenment CVS committal

Author  : davemds
Project : e_modules
Module  : penguins

Dir     : e_modules/penguins


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
Add mouse click support. Left click will make the penguins explode, right click 
open the configuration dialog.

===================================================================
RCS file: /cvs/e/e_modules/penguins/e_mod_main.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- e_mod_main.c        12 Nov 2007 08:29:13 -0000      1.12
+++ e_mod_main.c        13 Nov 2007 15:57:57 -0000      1.13
@@ -11,7 +11,7 @@
 #define MAX_FALLER_HEIGHT 300
 
 #define FLYER_PROB 1000 // every n animation cicle
-#define CUSTOM_PROB 600 // every n animation cicle
+#define CUSTOM_PROB 600 // every n animation cicle (def: 600)
 
 //_RAND(prob) is true one time every prob
 #define _RAND(prob) ( ( random() % prob ) == 0 )
@@ -32,7 +32,10 @@
 //static void     _win_shape_change(void *data, E_Container_Shape *es, 
E_Container_Shape_Change ch);
 static void       _reborn(Penguin *tux);
 static void       _cb_custom_end(void *data, Evas_Object *o, const char *emi, 
const char *src);
-
+static void       _cb_click_l (void *data, Evas_Object *o, const char *emi, 
const char *src);
+static void       _cb_click_r (void *data, Evas_Object *o, const char *emi, 
const char *src);
+static void       _cb_click_c (void *data, Evas_Object *o, const char *emi, 
const char *src);
+static void       _start_bombing_at(Penguin *tux, int at_y);
 /* public module routines. all modules must have these */
 EAPI E_Module_Api e_modapi = {
    E_MODULE_API_VERSION,
@@ -384,7 +387,7 @@
    _load_action(pop, pop->conf->theme, "Faller", ID_FALLER);
    _load_action(pop, pop->conf->theme, "Climber", ID_CLIMBER);
    _load_action(pop, pop->conf->theme, "Floater", ID_FLOATER);
-   //_load_action(pop, pop->conf->theme, "Bomber");
+   _load_action(pop, pop->conf->theme, "Bomber", ID_BOMBER);
    _load_action(pop, pop->conf->theme, "Splatter", ID_SPLATTER);
    _load_action(pop, pop->conf->theme, "Flyer", ID_FLYER);
    
@@ -429,7 +432,11 @@
         evas_object_image_alpha_set(o, 0.5);
         evas_object_color_set(o, pop->conf->alpha, pop->conf->alpha,
                               pop->conf->alpha, pop->conf->alpha);
-        evas_object_pass_events_set(o, 1);
+        evas_object_pass_events_set(o, 0);
+        
+        edje_object_signal_callback_add(o,"click_l","penguins", _cb_click_l, 
tux);
+        edje_object_signal_callback_add(o,"click_r","penguins", _cb_click_r, 
tux);
+        edje_object_signal_callback_add(o,"click_c","penguins", _cb_click_c, 
tux);
        
         tux->obj = o;
         tux->pop = pop;
@@ -443,6 +450,25 @@
 }
 
 static void
+_cb_click_l (void *data, Evas_Object *o, const char *emi, const char *src)
+{
+   Penguin *tux = data;
+   //printf("Left-click on TUX !!!\n");
+   _start_bombing_at(tux, tux->y + tux->action->h);
+}
+static void
+_cb_click_r (void *data, Evas_Object *o, const char *emi, const char *src)
+{
+   //printf("Right-click on TUX !!!\n");
+   e_int_config_penguins_module(NULL, NULL);
+}
+static void
+_cb_click_c (void *data, Evas_Object *o, const char *emi, const char *src)
+{
+   printf("Center-click on TUX !!!\n");
+}
+
+static void
 _reborn(Penguin *tux)
 {
    //printf("PENGUINS: Reborn :)\n");
@@ -796,13 +822,39 @@
    evas_object_move(tux->obj,(int)tux->x,(int)tux->y);
    evas_object_show(tux->obj);
 }
-
+static void 
+_cb_bomber_end(void *data, Evas_Object *o, const char *emi, const char *src)
+{
+   edje_object_signal_callback_del(o,"bombing_done","edje", _cb_bomber_end);
+   _reborn((Penguin*)data);
+}
+static void 
+_start_bombing_at(Penguin *tux, int at_y)
+{
+   //printf("PENGUINS: Start bombing at %d...\n", at_y);
+   
+   if (tux->reverse)
+      edje_object_signal_emit(tux->obj, "start_bombing_left", "epenguins");
+   else
+      edje_object_signal_emit(tux->obj, "start_bombing_right", "epenguins");
+   
+   tux->x = tux->x + (tux->action->w /2);
+   tux->action = evas_hash_find(tux->pop->actions, "Bomber");
+   tux->x = tux->x - (tux->action->w /2);
+   tux->y = at_y - tux->action->h;
+   
+   edje_object_signal_callback_add(tux->obj,"bombing_done","edje", 
_cb_bomber_end, tux);
+   evas_object_image_fill_set(tux->obj, 0, 0, tux->action->w, tux->action->h);
+   evas_object_resize(tux->obj, tux->action->w, tux->action->h);
+   evas_object_move(tux->obj,(int)tux->x,(int)tux->y);
+   
+}
 
 static void 
 _cb_custom_end (void *data, Evas_Object *o, const char *emi, const char *src)
 {
    Penguin* tux = data;
-  // printf("PENGUINS: Custom action end.\n");
+   printf("PENGUINS: Custom action end.\n");
    if (tux->r_count > 0)
    {
       if (tux->reverse)
@@ -829,10 +881,14 @@
       return;
    
    ran = random() % (tux->pop->custom_num);
+   ran=2;  //!!!!
+   printf("START CUSTOM NUM %d RAN %d\n",tux->pop->custom_num, ran);
+   
    tux->custom = evas_list_nth(tux->pop->customs, ran);
    if (!tux->custom)
       return;
    
+   
    evas_object_resize(tux->obj, tux->custom->w, tux->custom->h);
    tux->y = at_y - tux->custom->h;
    
@@ -842,6 +898,7 @@
       tux->r_count = tux->custom->r_min + 
                      (random() % (tux->custom->r_max - tux->custom->r_min + 
1));
    tux->r_count --;
+
    if (tux->reverse)
       edje_object_signal_emit(tux->obj, tux->custom->left_program_name, 
"epenguins");
    else   
@@ -849,7 +906,7 @@
       
    
    
-   //printf("START Custom Action n %d (%s) repeat: %d\n", ran, 
tux->custom->left_program_name, tux->r_count);
+   printf("START Custom Action n %d (%s) repeat: %d\n", ran, 
tux->custom->left_program_name, tux->r_count);
    
    edje_object_signal_callback_add(tux->obj,"custom_done","edje", 
_cb_custom_end, tux);
    
===================================================================
RCS file: /cvs/e/e_modules/penguins/e_mod_main.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_mod_main.h        12 Nov 2007 21:17:53 -0000      1.4
+++ e_mod_main.h        13 Nov 2007 15:57:57 -0000      1.5
@@ -15,6 +15,7 @@
 #define ID_FLOATER 4
 #define ID_SPLATTER 5
 #define ID_FLYER 6
+#define ID_BOMBER 7
 
 typedef struct _Config Config;
 typedef struct _Population Population;



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to