projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20050307-1-src
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index 31bc2f526da3b26d602cee4b88c07186ed93d26d..aa5d900115763a6c156a362dc86f5f6d24748df8 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-1062,11
+1062,12
@@
inline void DrawGameValue_Dynamite(int value)
DrawText(DX_DYNAMITE, DY_DYNAMITE, int2str(value, 3), FONT_TEXT_2);
}
DrawText(DX_DYNAMITE, DY_DYNAMITE, int2str(value, 3), FONT_TEXT_2);
}
-inline void DrawGameValue_Keys(int key[
4
])
+inline void DrawGameValue_Keys(int key[
MAX_NUM_KEYS
])
{
int i;
{
int i;
- for (i = 0; i < MAX_KEYS; i++)
+ /* currently only 4 of 8 possible keys are displayed */
+ for (i = 0; i < STD_NUM_KEYS; i++)
if (key[i])
DrawMiniGraphicExt(drawto, DX_KEYS + i * MINI_TILEX, DY_KEYS,
el2edimg(EL_KEY_1 + i));
if (key[i])
DrawMiniGraphicExt(drawto, DX_KEYS + i * MINI_TILEX, DY_KEYS,
el2edimg(EL_KEY_1 + i));
@@
-1112,12
+1113,14
@@
inline void DrawGameValue_Level(int value)
void DrawAllGameValues(int emeralds, int dynamite, int score, int time,
int key_bits)
{
void DrawAllGameValues(int emeralds, int dynamite, int score, int time,
int key_bits)
{
- int key[
4
];
+ int key[
MAX_NUM_KEYS
];
int i;
int i;
- for (i = 0; i < MAX_KEYS; i++)
+ for (i = 0; i < MAX_
NUM_
KEYS; i++)
key[i] = key_bits & (1 << i);
key[i] = key_bits & (1 << i);
+ DrawGameValue_Level(level_nr);
+
DrawGameValue_Emeralds(emeralds);
DrawGameValue_Dynamite(dynamite);
DrawGameValue_Score(score);
DrawGameValue_Emeralds(emeralds);
DrawGameValue_Dynamite(dynamite);
DrawGameValue_Score(score);
@@
-1584,7
+1587,7
@@
void InitGame()
player->lights_still_needed = 0;
player->friends_still_needed = 0;
player->lights_still_needed = 0;
player->friends_still_needed = 0;
- for (j = 0; j < MAX_KEYS; j++)
+ for (j = 0; j < MAX_
NUM_
KEYS; j++)
player->key[j] = FALSE;
player->dynabomb_count = 0;
player->key[j] = FALSE;
player->dynabomb_count = 0;
@@
-4168,6
+4171,10
@@
static void RedrawAllLightSwitchesAndInvisibleElements()
Feld[x][y] = getInvisibleActiveFromInvisibleElement(element);
DrawLevelField(x, y);
Feld[x][y] = getInvisibleActiveFromInvisibleElement(element);
DrawLevelField(x, y);
+
+ /* uncrumble neighbour fields, if needed */
+ if (element == EL_INVISIBLE_SAND)
+ DrawLevelFieldCrumbledSandNeighbours(x, y);
}
else if (element == EL_INVISIBLE_STEELWALL_ACTIVE ||
element == EL_INVISIBLE_WALL_ACTIVE ||
}
else if (element == EL_INVISIBLE_STEELWALL_ACTIVE ||
element == EL_INVISIBLE_WALL_ACTIVE ||
@@
-4177,6
+4184,10
@@
static void RedrawAllLightSwitchesAndInvisibleElements()
Feld[x][y] = getInvisibleFromInvisibleActiveElement(element);
DrawLevelField(x, y);
Feld[x][y] = getInvisibleFromInvisibleActiveElement(element);
DrawLevelField(x, y);
+
+ /* re-crumble neighbour fields, if needed */
+ if (element == EL_INVISIBLE_SAND)
+ DrawLevelFieldCrumbledSandNeighbours(x, y);
}
}
}
}
}
}
@@
-9694,7
+9705,7
@@
boolean MovePlayerOneStep(struct PlayerInfo *player,
/* check if DigField() has caused relocation of the player */
if (player->jx != jx || player->jy != jy)
/* check if DigField() has caused relocation of the player */
if (player->jx != jx || player->jy != jy)
- return MF_NO_ACTION;
+ return MF_NO_ACTION;
/* <-- !!! CHECK THIS [-> MF_ACTION ?] !!! */
StorePlayer[jx][jy] = 0;
player->last_jx = jx;
StorePlayer[jx][jy] = 0;
player->last_jx = jx;
@@
-11358,14
+11369,14
@@
int DigField(struct PlayerInfo *player,
return MF_NO_ACTION; /* player cannot walk here due to gravity */
#endif
return MF_NO_ACTION; /* player cannot walk here due to gravity */
#endif
- if (IS_GATE(element))
+ if (IS_
RND_
GATE(element))
{
{
- if (!player->key[
element - EL_GATE_1
])
+ if (!player->key[
RND_GATE_NR(element)
])
return MF_NO_ACTION;
}
return MF_NO_ACTION;
}
- else if (IS_GATE_GRAY(element))
+ else if (IS_
RND_
GATE_GRAY(element))
{
{
- if (!player->key[
element - EL_GATE_1_GRAY
])
+ if (!player->key[
RND_GATE_GRAY_NR(element)
])
return MF_NO_ACTION;
}
else if (element == EL_EXIT_OPEN ||
return MF_NO_ACTION;
}
else if (element == EL_EXIT_OPEN ||
@@
-11428,12
+11439,12
@@
int DigField(struct PlayerInfo *player,
if (IS_EM_GATE(element))
{
if (IS_EM_GATE(element))
{
- if (!player->key[
element - EL_EM_GATE_1
])
+ if (!player->key[
EM_GATE_NR(element)
])
return MF_NO_ACTION;
}
else if (IS_EM_GATE_GRAY(element))
{
return MF_NO_ACTION;
}
else if (IS_EM_GATE_GRAY(element))
{
- if (!player->key[
element - EL_EM_GATE_1_GRAY
])
+ if (!player->key[
EM_GATE_GRAY_NR(element)
])
return MF_NO_ACTION;
}
else if (IS_SP_PORT(element))
return MF_NO_ACTION;
}
else if (IS_SP_PORT(element))
@@
-11544,13
+11555,9
@@
int DigField(struct PlayerInfo *player,
{
player->dynabomb_xl = TRUE;
}
{
player->dynabomb_xl = TRUE;
}
- else if ((element >= EL_KEY_1 && element <= EL_KEY_4) ||
- (element >= EL_EM_KEY_1 && element <= EL_EM_KEY_4))
+ else if (IS_KEY(element))
{
{
- int key_nr = (element >= EL_KEY_1 && element <= EL_KEY_4 ?
- element - EL_KEY_1 : element - EL_EM_KEY_1);
-
- player->key[key_nr] = TRUE;
+ player->key[KEY_NR(element)] = TRUE;
DrawGameValue_Keys(player->key);
DrawGameValue_Keys(player->key);
@@
-12462,17
+12469,21
@@
void PlayLevelSound_EM(int x, int y, int element_em, int sample)
break;
case SAMPLE_bug:
break;
case SAMPLE_bug:
- PlayLevelSoundElementAction(x, y,
EL_BUG
, ACTION_MOVING);
+ PlayLevelSoundElementAction(x, y,
element
, ACTION_MOVING);
break;
case SAMPLE_tank:
break;
case SAMPLE_tank:
- PlayLevelSoundElementAction(x, y,
EL_SPACESHIP
, ACTION_MOVING);
+ PlayLevelSoundElementAction(x, y,
element
, ACTION_MOVING);
break;
break;
- case SAMPLE_android:
+ case SAMPLE_android
_clone
:
PlayLevelSoundElementAction(x, y, element, ACTION_DROPPING);
break;
PlayLevelSoundElementAction(x, y, element, ACTION_DROPPING);
break;
+ case SAMPLE_android_move:
+ PlayLevelSoundElementAction(x, y, element, ACTION_MOVING);
+ break;
+
case SAMPLE_spring:
PlayLevelSoundElementAction(x, y, element, ACTION_IMPACT);
break;
case SAMPLE_spring:
PlayLevelSoundElementAction(x, y, element, ACTION_IMPACT);
break;
@@
-12482,7
+12493,11
@@
void PlayLevelSound_EM(int x, int y, int element_em, int sample)
break;
case SAMPLE_eater:
break;
case SAMPLE_eater:
- PlayLevelSoundElementAction(x, y, EL_YAMYAM, ACTION_WAITING);
+ PlayLevelSoundElementAction(x, y, element, ACTION_WAITING);
+ break;
+
+ case SAMPLE_eater_eat:
+ PlayLevelSoundElementAction(x, y, element, ACTION_DIGGING);
break;
case SAMPLE_alien:
break;
case SAMPLE_alien:
@@
-12498,11
+12513,16
@@
void PlayLevelSound_EM(int x, int y, int element_em, int sample)
break;
case SAMPLE_squash:
break;
case SAMPLE_squash:
+ /* !!! CHECK THIS !!! */
+#if 1
+ PlayLevelSoundElementAction(x, y, element, ACTION_BREAKING);
+#else
PlayLevelSoundElementAction(x, y, element, ACTION_SMASHED_BY_ROCK);
PlayLevelSoundElementAction(x, y, element, ACTION_SMASHED_BY_ROCK);
+#endif
break;
case SAMPLE_wonderfall:
break;
case SAMPLE_wonderfall:
- PlayLevelSoundElementAction(x, y,
EL_MAGIC_WALL
, ACTION_FILLING);
+ PlayLevelSoundElementAction(x, y,
element
, ACTION_FILLING);
break;
case SAMPLE_drip:
break;
case SAMPLE_drip:
@@
-12518,7
+12538,7
@@
void PlayLevelSound_EM(int x, int y, int element_em, int sample)
break;
case SAMPLE_acid:
break;
case SAMPLE_acid:
- PlayLevelSound
(x, y, SND_ACID
_SPLASHING);
+ PlayLevelSound
ElementAction(x, y, element, ACTION
_SPLASHING);
break;
case SAMPLE_ball:
break;
case SAMPLE_ball:
@@
-12537,7
+12557,11
@@
void PlayLevelSound_EM(int x, int y, int element_em, int sample)
PlayLevelSoundElementAction(x, y, element, ACTION_PASSING);
break;
PlayLevelSoundElementAction(x, y, element, ACTION_PASSING);
break;
- case SAMPLE_exit:
+ case SAMPLE_exit_open:
+ PlayLevelSoundElementAction(x, y, element, ACTION_OPENING);
+ break;
+
+ case SAMPLE_exit_leave:
PlayLevelSoundElementAction(x, y, element, ACTION_PASSING);
break;
PlayLevelSoundElementAction(x, y, element, ACTION_PASSING);
break;
@@
-12554,21
+12578,21
@@
void PlayLevelSound_EM(int x, int y, int element_em, int sample)
break;
case SAMPLE_wheel:
break;
case SAMPLE_wheel:
- PlayLevelSound
(x, y, SND_ROBOT_WHEEL
_ACTIVE);
+ PlayLevelSound
ElementAction(x, y, element, ACTION
_ACTIVE);
break;
case SAMPLE_boom:
PlayLevelSoundElementAction(x, y, element, ACTION_EXPLODING);
break;
break;
case SAMPLE_boom:
PlayLevelSoundElementAction(x, y, element, ACTION_EXPLODING);
break;
- case SAMPLE_time:
- PlaySoundStereo(SND_GAME_RUNNING_OUT_OF_TIME, SOUND_MIDDLE);
- break;
-
case SAMPLE_die:
PlayLevelSoundElementAction(x, y, element, ACTION_DYING);
break;
case SAMPLE_die:
PlayLevelSoundElementAction(x, y, element, ACTION_DYING);
break;
+ case SAMPLE_time:
+ PlaySoundStereo(SND_GAME_RUNNING_OUT_OF_TIME, SOUND_MIDDLE);
+ break;
+
default:
PlayLevelSoundElementAction(x, y, element, ACTION_DEFAULT);
break;
default:
PlayLevelSoundElementAction(x, y, element, ACTION_DEFAULT);
break;
@@
-12644,6
+12668,14
@@
void RaiseScoreElement(int element)
case EL_KEY_2:
case EL_KEY_3:
case EL_KEY_4:
case EL_KEY_2:
case EL_KEY_3:
case EL_KEY_4:
+ case EL_EM_KEY_1:
+ case EL_EM_KEY_2:
+ case EL_EM_KEY_3:
+ case EL_EM_KEY_4:
+ case EL_EMC_KEY_5:
+ case EL_EMC_KEY_6:
+ case EL_EMC_KEY_7:
+ case EL_EMC_KEY_8:
RaiseScore(level.score[SC_KEY]);
break;
default:
RaiseScore(level.score[SC_KEY]);
break;
default: