projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
changed function to scale SDL surface to be externally available
[rocksndiamonds.git]
/
src
/
game_bd
/
main_bd.c
diff --git
a/src/game_bd/main_bd.c
b/src/game_bd/main_bd.c
index 8f80b4f485e6d40bb4407ab930bc802df1cb1788..da296229a6652392b2ecd6f56ea05f05b49e304a 100644
(file)
--- a/
src/game_bd/main_bd.c
+++ b/
src/game_bd/main_bd.c
@@
-69,6
+69,11
@@
void setLevelInfoToDefaults_BD_Ext(int width, int height)
{
cave->w = width;
cave->h = height;
{
cave->w = width;
cave->h = height;
+
+ cave->x1 = 0;
+ cave->y1 = 0;
+ cave->x2 = cave->w - 1;
+ cave->y2 = cave->h - 1;
}
gd_flatten_cave(cave, 0);
}
gd_flatten_cave(cave, 0);
@@
-132,7
+137,7
@@
boolean LoadNativeLevel_BD(char *filename, int level_pos, boolean level_info_onl
// check if this cave has any replays
if (native_bd_level.cave->replays != NULL)
{
// check if this cave has any replays
if (native_bd_level.cave->replays != NULL)
{
-
G
List *item = native_bd_level.cave->replays;
+ List *item = native_bd_level.cave->replays;
// try to find replay that was recorded for this difficulty level
while (item != NULL &&
// try to find replay that was recorded for this difficulty level
while (item != NULL &&
@@
-149,6
+154,16
@@
boolean LoadNativeLevel_BD(char *filename, int level_pos, boolean level_info_onl
return TRUE;
}
return TRUE;
}
+boolean SaveNativeLevel_BD(char *filename)
+{
+ GdCave *cave = gd_cave_new_from_cave(native_bd_level.cave);
+
+ gd_caveset_clear();
+ gd_caveset = list_append(gd_caveset, cave);
+
+ return gd_caveset_save_to_file(filename);
+}
+
// ============================================================================
// game engine functions
// ============================================================================
// game engine functions
@@
-238,7
+253,7
@@
unsigned int InitEngineRandom_BD(int seed)
if (seed == NEW_RANDOMIZE)
{
// get randomly selected seed to render the cave
if (seed == NEW_RANDOMIZE)
{
// get randomly selected seed to render the cave
- seed = g_random_int_range(0, GD_CAVE_SEED_MAX);
+ seed = g
d
_random_int_range(0, GD_CAVE_SEED_MAX);
}
game_bd.random_seed = seed;
}
game_bd.random_seed = seed;
@@
-264,6
+279,10
@@
void InitGameEngine_BD(void)
game_bd.game = gd_game_new(native_bd_level.cave_nr, native_bd_level.level_nr);
game_bd.game = gd_game_new(native_bd_level.cave_nr, native_bd_level.level_nr);
+ game_bd.game->itercycle = 0;
+ game_bd.game->itermax = 8; // default; dynamically changed at runtime
+ game_bd.game->itermax_last = game_bd.game->itermax;
+
// default: start with completely covered playfield
int next_state = GAME_INT_START_UNCOVER + 1;
// default: start with completely covered playfield
int next_state = GAME_INT_START_UNCOVER + 1;
@@
-282,6
+301,8
@@
void InitGameEngine_BD(void)
if (setup.bd_skip_uncovering)
gd_scroll(game_bd.game, TRUE, TRUE);
if (setup.bd_skip_uncovering)
gd_scroll(game_bd.game, TRUE, TRUE);
+ ClearRectangle(gd_screen_bitmap, 0, 0, SXSIZE, SYSIZE);
+
RedrawPlayfield_BD(TRUE);
UpdateGameDoorValues_BD();
RedrawPlayfield_BD(TRUE);
UpdateGameDoorValues_BD();
@@
-375,10
+396,11
@@
void CoverScreen_BD(void)
void BlitScreenToBitmap_BD(Bitmap *target_bitmap)
{
void BlitScreenToBitmap_BD(Bitmap *target_bitmap)
{
+ GdCave *cave = native_bd_level.cave;
int xsize = SXSIZE;
int ysize = SYSIZE;
int xsize = SXSIZE;
int ysize = SYSIZE;
- int full_xsize =
native_bd_level.cave->w
* TILESIZE_VAR;
- int full_ysize =
native_bd_level.cave->h
* TILESIZE_VAR;
+ int full_xsize =
(cave->x2 - cave->x1 + 1)
* TILESIZE_VAR;
+ int full_ysize =
(cave->y2 - cave->y1 + 1)
* TILESIZE_VAR;
int sx = SX + (full_xsize < xsize ? (xsize - full_xsize) / 2 : 0);
int sy = SY + (full_ysize < ysize ? (ysize - full_ysize) / 2 : 0);
int sxsize = (full_xsize < xsize ? full_xsize : xsize);
int sx = SX + (full_xsize < xsize ? (xsize - full_xsize) / 2 : 0);
int sy = SY + (full_ysize < ysize ? (ysize - full_ysize) / 2 : 0);
int sxsize = (full_xsize < xsize ? full_xsize : xsize);