/* sound definitions */
/* ------------------------------------------------------------------------- */
-#define SND_ACTION_UNKNOWN 0
-#define SND_ACTION_WAITING 1
-#define SND_ACTION_MOVING 2
-#define SND_ACTION_DIGGING 3
-#define SND_ACTION_COLLECTING 4
-#define SND_ACTION_PASSING 5
-#define SND_ACTION_IMPACT 6
-#define SND_ACTION_PUSHING 7
-#define SND_ACTION_ACTIVATING 8
-#define SND_ACTION_ACTIVE 9
-
-#define NUM_SND_ACTIONS 10
-
static struct
{
char *text;
} sound_action_properties[] =
{
/* insert _all_ loop sound actions here */
- { ".waiting", SND_ACTION_WAITING, TRUE },
- { ".moving", SND_ACTION_MOVING, TRUE }, /* continuos moving */
- { ".active", SND_ACTION_ACTIVE, TRUE },
- { ".growing", SND_ACTION_UNKNOWN, TRUE },
- { ".attacking", SND_ACTION_UNKNOWN, TRUE },
+ { ".waiting", ACTION_WAITING, TRUE },
+ { ".moving", ACTION_MOVING, TRUE }, /* continuos moving */
+ { ".active", ACTION_ACTIVE, TRUE },
+ { ".growing", ACTION_GROWING, TRUE },
+ { ".attacking", ACTION_ATTACKING, TRUE },
/* other (non-loop) sound actions are optional */
- { ".stepping", SND_ACTION_MOVING, FALSE }, /* discrete moving */
- { ".digging", SND_ACTION_DIGGING, FALSE },
- { ".collecting", SND_ACTION_COLLECTING, FALSE },
- { ".passing", SND_ACTION_PASSING, FALSE },
- { ".impact", SND_ACTION_IMPACT, FALSE },
- { ".pushing", SND_ACTION_PUSHING, FALSE },
- { ".activating", SND_ACTION_ACTIVATING, FALSE },
+ { ".stepping", ACTION_MOVING, FALSE }, /* discrete moving */
+ { ".digging", ACTION_DIGGING, FALSE },
+ { ".collecting", ACTION_COLLECTING, FALSE },
+ { ".passing", ACTION_PASSING, FALSE },
+ { ".impact", ACTION_IMPACT, FALSE },
+ { ".pushing", ACTION_PUSHING, FALSE },
+ { ".activating", ACTION_ACTIVATING, FALSE },
{ NULL, 0, 0 },
};
-static int element_action_sound[MAX_NUM_ELEMENTS][NUM_SND_ACTIONS];
+static int element_action_sound[MAX_NUM_ELEMENTS][NUM_ACTIONS];
static boolean is_loop_sound[NUM_SOUND_FILES];
#define IS_LOOP_SOUND(x) (is_loop_sound[x])
/* initialize sound effect for all elements to "no sound" */
for (i=0; i<MAX_NUM_ELEMENTS; i++)
- for (j=0; j<NUM_SND_ACTIONS; j++)
+ for (j=0; j<NUM_ACTIONS; j++)
element_action_sound[i][j] = -1;
for (i=0; i<NUM_SOUND_FILES; i++)
{
int len_effect_text = strlen(sound_files[i].token);
- sound_effect_properties[i] = SND_ACTION_UNKNOWN;
+ sound_effect_properties[i] = ACTION_OTHER;
is_loop_sound[i] = FALSE;
/* determine all loop sounds and identify certain sound classes */
/* TEST ONLY */
{
int element = EL_SAND;
- int sound_action = SND_ACTION_DIGGING;
+ int sound_action = ACTION_DIGGING;
int j = 0;
while (sound_action_properties[j].text)
ExplodeField[x][y] = EX_NO_EXPLOSION;
GfxFrame[x][y] = 0;
- GfxAction[x][y] = GFX_ACTION_DEFAULT;
+ GfxAction[x][y] = ACTION_DEFAULT;
}
}
Feld[newx][newy] = EL_BLOCKED;
if (direction == MV_DOWN && CAN_FALL(element))
- GfxAction[x][y] = GFX_ACTION_FALLING;
+ GfxAction[x][y] = ACTION_FALLING;
else
- GfxAction[x][y] = GFX_ACTION_MOVING;
+ GfxAction[x][y] = ACTION_MOVING;
}
void Moving2Blocked(int x, int y, int *goes_to_x, int *goes_to_y)
Feld[newx][newy] = EL_EMPTY;
MovPos[oldx][oldy] = MovDir[oldx][oldy] = MovDelay[oldx][oldy] = 0;
MovPos[newx][newy] = MovDir[newx][newy] = MovDelay[newx][newy] = 0;
- GfxAction[oldx][oldy] = GfxAction[newx][newy] = GFX_ACTION_DEFAULT;
+ GfxAction[oldx][oldy] = GfxAction[newx][newy] = ACTION_DEFAULT;
DrawLevelField(oldx, oldy);
DrawLevelField(newx, newy);
if (checkDrawLevelGraphicAnimation(x, y, el2img(element)))
DrawDynamite(x, y);
- PlaySoundLevelAction(x, y, SND_ACTION_ACTIVE);
+ PlaySoundLevelAction(x, y, ACTION_ACTIVE);
return;
}
/* play sound of object that hits the ground */
if (lastline || object_hit)
- PlaySoundLevelElementAction(x, y, element, SND_ACTION_IMPACT);
+ PlaySoundLevelElementAction(x, y, element, ACTION_IMPACT);
}
void TurnRound(int x, int y)
if (Stop[x][y])
return;
- GfxAction[x][y] = GFX_ACTION_DEFAULT;
+ GfxAction[x][y] = ACTION_DEFAULT;
if (CAN_FALL(element) && y < lev_fieldy - 1)
{
InitMovingField(x, y, belt_dir);
started_moving = TRUE;
- GfxAction[x][y] = GFX_ACTION_DEFAULT;
+ GfxAction[x][y] = ACTION_DEFAULT;
}
}
}
if (MovDelay[x][y]) /* element still has to wait some time */
{
- PlaySoundLevelAction(x, y, SND_ACTION_WAITING);
+ PlaySoundLevelAction(x, y, ACTION_WAITING);
return;
}
if (DONT_TOUCH(element))
TestIfBadThingTouchesHero(x, y);
- PlaySoundLevelAction(x, y, SND_ACTION_WAITING);
+ PlaySoundLevelAction(x, y, ACTION_WAITING);
return;
}
InitMovingField(x, y, MovDir[x][y]);
- PlaySoundLevelAction(x, y, SND_ACTION_MOVING);
+ PlaySoundLevelAction(x, y, ACTION_MOVING);
}
if (MovDir[x][y])
MovDelay[newx][newy] = 0;
GfxAction[newx][newy] = GfxAction[x][y]; /* keep action one frame */
- GfxAction[x][y] = GFX_ACTION_DEFAULT;
+ GfxAction[x][y] = ACTION_DEFAULT;
#if 0
if (!CAN_MOVE(element))
else /* still moving on */
{
#if 0
- if (GfxAction[x][y] == GFX_ACTION_DEFAULT)
+ if (GfxAction[x][y] == ACTION_DEFAULT)
{
printf("reset GfxAction...\n");
- GfxAction[x][y] = GFX_ACTION_MOVING;
+ GfxAction[x][y] = ACTION_MOVING;
}
#endif
DrawLevelElementAnimation(x, y, element);
if (!(FrameCounter % 2))
- PlaySoundLevelAction(x, y, SND_ACTION_ACTIVE);
+ PlaySoundLevelAction(x, y, ACTION_ACTIVE);
}
}
#endif
#endif
if (IS_BELT_ACTIVE(element))
- PlaySoundLevelAction(x, y, SND_ACTION_ACTIVE);
+ PlaySoundLevelAction(x, y, ACTION_ACTIVE);
if (game.magic_wall_active)
{
case EL_SP_BUGGY_BASE:
case EL_SP_BUGGY_BASE_ACTIVATING:
RemoveField(x, y);
- PlaySoundLevelElementAction(x, y, element, SND_ACTION_DIGGING);
+ PlaySoundLevelElementAction(x, y, element, ACTION_DIGGING);
break;
case EL_EMERALD:
DrawText(DX_EMERALDS, DY_EMERALDS,
int2str(local_player->gems_still_needed, 3),
FS_SMALL, FC_YELLOW);
- PlaySoundLevelElementAction(x, y, element, SND_ACTION_COLLECTING);
+ PlaySoundLevelElementAction(x, y, element, ACTION_COLLECTING);
break;
case EL_SPEED_PILL:
DrawText(DX_DYNAMITE, DY_DYNAMITE,
int2str(local_player->dynamite, 3),
FS_SMALL, FC_YELLOW);
- PlaySoundLevelElementAction(x, y, element, SND_ACTION_COLLECTING);
+ PlaySoundLevelElementAction(x, y, element, ACTION_COLLECTING);
break;
case EL_DYNABOMB_NR:
player->push_delay_value = (element == EL_SPRING ? 0 : 2 + RND(8));
DrawLevelField(x + dx, y + dy);
- PlaySoundLevelElementAction(x, y, element, SND_ACTION_PUSHING);
+ PlaySoundLevelElementAction(x, y, element, ACTION_PUSHING);
break;
case EL_GATE1:
player->programmed_action = move_direction;
DOUBLE_PLAYER_SPEED(player);
- PlaySoundLevelElementAction(x, y, element, SND_ACTION_PASSING);
+ PlaySoundLevelElementAction(x, y, element, ACTION_PASSING);
break;
case EL_SP_PORT1_LEFT:
{
RemoveField(x, y);
Feld[x+dx][y+dy] = element;
- PlaySoundLevelElementAction(x, y, element, SND_ACTION_PUSHING);
+ PlaySoundLevelElementAction(x, y, element, ACTION_PUSHING);
}
player->push_delay_value = (element == EL_BALLOON ? 0 : 2);