+Release Version 3.0.1 [?? ??? ????]
+-----------------------------------
+
Release Version 3.0.0 [05 AUG 2003]
-------------------------------------------
+-----------------------------------
- final version bumped to 3.0.0 due to the massive changes
- graphics and sounds now completely and dynamically customizable
- custom elements now have lots of configurable properties
SRC_DIR = src
MAKE_CMD = $(MAKE) -C $(SRC_DIR)
-# DEFAULT_TARGET = x11
-DEFAULT_TARGET = sdl
+DEFAULT_TARGET = x11
+# DEFAULT_TARGET = sdl
all:
@$(MAKE_CMD) TARGET=$(DEFAULT_TARGET)
CONFIG = $(CONFIG_GAME_DIR) $(CONFIG_SCORE_ENTRIES) $(JOYSTICK)
-# DEBUG = -DDEBUG -g
+DEBUG = -DDEBUG -g
# PROFILING = $(PROFILING_FLAGS)
# OPTIONS = $(DEBUG) -Wall # only for debugging purposes
-#define COMPILE_DATE_STRING "[2003-08-05 01:57]"
+#define COMPILE_DATE_STRING "[2003-08-07 01:24]"
{
ED_SETTINGS_XPOS(0) + 340, ED_COUNTER_YPOS(6) - MINI_TILEY,
GADGET_ID_GRAVITY, GADGET_ID_DOUBLE_SPEED,
- &level.gravity,
+ &level.initial_gravity,
" ", "gravity", "set level gravity"
},
{
level->time_timegate = 10;
level->amoeba_content = EL_DIAMOND;
level->double_speed = FALSE;
- level->gravity = FALSE;
+ level->initial_gravity = FALSE;
level->em_slippery_gems = FALSE;
level->use_custom_template = FALSE;
level->time_wheel = getFile8Bit(file);
level->amoeba_content = checkLevelElement(getFile8Bit(file));
level->double_speed = (getFile8Bit(file) == 1 ? TRUE : FALSE);
- level->gravity = (getFile8Bit(file) == 1 ? TRUE : FALSE);
+ level->initial_gravity = (getFile8Bit(file) == 1 ? TRUE : FALSE);
level->encoding_16bit_field = (getFile8Bit(file) == 1 ? TRUE : FALSE);
level->em_slippery_gems = (getFile8Bit(file) == 1 ? TRUE : FALSE);
putFile8Bit(file, (level->encoding_16bit_amoeba ? EL_EMPTY :
level->amoeba_content));
putFile8Bit(file, (level->double_speed ? 1 : 0));
- putFile8Bit(file, (level->gravity ? 1 : 0));
+ putFile8Bit(file, (level->initial_gravity ? 1 : 0));
putFile8Bit(file, (level->encoding_16bit_field ? 1 : 0));
putFile8Bit(file, (level->em_slippery_gems ? 1 : 0));
printf("\n");
printf("Amoeba Speed: %d\n", level->amoeba_speed);
printf("\n");
- printf("Gravity: %s\n", (level->gravity ? "yes" : "no"));
+ printf("Gravity: %s\n", (level->initial_gravity ?"yes":"no"));
printf("Double Speed Movement: %s\n", (level->double_speed ? "yes" : "no"));
printf("EM style slippery gems: %s\n", (level->em_slippery_gems ? "yes" : "no"));
game.switchgate_pos = 0;
game.balloon_dir = MV_NO_MOVING;
game.explosions_delayed = TRUE;
+ game.current_gravity = level.initial_gravity;
for (i=0; i<4; i++)
{
static void CheckGravityMovement(struct PlayerInfo *player)
{
- if (level.gravity && !player->programmed_action)
+ if (game.current_gravity && !player->programmed_action)
{
int move_dir_vertical = player->action & (MV_UP | MV_DOWN);
int move_dir_horizontal = player->action & (MV_LEFT | MV_RIGHT);
element == EL_SP_GRAVITY_PORT_RIGHT ||
element == EL_SP_GRAVITY_PORT_UP ||
element == EL_SP_GRAVITY_PORT_DOWN)
- level.gravity = !level.gravity;
+ game.current_gravity = !game.current_gravity;
/* automatically move to the next field with double speed */
player->programmed_action = move_direction;
#define PROGRAM_VERSION_MAJOR 3
#define PROGRAM_VERSION_MINOR 0
-#define PROGRAM_VERSION_PATCH 0
+#define PROGRAM_VERSION_PATCH 1
#define PROGRAM_VERSION_RELEASE 0
-#define PROGRAM_VERSION_STRING "3.0.0"
+#define PROGRAM_VERSION_STRING "3.0.1"
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
int time_light;
int time_timegate;
boolean double_speed;
- boolean gravity;
+ boolean initial_gravity;
boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */
short field[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
int switchgate_pos;
int balloon_dir;
boolean explosions_delayed;
+ boolean current_gravity;
};
struct GlobalInfo
if (player_is_moving && GfxElement[jx][jy] != EL_UNDEFINED)
{
#if 1
- if (CAN_BE_CRUMBLED(GfxElement[jx][jy]))
+ /* !!! insert DrawLevelFieldCrumbledSandDigging code here !!! */
+ if (player->is_digging && CAN_BE_CRUMBLED(GfxElement[jx][jy]))
DrawLevelFieldCrumbledSandDigging(jx, jy, move_dir, player->StepFrame);
#else
if (GfxElement[jx][jy] == EL_SAND)
DrawLevelFieldCrumbledSandDigging(jx, jy, move_dir, player->StepFrame);
#endif
- else
+ else /* player->is_collecting */
{
int old_element = GfxElement[jx][jy];
int old_graphic = el_act_dir2img(old_element, action, move_dir);
int sx = SCREENX(x), sy = SCREENY(y);
DrawGraphic(sx, sy, graphic1, frame1);
- DrawLevelFieldCrumbledSandExt(x, y, graphic2, frame2);
+
+ if (graphic1 != IMG_EMPTY_SPACE)
+ DrawLevelFieldCrumbledSandExt(x, y, graphic2, frame2);
}
void DrawLevelFieldCrumbledSandNeighbours(int x, int y)