share/state.o \
share/audio.o \
ball/hud.o \
+ ball/mode.o \
ball/game.o \
ball/level.o \
ball/levels.o \
#include <stdio.h>
#include "level.h"
+#include "mode.h"
/*---------------------------------------------------------------------------*/
void hud_paint(void)
{
int mode = curr_lg()->mode;
+
if (mode == MODE_CHALLENGE)
gui_paint(Lhud_id);
if (mode == MODE_PRACTICE || mode == MODE_SINGLE)
/* balls and score + select coin widget */
-#if 0
- if (mode == MODE_CHALLENGE)
- {
- if (gui_value(ball_id) != balls) gui_set_count(ball_id, balls);
- if (gui_value(scor_id) != score) gui_set_count(scor_id, score);
- c_id = coin_id;
- }
- else if (mode == MODE_NORMAL)
- c_id = coin_id;
- else
- c_id = coin2_id;
-#endif
-
switch (mode)
{
case MODE_CHALLENGE:
/*---------------------------------------------------------------------------*/
-const char *mode_to_str(int m, int l)
-{
- switch (m)
- {
- case MODE_CHALLENGE: return l ? _("Challenge Mode") : _("Challenge");
- case MODE_NORMAL: return l ? _("Normal Mode") : _("Normal");
- case MODE_PRACTICE: return l ? _("Practice Mode") : _("Practice");
- default: return l ? _("Unknown Mode") : _("Unknown");
- }
-}
-
-/*---------------------------------------------------------------------------*/
-
const char *state_to_str(int m)
{
switch (m)
#define LEVEL_H
#include "base_config.h"
-#define NSCORE 3
/*---------------------------------------------------------------------------*/
+#define NSCORE 3
+
struct score
{
char player[NSCORE + 1][MAXNAM];
/*---------------------------------------------------------------------------*/
-#define MODE_CHALLENGE 1
-#define MODE_NORMAL 2
-#define MODE_PRACTICE 3
-#define MODE_SINGLE 4
-
-const char *mode_to_str(int, int);
-
-/*---------------------------------------------------------------------------*/
-
#define GAME_NONE 0 /* No event (or aborted) */
#define GAME_TIME 1 /* Time's up */
#define GAME_GOAL 2 /* Goal reached */
--- /dev/null
+/*
+ * Copyright (C) 2007 Robert Kooima
+ *
+ * NEVERBALL is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License,
+ * or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ */
+
+#include "mode.h"
+#include "lang.h"
+
+/*---------------------------------------------------------------------------*/
+
+static int mode = MODE_NORMAL;
+
+/*---------------------------------------------------------------------------*/
+
+int curr_mode(void)
+{
+ return mode;
+}
+
+void mode_set(int new_mode)
+{
+ mode = new_mode;
+}
+
+const char *mode_to_str(int m, int l)
+{
+ switch (m)
+ {
+ case MODE_CHALLENGE: return l ? _("Challenge Mode") : _("Challenge");
+ case MODE_NORMAL: return l ? _("Normal Mode") : _("Normal");
+ case MODE_PRACTICE: return l ? _("Practice Mode") : _("Practice");
+ default: return l ? _("Unknown Mode") : _("Unknown");
+ }
+}
+
+/*---------------------------------------------------------------------------*/
--- /dev/null
+#ifndef MODE_H
+#define MODE_H
+
+/*---------------------------------------------------------------------------*/
+
+#define MODE_CHALLENGE 1
+#define MODE_NORMAL 2
+#define MODE_PRACTICE 3
+#define MODE_SINGLE 4
+
+void mode_set(int);
+int curr_mode(void);
+
+const char *mode_to_str(int, int);
+
+/*---------------------------------------------------------------------------*/
+
+#endif
else
{
level_stop(GAME_NONE, 0, curr_clock(), curr_coins());
+
return goto_end_level();
}
}
set_most_coins(&l->score.most_coins, -1);
- if (config_get_d(CONFIG_MODE) == MODE_PRACTICE)
+ if (curr_mode() == MODE_PRACTICE)
{
set_best_times(&l->score.best_times, -1, 0);
if (l->is_bonus)
static int start_action(int i)
{
- int mode = config_get_d(CONFIG_MODE);
+ int mode = curr_mode();
audio_play(AUD_MENU, 1.0f);
case START_BACK:
return goto_state(&st_set);
case START_NORMAL:
- config_set_d(CONFIG_MODE, MODE_NORMAL);
+ mode_set(MODE_NORMAL);
return goto_state(&st_start);
case START_PRACTICE:
- config_set_d(CONFIG_MODE, MODE_PRACTICE);
+ mode_set(MODE_PRACTICE);
return goto_state(&st_start);
}
/* On cheat, start challenge mode where you want */
if (config_get_d(CONFIG_CHEAT))
{
- config_set_d(CONFIG_MODE, MODE_CHALLENGE);
+ mode_set(MODE_CHALLENGE);
return goto_state(&st_start);
}
i = 0;
{
int w = config_get_d(CONFIG_WIDTH);
int h = config_get_d(CONFIG_HEIGHT);
- int m = config_get_d(CONFIG_MODE);
+ int m = curr_mode();
int i, j;
int id, jd, kd, ld;
/* Deactivate cheat */
+
if (m == MODE_CHALLENGE && !config_get_d(CONFIG_CHEAT))
{
+ mode_set(MODE_NORMAL);
m = MODE_NORMAL;
- config_set_d(CONFIG_MODE, m);
}
if ((id = gui_vstack(0)))
config_set_d(CONFIG_VIEW_DZ, DEFAULT_VIEW_DZ);
config_set_d(CONFIG_ROTATE_FAST, DEFAULT_ROTATE_FAST);
config_set_d(CONFIG_ROTATE_SLOW, DEFAULT_ROTATE_SLOW);
- config_set_d(CONFIG_MODE, DEFAULT_MODE);
config_set_d(CONFIG_CHEAT, DEFAULT_CHEAT);
config_set_s(CONFIG_PLAYER, DEFAULT_PLAYER);
config_set_s(CONFIG_BALL, DEFAULT_BALL);
config_set_d(CONFIG_ROTATE_FAST, atoi(val));
else if (strcmp(key, "rotate_slow") == 0)
config_set_d(CONFIG_ROTATE_SLOW, atoi(val));
- else if (strcmp(key, "mode") == 0)
- config_set_d(CONFIG_MODE, atoi(val));
else if (strcmp(key, "cheat") == 0 && ALLOW_CHEAT)
config_set_d(CONFIG_CHEAT, atoi(val));
option_d[CONFIG_ROTATE_FAST]);
fprintf(fp, "rotate_slow %d\n",
option_d[CONFIG_ROTATE_SLOW]);
- fprintf(fp, "mode %d\n",
- option_d[CONFIG_MODE]);
fprintf(fp, "key_forward %s\n",
SDL_GetKeyName(option_d[CONFIG_KEY_FORWARD]));
CONFIG_VIEW_DZ,
CONFIG_ROTATE_FAST,
CONFIG_ROTATE_SLOW,
- CONFIG_MODE,
CONFIG_CHEAT,
CONFIG_KEY_FORWARD,
CONFIG_KEY_BACKWARD,
#define DEFAULT_VIEW_DZ 200
#define DEFAULT_ROTATE_SLOW 100
#define DEFAULT_ROTATE_FAST 200
-#define DEFAULT_MODE 1
#define DEFAULT_CHEAT 0
#define DEFAULT_PLAYER ""
#define DEFAULT_BALL "png/ball.png"