projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20140307-2-src
[rocksndiamonds.git]
/
src
/
game.c
diff --git
a/src/game.c
b/src/game.c
index cc32a2f4180582396ddeab1ca46c87f7356e19eb..1a201dc120978a4f2f6d4fc32558b6b672731a10 100644
(file)
--- a/
src/game.c
+++ b/
src/game.c
@@
-1014,8
+1014,10
@@
static struct GamePanelControlInfo game_panel_controls[] =
#define SOUND_CTRL_ID_MUSIC 3
#define SOUND_CTRL_ID_LOOPS 4
#define SOUND_CTRL_ID_SIMPLE 5
#define SOUND_CTRL_ID_MUSIC 3
#define SOUND_CTRL_ID_LOOPS 4
#define SOUND_CTRL_ID_SIMPLE 5
+#define GAME_CTRL_ID_SAVE 6
+#define GAME_CTRL_ID_LOAD 7
-#define NUM_GAME_BUTTONS
6
+#define NUM_GAME_BUTTONS
8
/* forward declaration for internal use */
/* forward declaration for internal use */
@@
-1082,7
+1084,6
@@
static void PlayLevelSoundActionIfLoop(int, int, int);
static void StopLevelSoundActionIfLoop(int, int, int);
static void PlayLevelMusic();
static void StopLevelSoundActionIfLoop(int, int, int);
static void PlayLevelMusic();
-static void MapGameButtons();
static void HandleGameButtons(struct GadgetInfo *);
int AmoebeNachbarNr(int, int);
static void HandleGameButtons(struct GadgetInfo *);
int AmoebeNachbarNr(int, int);
@@
-4516,8
+4517,12
@@
void InitGame()
MapTapeButtons();
/* copy actual game door content to door double buffer for OpenDoor() */
MapTapeButtons();
/* copy actual game door content to door double buffer for OpenDoor() */
+#if 1
+ BlitBitmap(drawto, bitmap_db_door_1, DX, DY, DXSIZE, DYSIZE, 0, 0);
+#else
BlitBitmap(drawto, bitmap_db_door,
DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
BlitBitmap(drawto, bitmap_db_door,
DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
+#endif
OpenDoor(DOOR_OPEN_ALL);
OpenDoor(DOOR_OPEN_ALL);
@@
-16803,6
+16808,14
@@
static struct
{
IMG_GAME_BUTTON_GFX_SOUND_SIMPLE, &game.button.sound_simple,
SOUND_CTRL_ID_SIMPLE, "normal sounds on/off"
{
IMG_GAME_BUTTON_GFX_SOUND_SIMPLE, &game.button.sound_simple,
SOUND_CTRL_ID_SIMPLE, "normal sounds on/off"
+ },
+ {
+ IMG_GAME_BUTTON_GFX_SAVE, &game.button.save,
+ GAME_CTRL_ID_SAVE, "save game"
+ },
+ {
+ IMG_GAME_BUTTON_GFX_LOAD, &game.button.load,
+ GAME_CTRL_ID_LOAD, "load game"
}
};
}
};
@@
-16818,6
+16831,8
@@
void CreateGameButtons()
int button_type;
boolean checked;
unsigned int event_mask;
int button_type;
boolean checked;
unsigned int event_mask;
+ int base_x = (tape.show_game_buttons ? VX : DX);
+ int base_y = (tape.show_game_buttons ? VY : DY);
int gd_x = gfx->src_x;
int gd_y = gfx->src_y;
int gd_xp = gfx->src_x + gfx->pressed_xoffset;
int gd_x = gfx->src_x;
int gd_y = gfx->src_y;
int gd_xp = gfx->src_x + gfx->pressed_xoffset;
@@
-16828,9
+16843,18
@@
void CreateGameButtons()
int gd_yap = gfx->src_y + gfx->active_yoffset + gfx->pressed_yoffset;
int id = i;
int gd_yap = gfx->src_y + gfx->active_yoffset + gfx->pressed_yoffset;
int id = i;
+ if (gfx->bitmap == NULL)
+ {
+ game_gadget[id] = NULL;
+
+ continue;
+ }
+
if (id == GAME_CTRL_ID_STOP ||
id == GAME_CTRL_ID_PAUSE ||
if (id == GAME_CTRL_ID_STOP ||
id == GAME_CTRL_ID_PAUSE ||
- id == GAME_CTRL_ID_PLAY)
+ id == GAME_CTRL_ID_PLAY ||
+ id == GAME_CTRL_ID_SAVE ||
+ id == GAME_CTRL_ID_LOAD)
{
button_type = GD_TYPE_NORMAL_BUTTON;
checked = FALSE;
{
button_type = GD_TYPE_NORMAL_BUTTON;
checked = FALSE;
@@
-16848,8
+16872,8
@@
void CreateGameButtons()
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_INFO_TEXT, gamebutton_info[i].infotext,
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_INFO_TEXT, gamebutton_info[i].infotext,
- GDI_X,
DX
+ GDI_ACTIVE_POS(pos->x),
- GDI_Y,
DY
+ GDI_ACTIVE_POS(pos->y),
+ GDI_X,
base_x
+ GDI_ACTIVE_POS(pos->x),
+ GDI_Y,
base_y
+ GDI_ACTIVE_POS(pos->y),
GDI_WIDTH, gfx->width,
GDI_HEIGHT, gfx->height,
GDI_TYPE, button_type,
GDI_WIDTH, gfx->width,
GDI_HEIGHT, gfx->height,
GDI_TYPE, button_type,
@@
-16879,7
+16903,7
@@
void FreeGameButtons()
FreeGadget(game_gadget[i]);
}
FreeGadget(game_gadget[i]);
}
-
static
void MapGameButtons()
+void MapGameButtons()
{
int i;
{
int i;
@@
-16905,12
+16929,19
@@
void RedrawGameButtons()
static void HandleGameButtonsExt(int id)
{
static void HandleGameButtonsExt(int id)
{
- if (game_status != GAME_MODE_PLAYING)
+ boolean handle_game_buttons =
+ (game_status == GAME_MODE_PLAYING ||
+ (game_status == GAME_MODE_MAIN && tape.show_game_buttons));
+
+ if (!handle_game_buttons)
return;
switch (id)
{
case GAME_CTRL_ID_STOP:
return;
switch (id)
{
case GAME_CTRL_ID_STOP:
+ if (game_status == GAME_MODE_MAIN)
+ break;
+
if (tape.playing)
TapeStop();
else
if (tape.playing)
TapeStop();
else
@@
-16918,7
+16949,7
@@
static void HandleGameButtonsExt(int id)
break;
case GAME_CTRL_ID_PAUSE:
break;
case GAME_CTRL_ID_PAUSE:
- if (options.network)
+ if (options.network
&& game_status == GAME_MODE_PLAYING
)
{
#if defined(NETWORK_AVALIABLE)
if (tape.pausing)
{
#if defined(NETWORK_AVALIABLE)
if (tape.pausing)
@@
-16932,7
+16963,11
@@
static void HandleGameButtonsExt(int id)
break;
case GAME_CTRL_ID_PLAY:
break;
case GAME_CTRL_ID_PLAY:
- if (tape.pausing)
+ if (game_status == GAME_MODE_MAIN)
+ {
+ StartGameActions(options.network, setup.autorecord, level.random_seed);
+ }
+ else if (tape.pausing)
{
#if defined(NETWORK_AVALIABLE)
if (options.network)
{
#if defined(NETWORK_AVALIABLE)
if (options.network)
@@
-16985,6
+17020,14
@@
static void HandleGameButtonsExt(int id)
}
break;
}
break;
+ case GAME_CTRL_ID_SAVE:
+ TapeQuickSave();
+ break;
+
+ case GAME_CTRL_ID_LOAD:
+ TapeQuickLoad();
+ break;
+
default:
break;
}
default:
break;
}