factorization of many copy/pasted functions
authormrtout <mrtout@78b8d119-cf0a-0410-b17c-f493084dd1d7>
Wed, 1 Mar 2006 13:46:51 +0000 (13:46 +0000)
committermrtout <mrtout@78b8d119-cf0a-0410-b17c-f493084dd1d7>
Wed, 1 Mar 2006 13:46:51 +0000 (13:46 +0000)
git-svn-id: https://s.snth.net/svn/neverball/trunk@187 78b8d119-cf0a-0410-b17c-f493084dd1d7

16 files changed:
Makefile
ball/st_conf.c
ball/st_demo.c
ball/st_done.c
ball/st_fail.c
ball/st_goal.c
ball/st_level.c
ball/st_name.c
ball/st_over.c
ball/st_play.c
ball/st_save.c
ball/st_set.c
ball/st_shared.c [new file with mode: 0644]
ball/st_shared.h [new file with mode: 0644]
ball/st_start.c
ball/st_title.c

index 0ae8cfe..afbbc84 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -72,6 +72,7 @@ BALL_OBJS= \
        ball/st_start.o \
        ball/st_title.o \
        ball/st_name.o  \
+       ball/st_shared.o  \
        ball/main.o
 PUTT_OBJS= \
        share/i18n.o    \
index 906ed79..f18a4e2 100644 (file)
@@ -20,6 +20,7 @@
 #include "game.h"
 #include "audio.h"
 #include "config.h"
+#include "st_shared.h"
 
 #include "st_conf.h"
 #include "st_title.h"
@@ -355,32 +356,6 @@ static void conf_paint(int id, float st)
     gui_paint(id);
 }
 
