X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FMainForm.c;h=5c3b85fda28de4470669981ae381b6fe7396c8c3;hb=0f5b7f63f2d3d75ba646795a3c1ea9fc4cee4845;hp=5105a789610e652dad04a8c00ff1cc77d324f390;hpb=fe656a41b406b06d9dc5b93d01191d52b1da3b4d;p=rocksndiamonds.git diff --git a/src/game_sp/MainForm.c b/src/game_sp/MainForm.c index 5105a789..5c3b85fd 100644 --- a/src/game_sp/MainForm.c +++ b/src/game_sp/MainForm.c @@ -7,6 +7,10 @@ #if 1 static void DrawFrame(int Delta); +static void ReStretch(float NewStretch); +static void picPane_Paint(); +static void picViewPort_Resize(); +static void menBorder_Click(); #else @@ -1004,7 +1008,8 @@ void DisplayLevel() int X, Y; #if 1 - printf("::: DisplayLevel (%d, %d, %d)\n", Loaded, LevelLoaded, bPlaying); + printf("::: MainForm.c: DisplayLevel(): %d, %d, %d\n", + Loaded, LevelLoaded, bPlaying); #endif if (! Loaded) @@ -1027,17 +1032,15 @@ void DisplayLevel() if (bPlaying) { #if 1 - printf("::: DisplayLevel [%ld, %ld, %ld, %ld]...\n", - DisplayMinY, DisplayMaxY, DisplayMinX, DisplayMaxX); + printf("::: MainForm.c: DisplayLevel(): [%ld, %ld, %ld, %ld] [%d, %d]...\n", + DisplayMinX, DisplayMinY, DisplayMaxX, DisplayMaxY, + FieldWidth, FieldHeight); #endif for (Y = DisplayMinY; Y <= DisplayMaxY; Y++) { for (X = DisplayMinX; X <= DisplayMaxX; X++) { -#if 0 - printf("::: DrawFieldNoAnimated(%d, %d)\n", X, Y); -#endif DrawFieldNoAnimated(X, Y); } } @@ -1046,9 +1049,6 @@ void DisplayLevel() { for (X = DisplayMinX; X <= DisplayMaxX; X++) { -#if 0 - printf("::: DrawFieldAnimated(%d, %d)\n", X, Y); -#endif DrawFieldAnimated(X, Y); } } @@ -1060,9 +1060,6 @@ void DisplayLevel() { for (X = DisplayMinX; X <= DisplayMaxX; X++) { -#if 0 - printf("::: DrawField(%d, %d)\n", X, Y); -#endif DrawField(X, Y); } } @@ -1340,6 +1337,7 @@ void Form_Load() EditFlag = False; EditMode = edMove; // FMark = New MarkerObject; // (handle this later, if needed) + InitGlobals(); #if 0 @@ -1371,15 +1369,14 @@ void Form_Load() PauseMode = 0; // BaseWidth = 16 -#if 0 menBorder_Click(); -#endif Loaded = True; + ReStretch(Stretch); + #if 0 - ReStretch(Stretch); LoadKeyIndicators(); Show(); @@ -1755,6 +1752,8 @@ static void menAutoScroll_Click() } } +#endif + static void menBorder_Click() { if (menBorder.Checked) @@ -1766,6 +1765,7 @@ static void menBorder_Click() DisplayMinY = 1; DisplayMaxY = FieldHeight - 2; DisplayHeight = FieldHeight; + if (Loaded && LevelLoaded) DrawFrame(1); @@ -1779,6 +1779,7 @@ static void menBorder_Click() DisplayMinY = 0; DisplayMaxY = FieldHeight - 1; DisplayHeight = FieldHeight + 2; + if (Loaded && LevelLoaded) RestoreFrame(); } @@ -1787,15 +1788,9 @@ static void menBorder_Click() // DisplayLevel True } -#endif - void SetDisplayRegion() { -#if 1 - if (0) -#else if (! menBorder.Checked) -#endif { DisplayMinX = 1; DisplayMaxX = FieldWidth - 2; @@ -2450,27 +2445,34 @@ void menPlay_Click() #endif LastFrame = 0; + #if 0 LastTick = T.TickNow(); #endif #if 0 - fpsTim.Enabled = True; - #endif // DimPrimary 100 bPlaying = True; #if 0 - UpdateDeltaT(); +#endif +#if 1 + printf("::: MainForm.c: menPlay_Click(): subFetchAndInitLevelB(): ...\n"); #endif subFetchAndInitLevelB(); +#if 1 + printf("::: MainForm.c: menPlay_Click(): subFetchAndInitLevelB(): done\n"); +#endif + + ReStretch(Stretch); + // Trace "MainForm", "CountDown 1" CountDown(2, (0 == DemoFlag)); // Trace "MainForm", "Call GoPlay" @@ -2942,6 +2944,8 @@ static void picPane_MouseUp(int Button, int Shift, float X, float Y) } } +#endif + static void picPane_Paint() { boolean Oldflag; @@ -2954,31 +2958,48 @@ static void picPane_Paint() static void ReStretch(float NewStretch) { +#if 1 + long BW2, LW, LH; +#else long BW2, LW, LH, i; +#endif + +#if 1 + printf("::: MainForm.c: ReStretch(): %d, %d\n", Loaded, LevelLoaded); +#endif if (! Loaded) { #if 1 - printf("::: NewStretch == %d\n", NewStretch); + printf("::: NewStretch == %f\n", NewStretch); #endif Stretch = NewStretch; return; } +#if 0 MousePointer = 11; SET_TO_NOTHING(&Stage, sizeof(Stage)); SET_TO_NOTHING(&StretchedSprites, sizeof(StretchedSprites)); menStretch(Stretch / 0.25).Checked = False; +#endif + Stretch = NewStretch; + +#if 0 menStretch(Stretch / 0.25).Checked = True; // StretchWidth = BaseWidth ' * NewStretch // StretchWidth2 = StretchWidth \ 2 // TwoPixels = 2 '* Stretch // StretchLoad Sprites, imgMpx.Picture, 16, 16 +#endif + BW2 = StretchWidth / 2; LW = (FieldWidth + 2) * BaseWidth; // StretchWidth LH = (FieldHeight + 2) * BaseWidth; // StretchWidth + +#if 0 // i = bmpStage.CreateAtSize(LW, LH) // Stage = New DDScrollBuffer; // (handle this later, if needed) i = Stage.CreateAtSize(LW, LH, picPane.hWnd); @@ -2992,38 +3013,66 @@ static void ReStretch(float NewStretch) } else +#endif { StretchedSprites.DestXOff = 1 * BaseWidth; // StretchWidth StretchedSprites.DestYOff = 1 * BaseWidth; // StretchWidth Stage.DestXOff = 1 * StretchWidth; Stage.DestYOff = 1 * StretchWidth; StretchedSprites.DestinationSurface = Stage.Surface; - Stage.Cls; + +#if 0 + Stage.Cls(); +#endif + if (Loaded && LevelLoaded) { +#if 1 + printf("::: MainForm.c: ReStretch(): ...\n"); +#endif + SetDisplayRegion(); picViewPort_Resize(); DisplayLevel(); } subCalculateScreenScrollPos(); + +#if 1 + printf("::: MainForm.c: ReStretch(): %d, %d\n", ScreenScrollXPos, ScreenScrollYPos); +#endif + ScrollTo(ScreenScrollXPos, ScreenScrollYPos); + Stage.Blt(); + picPane_Paint(); } +#if 0 MousePointer = 0; +#endif } static void SetScrollEdges() { - ScrollMinX = (DisplayMinX - 0.5) * Stretch * BaseWidth; - ScrollMinY = (DisplayMinY - 0.5) * Stretch * BaseWidth; - ScrollMaxX = (DisplayMaxX + 1.5) * Stretch * BaseWidth - picPane.Width; - ScrollMaxY = (DisplayMaxY + 1.5) * Stretch * BaseWidth - picPane.Height; -} +#if 1 + printf("::: MainForm.c: SetScrollEdges() ... [%ld, %ld, %ld, %ld] [%f, %d] [%d, %d, %d, %d]\n", + DisplayMinX, DisplayMinY, DisplayMaxX, DisplayMaxY, + Stretch, BaseWidth, + ScrollMinX, ScrollMinY, ScrollMaxX, ScrollMaxY); +#endif + + ScrollMinX = (int)(DisplayMinX - 0.5) * Stretch * BaseWidth; + ScrollMinY = (int)(DisplayMinY - 0.5) * Stretch * BaseWidth; + ScrollMaxX = (int)(DisplayMaxX + 1.5) * Stretch * BaseWidth - picPane.Width; + ScrollMaxY = (int)(DisplayMaxY + 1.5) * Stretch * BaseWidth - picPane.Height; +#if 1 + printf("::: MainForm.c: SetScrollEdges() done [%d, %d, %d, %d]\n", + ScrollMinX, ScrollMinY, ScrollMaxX, ScrollMaxY); #endif +} void DrawField(int X, int Y) { @@ -3109,6 +3158,11 @@ void DrawFieldNoAnimated(int X, int Y) Tmp = DisPlayField[tsi]; } +#if 0 + printf("::: MainForm.c: DrawFieldNoAnimated(): %d, %d [%d]\n", + X, Y, Tmp); +#endif + StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, Tmp); break; } @@ -3142,8 +3196,11 @@ static void picViewPort_Paint() // Debug.Print "picViewPort_Paint()" } +#endif + static void picViewPort_Resize() { +#if 0 long bdX, bdY, PanelVisibility; long X, Y, dx, dY; SettingsObject s; @@ -3167,11 +3224,21 @@ static void picViewPort_Resize() Y = Max((picViewPort.ScaleHeight - dY) / 2, 0); picPane.Move X, Y, dx, dY; picFrame.Move X - bdX / 2, Y - bdY / 2, dx + bdX, dY + bdY; +#endif + SetScrollEdges(); + +#if 1 + printf("::: MainForm.c: picViewPort_Resize(): %d, %d\n", ScrollX, ScrollY); +#endif + ScrollTo(ScrollX, ScrollY); + // SizeTim.Interval = 1 } +#if 0 + // // Private Sub SizeTim_Timer() // Dim wdX&, wdY&