rnd-20100220-1-src
[rocksndiamonds.git] / src / game_sp / main.c
1
2 #include "main_sp.h"
3 #include "global.h"
4
5
6 struct GameInfo_SP game_sp;
7 struct LevelInfo_SP native_sp_level;
8
9
10 int GfxElementLast[SP_MAX_PLAYFIELD_WIDTH][SP_MAX_PLAYFIELD_HEIGHT];
11 int GfxGraphicLast[SP_MAX_PLAYFIELD_WIDTH][SP_MAX_PLAYFIELD_HEIGHT];
12 int GfxGraphic[SP_MAX_PLAYFIELD_WIDTH][SP_MAX_PLAYFIELD_HEIGHT];
13 int GfxFrame[SP_MAX_PLAYFIELD_WIDTH][SP_MAX_PLAYFIELD_HEIGHT];
14
15
16 void InitGameEngine_SP()
17 {
18   int x, y;
19
20   gfx.anim_random_frame = -1;   // (use simple, ad-hoc random numbers)
21
22   game_sp.LevelSolved = FALSE;
23   game_sp.GameOver = FALSE;
24
25   menBorder.Checked = setup.sp_show_border_elements;
26
27   for (x = 0; x < SP_MAX_PLAYFIELD_WIDTH; x++)
28   {
29     for (y = 0; y < SP_MAX_PLAYFIELD_HEIGHT; y++)
30     {
31       GfxElementLast[x][y] = -1;
32       GfxGraphicLast[x][y] = -1;
33       GfxGraphic[x][y] = -1;
34       GfxFrame[x][y] = 0;
35     }
36   }
37
38   InitScrollPlayfield();
39
40 #if 0
41   printf(":A: %d, %d [%d, %d]\n",
42          mScrollX, mScrollY, mScrollX_last, mScrollY_last);
43 #endif
44
45 #if 1
46   menPlay_Click();
47 #else
48   menPlayDemo_Click();
49 #endif
50
51 #if 0
52   printf(":B: %d, %d [%d, %d]\n",
53          mScrollX, mScrollY, mScrollX_last, mScrollY_last);
54 #endif
55 }
56
57 #if 0
58 void BlitScreenToBitmap_SP(Bitmap *target_bitmap)
59 {
60   DDScrollBuffer_Blt_Ext(target_bitmap);
61 }
62 #endif
63
64 void RedrawPlayfield_SP(boolean force_redraw)
65 {
66   // subDisplayLevel();
67
68   if (force_redraw)
69     RestorePlayfield();
70
71   UpdatePlayfield(force_redraw);
72
73   BackToFront_SP();
74 }
75
76 void GameActions_SP(byte action[MAX_PLAYERS], boolean warp_mode)
77 {
78   byte single_player_action = action[0];
79   int x, y;
80
81   subMainGameLoop_Main(single_player_action, warp_mode);
82
83   RedrawPlayfield_SP(FALSE);
84
85   for (x = DisplayMinX; x <= DisplayMaxX; x++)
86     for (y = DisplayMinY; y <= DisplayMaxY; y++)
87       GfxFrame[x][y]++;
88 }