-static void conf_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
-static void conf_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void conf_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int conf_click(int b, int d)
-{
-    if (b < 0 && d == 1)
-        return conf_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int conf_buttn(int b, int d)
 {
     if (d)
@@ -431,10 +406,10 @@ struct state st_conf = {
     conf_enter,
     conf_leave,
     conf_paint,
-    conf_timer,
-    conf_point,
-    conf_stick,
-    conf_click,
+    shared_timer,
+    shared_point,
+    shared_stick,
+    shared_click,
     NULL,
     conf_buttn,
     1, 0
index c6a0f1a..7515b67 100644 (file)
@@ -21,6 +21,7 @@
 #include "audio.h"
 #include "solid.h"
 #include "config.h"
+#include "st_shared.h"
 
 #include "st_demo.h"
 #include "st_title.h"
@@ -186,11 +187,6 @@ static int demo_enter(void)
     return id;
 }
 
-static void demo_leave(int id)
-{
-    gui_delete(id);
-}
-
 static void demo_paint(int id, float st)
 {
     game_draw(0, st);
@@ -198,34 +194,20 @@ static void demo_paint(int id, float st)
     gui_paint(id);
 }
 
-static void demo_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
 static void demo_point(int id, int x, int y, int dx, int dy)
 {
-    int jd = gui_point(id, x, y);
+    int jd = shared_point_basic(id, x, y);
     int i  = gui_token(jd);
-    gui_pulse(jd, 1.2f);
     if (jd && i>=0)
        demo_status(i);
 }
 
 static void demo_stick(int id, int a, int v)
 {
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int demo_click(int b, int d)
-{
-    if (b <= 0 && d == 1)
-        return demo_action(gui_token(gui_click()));
-    return 1;
+    int jd = shared_stick_basic(id, a, v);
+    int i  = gui_token(jd);
+    if (jd && i>=0)
+       demo_status(i);
 }
 
 static int demo_buttn(int b, int d)
@@ -233,7 +215,7 @@ static int demo_buttn(int b, int d)
     if (d)
     {
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
-            return demo_click(0, 1);
+            return demo_action(gui_token(gui_click()));
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
             return demo_action(DEMO_BACK);
     }
@@ -262,11 +244,6 @@ static int demo_play_enter(void)
     return id;
 }
 
-static void demo_play_leave(int id)
-{
-    gui_delete(id);
-}
-
 static void demo_play_paint(int id, float st)
 {
     game_draw(0, st);
@@ -352,17 +329,6 @@ static int demo_end_enter(void)
     return id;
 }
 
-static void demo_end_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void demo_end_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
 static void demo_end_timer(int id, float dt)
 {
     float g[3] = { 0.0f, -9.8f, 0.0f };
@@ -374,26 +340,6 @@ static void demo_end_timer(int id, float dt)
     audio_timer(dt);
 }
 
-static void demo_end_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void demo_end_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int demo_end_click(int b, int d)
-{
-    if (d && b < 0)
-        return demo_end_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int demo_end_buttn(int b, int d)
 {
     if (d)
@@ -438,43 +384,6 @@ static int demo_del_enter(void)
     return id;
 }
 
-static void demo_del_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void demo_del_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
-static void demo_del_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
-static void demo_del_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void demo_del_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int demo_del_click(int b, int d)
-{
-    if (d && b < 0)
-        return demo_del_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int demo_del_buttn(int b, int d)
 {
     if (d)
@@ -491,12 +400,12 @@ static int demo_del_buttn(int b, int d)
 
 struct state st_demo = {
     demo_enter,
-    demo_leave,
+    shared_leave,
     demo_paint,
-    demo_timer,
+    shared_timer,
     demo_point,
     demo_stick,
-    demo_click,
+    shared_click,
     NULL,
     demo_buttn,
     0
@@ -504,7 +413,7 @@ struct state st_demo = {
 
 struct state st_demo_play = {
     demo_play_enter,
-    demo_play_leave,
+    shared_leave,
     demo_play_paint,
     demo_play_timer,
     NULL,
@@ -517,12 +426,12 @@ struct state st_demo_play = {
 
 struct state st_demo_end = {
     demo_end_enter,
-    demo_end_leave,
-    demo_end_paint,
+    shared_leave,
+    shared_paint,
     demo_end_timer,
-    demo_end_point,
-    demo_end_stick,
-    demo_end_click,
+    shared_point,
+    shared_stick,
+    shared_click,
     NULL,
     demo_end_buttn,
     1, 0
@@ -530,12 +439,12 @@ struct state st_demo_end = {
 
 struct state st_demo_del = {
     demo_del_enter,
-    demo_del_leave,
-    demo_del_paint,
-    demo_del_timer,
-    demo_del_point,
-    demo_del_stick,
-    demo_del_click,
+    shared_leave,
+    shared_paint,
+    shared_timer,
+    shared_point,
+    shared_stick,
+    shared_click,
     NULL,
     demo_del_buttn,
     1, 0
index 825293b..4ce40f5 100644 (file)
@@ -22,6 +22,7 @@
 #include "level.h"
 #include "audio.h"
 #include "config.h"
+#include "st_shared.h"
 
 #include "st_done.h"
 #include "st_start.h"
@@ -119,49 +120,12 @@ static int done_bis_enter(void)
     return done_init(NULL);
 }
 
-static void done_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void done_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
-static void done_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
-static void done_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void done_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int done_click(int b, int d)
-{
-    if (b <= 0 && d == 1)
-        return done_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int done_buttn(int b, int d)
 {
     if (d)
     {
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
-            return done_click(0, 1);
+            return done_action(gui_token(gui_click()));
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
             return done_action(DONE_OK);
     }
@@ -172,12 +136,12 @@ static int done_buttn(int b, int d)
 
 struct state st_done = {
     done_enter,
-    done_leave,
-    done_paint,
-    done_timer,
-    done_point,
-    done_stick,
-    done_click,
+    shared_leave,
+    shared_paint,
+    shared_timer,
+    shared_point,
+    shared_stick,
+    shared_click,
     NULL,
     done_buttn,
     1, 0
@@ -185,12 +149,12 @@ struct state st_done = {
 
 struct state st_done_bis = {
     done_bis_enter,
-    done_leave,
-    done_paint,
-    done_timer,
-    done_point,
-    done_stick,
-    done_click,
+    shared_leave,
+    shared_paint,
+    shared_timer,
+    shared_point,
+    shared_stick,
+    shared_click,
     NULL,
     done_buttn,
     1, 0
index 1d7829a..96282bc 100644 (file)
@@ -17,6 +17,7 @@
 #include "level.h"
 #include "audio.h"
 #include "config.h"
+#include "st_shared.h"
 
 #include "st_fail.h"
 #include "st_over.h"
@@ -54,6 +55,18 @@ static int fail_action(int i)
     return 1;
 }
 
+static int fail_buttn(int b, int d)
+{
+    if (d)
+    {
+        if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
+            return fail_action(gui_token(gui_click()));
+        if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
+           return fail_action(FAIL_BACK);
+    }
+    return 1;
+}
+
 static int fall_out_enter(void)
 {
     int id, jd, kd;
@@ -84,37 +97,6 @@ static int fall_out_enter(void)
     return id;
 }
 
-static void fall_out_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void fall_out_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
-static void fall_out_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void fall_out_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int fall_out_click(int b, int d)
-{
-    if (b <= 0 && d == 1)
-        return fail_action(gui_token(gui_click()));
-    return 1;
-}
-
 static void fall_out_timer(int id, float dt)
 {
     float g[3] = { 0.0f, -9.8f, 0.0f };
@@ -126,17 +108,6 @@ static void fall_out_timer(int id, float dt)
     audio_timer(dt);
 }
 
-static int fall_out_buttn(int b, int d)
-{
-    if (d)
-    {
-        if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
-            return fall_out_click(0, 1);
-        if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
-           return fail_action(FAIL_BACK);
-    }
-    return 1;
-}
 
 /*---------------------------------------------------------------------------*/
 
@@ -170,79 +141,30 @@ static int time_out_enter(void)
     return id;
 }
 
-static void time_out_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void time_out_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
-static void time_out_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void time_out_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int time_out_click(int b, int d)
-{
-    if (b <= 0 && d == 1)
-        return fail_action(gui_token(gui_click()));
-    return 1;
-}
-
-static void time_out_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
-static int time_out_buttn(int b, int d)
-{
-    if (d)
-    {
-        if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
-            return time_out_click(0, 1);
-        if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
-           return fail_action(FAIL_BACK);
-    }
-    return 1;
-}
-
 /*---------------------------------------------------------------------------*/
 
 struct state st_fall_out = {
     fall_out_enter,
-    fall_out_leave,
-    fall_out_paint,
+    shared_leave,
+    shared_paint,
     fall_out_timer,
-    fall_out_point,
-    fall_out_stick,
-    fall_out_click,
+    shared_point,
+    shared_stick,
+    shared_click,
     NULL,
-    fall_out_buttn,
+    fail_buttn,
     1, 0
 };
 
 struct state st_time_out = {
     time_out_enter,
-    time_out_leave,
-    time_out_paint,
-    time_out_timer,
-    time_out_point,
-    time_out_stick,
-    time_out_click,
+    shared_leave,
+    shared_paint,
+    shared_timer,
+    shared_point,
+    shared_stick,
+    shared_click,
     NULL,
-    time_out_buttn,
+    fail_buttn,
     1, 0
 };
index e47b36c..9668ab0 100644 (file)
@@ -22,6 +22,7 @@
 #include "audio.h"
 #include "config.h"
 #include "demo.h"
+#include "st_shared.h"
 
 #include "st_goal.h"
 #include "st_save.h"
@@ -196,17 +197,6 @@ static int goal_bis_enter(void)
     return goal_init(NULL);
 }
 
-static void goal_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void goal_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
 static void goal_timer(int id, float dt)
 {
     static float DT = 0.0f;
@@ -245,38 +235,12 @@ static void goal_timer(int id, float dt)
     audio_timer(dt);
 }
 
-static void goal_bis_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
-static void goal_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void goal_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int goal_click(int b, int d)
-{
-    if (b <= 0 && d == 1)
-        return goal_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int goal_buttn(int b, int d)
 {
     if (d)
     {
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
-            return goal_click(0, 1);
+            return goal_action(gui_token(gui_click()));
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
            goal_action(GOAL_BACK);
     }
@@ -287,12 +251,12 @@ static int goal_buttn(int b, int d)
 
 struct state st_goal = {
     goal_enter,
-    goal_leave,
-    goal_paint,
+    shared_leave,
+    shared_paint,
     goal_timer,
-    goal_point,
-    goal_stick,
-    goal_click,
+    shared_point,
+    shared_stick,
+    shared_click,
     NULL,
     goal_buttn,
     1, 0
@@ -300,12 +264,12 @@ struct state st_goal = {
 
 struct state st_goal_bis = {
     goal_bis_enter,
-    goal_leave,
-    goal_paint,
-    goal_bis_timer,
-    goal_point,
-    goal_stick,
-    goal_click,
+    shared_leave,
+    shared_paint,
+    shared_timer,
+    shared_point,
+    shared_stick,
+    shared_click,
     NULL,
     goal_buttn,
     1, 0
index b8a424e..0c2e4c2 100644 (file)
@@ -18,6 +18,7 @@
 #include "level.h"
 #include "audio.h"
 #include "config.h"
+#include "st_shared.h"
 
 #include "st_level.h"
 #include "st_play.h"
@@ -73,23 +74,12 @@ static int level_enter(void)
     return id;
 }
 
-static void level_leave(int id)
-{
-    gui_delete(id);
-}
-
 static void level_timer(int id, float dt)
 {
     game_step_fade(dt);
     audio_timer(dt);
 }
 
-static void level_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
 static int level_click(int b, int d)
 {
     return (b < 0 && d == 1) ? goto_state(&st_play_ready) : 1;
@@ -135,8 +125,8 @@ static int poser_buttn(int c, int d)
 
 struct state st_level = {
     level_enter,
-    level_leave,
-    level_paint,
+    shared_leave,
+    shared_paint,
     level_timer,
     NULL,
     NULL,
index c389c6c..e8ae001 100644 (file)
@@ -20,6 +20,7 @@
 #include "audio.h"
 #include "config.h"
 #include "game.h"
+#include "st_shared.h"
 
 #include "st_name.h"
 
@@ -133,38 +134,6 @@ static void name_leave(int id)
     gui_delete(id);
 }
 
-static void name_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
-static void name_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
-static void name_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void name_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int name_click(int b, int d)
-{
-    if (b <= 0 && d == 1)
-        return name_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int name_keybd(int c, int d)
 {
     if (d)
@@ -184,7 +153,7 @@ static int name_buttn(int b, int d)
     if (d)
     {
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
-            return name_click(0, 1);
+            return name_action(gui_token(gui_click()));
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
            name_action(NAME_BACK);
     }
@@ -196,11 +165,11 @@ static int name_buttn(int b, int d)
 struct state st_name = {
     name_enter,
     name_leave,
-    name_paint,
-    name_timer,
-    name_point,
-    name_stick,
-    name_click,
+    shared_paint,
+    shared_timer,
+    shared_point,
+    shared_stick,
+    shared_click,
     name_keybd,
     name_buttn,
     1, 0
index 4b6f9b8..f544544 100644 (file)
@@ -19,6 +19,7 @@
 #include "audio.h"
 #include "config.h"
 #include "demo.h"
+#include "st_shared.h"
 
 #include "st_over.h"
 #include "st_start.h"
@@ -43,17 +44,6 @@ static int over_enter(void)
     return id;
 }
 
-static void over_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void over_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
 static void over_timer(int id, float dt)
 {
     if (dt > 0.f && time_state() > 3.f)
@@ -83,8 +73,8 @@ static int over_buttn(int b, int d)
 
 struct state st_over = {
     over_enter,
-    over_leave,
-    over_paint,
+    shared_leave,
+    shared_paint,
     over_timer,
     NULL,
     NULL,
index e85a901..8580b87 100644 (file)
@@ -19,6 +19,7 @@
 #include "level.h"
 #include "audio.h"
 #include "config.h"
+#include "st_shared.h"
 
 #include "st_play.h"
 #include "st_fail.h"
@@ -47,17 +48,6 @@ static int play_ready_enter(void)
     return id;
 }
 
-static void play_ready_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void play_ready_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
 static void play_ready_timer(int id, float dt)
 {
     float t = time_state();
@@ -106,17 +96,6 @@ static int play_set_enter(void)
     return id;
 }
 
-static void play_set_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void play_set_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
 static void play_set_timer(int id, float dt)
 {
     float t = time_state();
@@ -174,11 +153,6 @@ static int play_loop_enter(void)
     return id;
 }
 
-static void play_loop_leave(int id)
-{
-    gui_delete(id);
-}
-
 static void play_loop_paint(int id, float st)
 {
     game_draw(0, st);
@@ -377,8 +351,8 @@ static int look_buttn(int b, int d)
 
 struct state st_play_ready = {
     play_ready_enter,
-    play_ready_leave,
-    play_ready_paint,
+    shared_leave,
+    shared_paint,
     play_ready_timer,
     NULL,
     NULL,
@@ -390,8 +364,8 @@ struct state st_play_ready = {
 
 struct state st_play_set = {
     play_set_enter,
-    play_set_leave,
-    play_set_paint,
+    shared_leave,
+    shared_paint,
     play_set_timer,
     NULL,
     NULL,
@@ -403,7 +377,7 @@ struct state st_play_set = {
 
 struct state st_play_loop = {
     play_loop_enter,
-    play_loop_leave,
+    shared_leave,
     play_loop_paint,
     play_loop_timer,
     play_loop_point,
index c5ebea4..ea0d0d3 100644 (file)
@@ -20,6 +20,7 @@
 #include "audio.h"
 #include "config.h"
 #include "demo.h"
+#include "st_shared.h"
 
 #include "st_save.h"
 
@@ -45,7 +46,7 @@ int goto_save(struct state * ok, struct state * cancel)
 #define SAVE_SAVE   2
 #define SAVE_CANCEL 3
 
-static int  file_id;
+static int file_id;
 
 static int save_action(int i)
 {
@@ -124,38 +125,6 @@ static void save_leave(int id)
     gui_delete(id);
 }
 
-static void save_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
-static void save_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
-static void save_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void save_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int save_click(int b, int d)
-{
-    if (b <= 0 && d == 1)
-        return save_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int save_keybd(int c, int d)
 {
     if (d)
@@ -175,7 +144,7 @@ static int save_buttn(int b, int d)
     if (d)
     {
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_A, b))
-            return save_click(0, 1);
+            return save_action(gui_token(gui_click()));
         if (config_tst_d(CONFIG_JOYSTICK_BUTTON_EXIT, b))
            return save_action(SAVE_CANCEL);
     }
@@ -219,43 +188,6 @@ static int clobber_enter(void)
     return id;
 }
 
-static void clobber_leave(int id)
-{
-    gui_delete(id);
-}
-
-static void clobber_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
-static void clobber_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
-static void clobber_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void clobber_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int clobber_click(int b, int d)
-{
-    if (d && b < 0)
-        return clobber_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int clobber_buttn(int b, int d)
 {
     if (d)
@@ -273,11 +205,11 @@ static int clobber_buttn(int b, int d)
 struct state st_save = {
     save_enter,
     save_leave,
-    save_paint,
-    save_timer,
-    save_point,
-    save_stick,
-    save_click,
+    shared_paint,
+    shared_timer,
+    shared_point,
+    shared_stick,
+    shared_click,
     save_keybd,
     save_buttn,
     1, 0
@@ -285,12 +217,12 @@ struct state st_save = {
 
 struct state st_clobber = {
     clobber_enter,
-    clobber_leave,
-    clobber_paint,
-    clobber_timer,
-    clobber_point,
-    clobber_stick,
-    clobber_click,
+    shared_leave,
+    shared_paint,
+    shared_timer,
+    shared_point,
+    shared_stick,
+    shared_click,
     NULL,
     clobber_buttn,
     1, 0
index 1305a53..3380b68 100644 (file)
@@ -17,6 +17,7 @@
 #include "game.h"
 #include "audio.h"
 #include "config.h"
+#include "st_shared.h"
 
 #include "st_set.h"
 #include "st_title.h"
@@ -118,11 +119,6 @@ static int set_enter(void)
     return id;
 }
 
-static void set_leave(int id)
-{
-    gui_delete(id);
-}
-
 static void set_paint(int id, float st)
 {
     game_draw(0, st);
@@ -130,52 +126,26 @@ static void set_paint(int id, float st)
     gui_paint(id);
 }
 
-static void set_timer(int id, float dt)
+static void set_over(int i)
 {
-    gui_timer(id, dt);
-    audio_timer(dt);
+    gui_set_image(shot_id, set_shot(i));
+    gui_set_multi(desc_id, _(set_desc(i)));
 }
 
 static void set_point(int id, int x, int y, int dx, int dy)
 {
-    int jd;
-
-    if ((jd = gui_point(id, x, y)))
-    {
-        int i = gui_token(jd);
-       
-       if (set_exists(i))
-       {
-            gui_set_image(shot_id, set_shot(i));
-           gui_set_multi(desc_id, _(set_desc(i)));
-           gui_pulse(jd, 1.2f);
-       }
-    }
+    int jd = shared_point_basic(id, x, y);
+    int i  = gui_token(jd);
+    if (jd && set_exists(i))
+       set_over(i);
 }
 
 static void set_stick(int id, int a, int v)
 {
-    int jd;
-
-    int x = (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a)) ? v : 0;
-    int y = (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a)) ? v : 0;
-
-    if ((jd = gui_stick(id, x, y)))
-    {
-        int i = gui_token(jd);
-
-       if (set_exists(i))
-       {
-            gui_set_image(shot_id, set_shot(i));
-           gui_set_multi(desc_id, _(set_desc(i)));
-           gui_pulse(jd, 1.2f);
-       }
-    }
-}
-
-static int set_click(int b, int d)
-{
-    return (b < 0 && d == 1) ? set_action(gui_token(gui_click())) : 1;
+    int jd = shared_stick_basic(id, a, v);
+    int i  = gui_token(jd);
+    if (jd && set_exists(i))
+       set_over(i);
 }
 
 static int set_buttn(int b, int d)
@@ -194,12 +164,12 @@ static int set_buttn(int b, int d)
 
 struct state st_set = {
     set_enter,
-    set_leave,
+    shared_leave,
     set_paint,
-    set_timer,
+    shared_timer,
     set_point,
     set_stick,
-    set_click,
+    shared_click,
     NULL,
     set_buttn,
     1, 0
diff --git a/ball/st_shared.c b/ball/st_shared.c
new file mode 100644 (file)
index 0000000..0147c53
--- /dev/null
@@ -0,0 +1,65 @@
+#include "gui.h"
+#include "config.h"
+#include "audio.h"
+#include "game.h"
+#include "state.h"
+
+#include "st_shared.h"
+
+void shared_leave(int id)
+{
+    gui_delete(id);
+}
+
+void shared_paint(int id, float st)
+{
+    game_draw(0, st);
+    gui_paint(id);
+}
+
+void shared_timer(int id, float dt)
+{
+    gui_timer(id, dt);
+    audio_timer(dt);
+}
+
+int shared_point_basic(int id, int x, int y)
+/* Pulse, activate and return the active id (if changed)*/
+{
+    int jd = gui_point(id, x, y);
+    if (jd)
+        gui_pulse(jd, 1.2f);
+    return jd;
+}
+
+void shared_point(int id, int x, int y, int dx, int dy)
+{
+    shared_point_basic(id, x, y);
+}
+
+int shared_stick_basic(int id, int a, int v)
+/* Pulse, activate and return the active id (if changed)*/
+{
+    int jd = 0;
+    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
+        jd = gui_stick(id, v, 0);
+    else if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
+        jd = gui_stick(id, 0, v);
+    if (jd)
+        gui_pulse(jd, 1.2f);
+    return jd;
+}
+
+void shared_stick(int id, int a, int v)
+{
+    shared_stick_basic(id, a, v);
+}
+
+int shared_click(int b, int d)
+{
+    if (b < 0 && d == 1)
+       return st_buttn(config_get_d(CONFIG_JOYSTICK_BUTTON_A), 1);
+    else 
+       return 1;
+}
+
diff --git a/ball/st_shared.h b/ball/st_shared.h
new file mode 100644 (file)
index 0000000..f45ca66
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef ST_SHARED_H
+#define ST_SHARED_H
+
+void shared_leave(int id);
+void shared_paint(int id, float st);
+void shared_timer(int id, float dt);
+int shared_point_basic(int id, int x, int y);
+void shared_point(int id, int x, int y, int dx, int dy);
+int shared_stick_basic(int id, int a, int v);
+void shared_stick(int id, int a, int v);
+int shared_click(int b, int d);
+
+
+#endif /* ST_SHARED_H */
index f6f865a..1333749 100644 (file)
@@ -19,6 +19,7 @@
 #include "level.h"
 #include "audio.h"
 #include "config.h"
+#include "st_shared.h"
 
 #include "st_set.h"
 #include "st_over.h"
@@ -245,11 +246,6 @@ static int start_enter(void)
     return id;
 }
 
-static void start_leave(int id)
-{
-    gui_delete(id);
-}
-
 static void start_paint(int id, float st)
 {
     game_draw(0, st);
@@ -257,13 +253,6 @@ static void start_paint(int id, float st)
     gui_paint(id);
 }
 
-static void start_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
-
 static void start_point(int id, int x, int y, int dx, int dy)
 {
     start_over(gui_point(id, x, y));
@@ -277,13 +266,6 @@ static void start_stick(int id, int a, int v)
     start_over(gui_stick(id, x, y));
 }
 
-static int start_click(int b, int d)
-{
-    if (d && b < 0)
-        return start_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int start_keybd(int c, int d)
 {
     if (d && c == SDLK_c && config_get_d(CONFIG_CHEAT))
@@ -323,12 +305,12 @@ static int start_buttn(int b, int d)
 
 struct state st_start = {
     start_enter,
-    start_leave,
+    shared_leave,
     start_paint,
-    start_timer,
+    shared_timer,
     start_point,
     start_stick,
-    start_click,
+    shared_click,
     start_keybd,
     start_buttn,
     1, 0
index bb78b74..25a726e 100644 (file)
@@ -19,6 +19,7 @@
 #include "game.h"
 #include "audio.h"
 #include "config.h"
+#include "st_shared.h"
 
 #include "st_title.h"
 #include "st_demo.h"
@@ -109,12 +110,6 @@ static void title_leave(int id)
     gui_delete(id);
 }
 
-static void title_paint(int id, float st)
-{
-    game_draw(0, st);
-    gui_paint(id);
-}
-
 static void title_timer(int id, float dt)
 {
     static const char *demo = NULL;
@@ -186,26 +181,6 @@ static void title_timer(int id, float dt)
     game_step_fade(dt);
 }
 
-static void title_point(int id, int x, int y, int dx, int dy)
-{
-    gui_pulse(gui_point(id, x, y), 1.2f);
-}
-
-static void title_stick(int id, int a, int v)
-{
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_X, a))
-        gui_pulse(gui_stick(id, v, 0), 1.2f);
-    if (config_tst_d(CONFIG_JOYSTICK_AXIS_Y, a))
-        gui_pulse(gui_stick(id, 0, v), 1.2f);
-}
-
-static int title_click(int b, int d)
-{
-    if (d && b < 0)
-        return title_action(gui_token(gui_click()));
-    return 1;
-}
-
 static int title_keybd(int c, int d)
 {
     if (d && c == SDLK_c && ALLOW_CHEAT)
@@ -295,11 +270,6 @@ static int help_enter(void)
     return id;
 }
 
-static void help_leave(int id)
-{
-    gui_delete(id);
-}
-
 static void help_paint(int id, float st)
 {
     game_draw(0, st);
@@ -307,12 +277,6 @@ static void help_paint(int id, float st)
     gui_paint(id);
 }
 
-static void help_timer(int id, float dt)
-{
-    gui_timer(id, dt);
-    audio_timer(dt);
-}
-
 static int help_click(int b, int d)
 {
     return d ? goto_state(&st_title) : 1;
@@ -333,11 +297,11 @@ static int help_buttn(int b, int d)
 struct state st_title = {
     title_enter,
     title_leave,
-    title_paint,
+    shared_paint,
     title_timer,
-    title_point,
-    title_stick,
-    title_click,
+    shared_point,
+    shared_stick,
+    shared_click,
     title_keybd,
     title_buttn,
     1, 0
@@ -345,9 +309,9 @@ struct state st_title = {
 
 struct state st_help = {
     help_enter,
-    help_leave,
+    shared_leave,
     help_paint,
-    help_timer,
+    shared_timer,
     NULL,
     NULL,
     help_click,