X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FMainForm.c;h=731cd0fb00b72411086898528c6a2564af884a3a;hb=d45b35552f4ca1ada1266fb7e8b6968d878019a6;hp=6a8465700ed6b84e18694167e6dd9b8232965032;hpb=6aaf28a58767bcc79a55cb3afbc8828fd4a16a6b;p=rocksndiamonds.git diff --git a/src/game_sp/MainForm.c b/src/game_sp/MainForm.c index 6a846570..731cd0fb 100644 --- a/src/game_sp/MainForm.c +++ b/src/game_sp/MainForm.c @@ -10,6 +10,7 @@ static void DrawFrame(int Delta); static void ReStretch(float NewStretch); static void picPane_Paint(); static void picViewPort_Resize(); +static void menBorder_Click(); #else @@ -673,16 +674,26 @@ void DrawFieldNoAnimated(int X, int Y); // --- Option Explicit // --- Option Compare Text +#if 0 + long SetParent(long hWndChild, long hWndNewParent); long SetWindowLong(long hWnd, long nIndex, long dwNewLong); long GetWindowLong(long hWnd, long nIndex); +#if 0 long GetTempPath(long nBufferLength, char *lpBuffer); +#endif long GetWindowText(long hWnd, char *lpString, long cch); +#endif + +#if 0 + #define GWL_STYLE ((-16)) #define WS_CHILD (0x40000000) #define WS_POPUP (0x80000000) +#endif + // [UNCOMMENTED] Dim StretchWidth2& char *MpxBmp; @@ -1002,12 +1013,23 @@ static boolean InstanceStillRunning(char *TmpFile) #endif +void DrawFrameIfNeeded() +{ + DrawFrame(0); + + /* !!! CHECK THIS !!! */ +#if 1 + if (! menBorder.Checked) + DrawFrame(1); +#endif +} + void DisplayLevel() { int X, Y; -#if 1 - printf("::: MainForm.c: DisplayLevel: %d, %d, %d\n", +#if 0 + printf("::: MainForm.c: DisplayLevel(): %d, %d, %d\n", Loaded, LevelLoaded, bPlaying); #endif @@ -1017,22 +1039,28 @@ void DisplayLevel() if (! LevelLoaded) return; + ClearRectangle(backbuffer, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE); + ClearRectangle(screenBitmap, 0, 0, + MAX_BUF_XSIZE * TILEX, MAX_BUF_YSIZE * TILEY); + #if 1 SetDisplayRegion(); #endif DrawFrame(0); -#if 0 + /* !!! CHECK THIS !!! */ +#if 1 if (! menBorder.Checked) DrawFrame(1); #endif if (bPlaying) { -#if 1 - printf("::: MainForm.c: DisplayLevel: [%ld, %ld, %ld, %ld]...\n", - DisplayMinY, DisplayMaxY, DisplayMinX, DisplayMaxX); +#if 0 + printf("::: MainForm.c: DisplayLevel(): [%ld, %ld, %ld, %ld] [%d, %d]...\n", + DisplayMinX, DisplayMinY, DisplayMaxX, DisplayMaxY, + FieldWidth, FieldHeight); #endif for (Y = DisplayMinY; Y <= DisplayMaxY; Y++) @@ -1335,6 +1363,7 @@ void Form_Load() EditFlag = False; EditMode = edMove; // FMark = New MarkerObject; // (handle this later, if needed) + InitGlobals(); #if 0 @@ -1366,18 +1395,15 @@ void Form_Load() PauseMode = 0; // BaseWidth = 16 -#if 0 - menBorder_Click(); +#if 1 + if (0) + menBorder_Click(); #endif Loaded = True; -#if 1 - ReStretch(Stretch); -#endif - #if 0 LoadKeyIndicators(); @@ -1607,7 +1633,7 @@ static void Form_Resize() // NW = ScaleWidth - 2 * Space: If NW < 0 Then NW = 0 // NH = ScaleHeight - 3 * Space - cmbLevel.Height: If NH < 0 Then NH = 0 // picViewPort.Move Space, Space, NW, NH - Tmp = (ShowPanel != 0 ? ScaleHeight - Panel.Height : ScaleHeight - Panel.Height); + Tmp = (ShowPanel != 0 ? ScaleHeight - Panel.Height : ScaleHeight); if (Tmp < 0) Tmp = 0; @@ -1626,6 +1652,35 @@ static void Form_Resize() #endif +#if 1 + +static void DrawFrame(int Delta) +{ + int i, LX, tY, RX, BY; + + LX = -1 + Delta; + tY = -1 + Delta; + RX = FieldWidth - Delta; + BY = FieldHeight - Delta; + DrawImage(LX, tY, imgFrameCorner); + DrawImage(LX, BY, imgFrameCorner); + DrawImage(RX, tY, imgFrameCorner); + DrawImage(RX, BY, imgFrameCorner); + for (i = LX + 1; i <= RX - 1; i++) + { + DrawImage(i, tY, imgFrameHorizontal); + DrawImage(i, BY, imgFrameHorizontal); + } + + for (i = tY + 1; i <= BY - 1; i++) + { + DrawImage(LX, i, imgFrameVertical); + DrawImage(RX, i, imgFrameVertical); + } +} + +#else + static void DrawFrame(int Delta) { int i, LX, tY, RX, BY; @@ -1651,6 +1706,8 @@ static void DrawFrame(int Delta) } } +#endif + static void RestoreFrame() { int i, LX, tY, RX, BY; @@ -1755,6 +1812,8 @@ static void menAutoScroll_Click() } } +#endif + static void menBorder_Click() { if (menBorder.Checked) @@ -1766,6 +1825,7 @@ static void menBorder_Click() DisplayMinY = 1; DisplayMaxY = FieldHeight - 2; DisplayHeight = FieldHeight; + if (Loaded && LevelLoaded) DrawFrame(1); @@ -1779,6 +1839,7 @@ static void menBorder_Click() DisplayMinY = 0; DisplayMaxY = FieldHeight - 1; DisplayHeight = FieldHeight + 2; + if (Loaded && LevelLoaded) RestoreFrame(); } @@ -1787,15 +1848,9 @@ static void menBorder_Click() // DisplayLevel True } -#endif - void SetDisplayRegion() { -#if 1 - if (0) -#else if (! menBorder.Checked) -#endif { DisplayMinX = 1; DisplayMaxX = FieldWidth - 2; @@ -2027,7 +2082,7 @@ static void UpdateDeltaT() if (! bPlaying) return; - DeltaT = (DemoFlag != 0 ? DeltaTDemo : DeltaTDemo); + DeltaT = (DemoFlag != 0 ? DeltaTDemo : DeltaTPlay); if (DeltaT < 0) { Stage.Blt(); @@ -2092,7 +2147,7 @@ static void menOpen_Click() */ LFilt = LastOpenFilter; - cmDlg.FilterIndex = (0 < LFilt & LFilt < 5 ? LFilt : LFilt); + cmDlg.FilterIndex = (0 < LFilt & LFilt < 5 ? LFilt : 1); if (FileExists(CurPath)) cmDlg.InitDir = WithSlash(StripDir(CurPath)); @@ -2169,7 +2224,7 @@ static void menPause_Click() static StdPicture OldPic; static char *OldText = 0; - PauseMode = (PauseMode != 0 ? 0 : 0); + PauseMode = (PauseMode != 0 ? 0 : 1); if (PauseMode != 0) { if (IS_NOTHING(&OldPic, sizeof(OldPic))) @@ -2396,7 +2451,7 @@ static void menSoundFX_Click() { { menSoundFX.Checked = ! menSoundFX.Checked; - FXOnFlag = (menSoundFX.Checked ? -1 : -1); + FXOnFlag = (menSoundFX.Checked ? -1 : 0); } } @@ -2450,31 +2505,37 @@ 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 +#endif +#if 0 + printf("::: MainForm.c: menPlay_Click(): subFetchAndInitLevelB(): ...\n"); #endif subFetchAndInitLevelB(); -#if 1 - ReStretch(Stretch); +#if 0 + printf("::: MainForm.c: menPlay_Click(): subFetchAndInitLevelB(): done\n"); #endif + ReStretch(Stretch); + // Trace "MainForm", "CountDown 1" CountDown(2, (0 == DemoFlag)); // Trace "MainForm", "Call GoPlay" @@ -2511,7 +2572,9 @@ void menPlay_Click() // Trace "MainForm", "subFetchAndInitLevel returned" +#if 0 Stage.Blt(); +#endif #if 0 @@ -2522,23 +2585,60 @@ void menPlay_Click() // Trace "MainForm", "<-- menPlay_Click()" #endif - } +#if 1 + +// static void menPlayDemo_Click() +void menPlayDemo_Click() +{ + DemoFlag = 1; + RecordDemoFlag = 0; + #if 0 + lblStatus = "Demo Playback"; +#endif -static void menPlayDemo_Click() + menPlay_Click(); + +#if 1 + return; /* return after initialization phase */ +#endif + +#if 0 + if (LevelStatus != 1) + lblStatus = "Demo Failed"; +#endif + + DemoFlag = 0; +} + +#else + +// static void menPlayDemo_Click() +void menPlayDemo_Click() { DemoFlag = 1; RecordDemoFlag = 0; + +#if 0 lblStatus = "Demo Playback"; +#endif + menPlay_Click(); + +#if 0 if (LevelStatus != 1) lblStatus = "Demo Failed"; +#endif DemoFlag = 0; } +#endif + +#if 0 + static void menRec_Click() { Trace("MainForm", "--> menRec_Click()"); @@ -2719,7 +2819,7 @@ static void PanelTim_Timer() Tmp = Panel.Height; if (PanelSeq < Panel.Height && -1 < PanelSeq) { - PanelSeq = (ShowPanel != 0 ? PanelSeq + 2 : PanelSeq + 2); + PanelSeq = (ShowPanel != 0 ? PanelSeq + 2 : PanelSeq - 2); Tmp = ScaleHeight - Tmp + PanelSeq; Panel.top = Tmp; picViewPort.Height = Tmp; @@ -2727,8 +2827,8 @@ static void PanelTim_Timer() else { PanelTim.Enabled = False; - PanelSeq = (PanelSeq < 0 ? 0 : 0); - ShowPanel = (ShowPanel == 0 ? 1 : 1); + PanelSeq = (PanelSeq < 0 ? 0 : PanelSeq - ); + ShowPanel = (ShowPanel == 0 ? 1 : 0); menPanel.Checked = (ShowPanel != 0); } } @@ -2954,7 +3054,11 @@ static void picPane_Paint() Oldflag = NoDisplayFlag; NoDisplayFlag = False; + +#if 0 Stage.Blt(); +#endif + NoDisplayFlag = Oldflag; } @@ -2966,13 +3070,13 @@ static void ReStretch(float NewStretch) long BW2, LW, LH, i; #endif -#if 1 - printf("::: MainForm.c: ReStretch: %d, %d\n", Loaded, LevelLoaded); +#if 0 + printf("::: MainForm.c: ReStretch(): %d, %d\n", Loaded, LevelLoaded); #endif if (! Loaded) { -#if 1 +#if 0 printf("::: NewStretch == %f\n", NewStretch); #endif @@ -3029,14 +3133,27 @@ static void ReStretch(float NewStretch) if (Loaded && LevelLoaded) { +#if 0 + printf("::: MainForm.c: ReStretch(): ...\n"); +#endif + SetDisplayRegion(); picViewPort_Resize(); DisplayLevel(); } subCalculateScreenScrollPos(); + +#if 0 + printf("::: MainForm.c: ReStretch(): %d, %d\n", ScreenScrollXPos, ScreenScrollYPos); +#endif + ScrollTo(ScreenScrollXPos, ScreenScrollYPos); + +#if 0 Stage.Blt(); +#endif + picPane_Paint(); } @@ -3045,10 +3162,14 @@ static void ReStretch(float NewStretch) #endif } +#if 0 static void SetScrollEdges() +#else +void SetScrollEdges() +#endif { -#if 1 - printf("::: SetScrollEdges ... [%ld, %ld, %ld, %ld] [%f, %d] [%d, %d, %d, %d]\n", +#if 0 + 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); @@ -3056,16 +3177,11 @@ static void SetScrollEdges() ScrollMinX = (int)(DisplayMinX - 0.5) * Stretch * BaseWidth; ScrollMinY = (int)(DisplayMinY - 0.5) * Stretch * BaseWidth; -#if 1 - ScrollMaxX = (int)(DisplayMaxX + 1.5) * Stretch * BaseWidth; - ScrollMaxY = (int)(DisplayMaxY + 1.5) * Stretch * BaseWidth; -#else ScrollMaxX = (int)(DisplayMaxX + 1.5) * Stretch * BaseWidth - picPane.Width; ScrollMaxY = (int)(DisplayMaxY + 1.5) * Stretch * BaseWidth - picPane.Height; -#endif -#if 1 - printf("::: SetScrollEdges done [%d, %d, %d, %d]\n", +#if 0 + printf("::: MainForm.c: SetScrollEdges() done [%d, %d, %d, %d]\n", ScrollMinX, ScrollMinY, ScrollMaxX, ScrollMaxY); #endif } @@ -3076,7 +3192,7 @@ void DrawField(int X, int Y) tsi = GetSI(X, Y); Tmp = LowByte(PlayField16[tsi]); - if (40 < Tmp) + if (Tmp > 40) Tmp = 0; if (Tmp == fiRAM || Tmp == fiHardWare) @@ -3087,11 +3203,23 @@ void DrawField(int X, int Y) if (EditFlag) { - if (fiOrangeDisk < Tmp && Tmp < fiSnikSnak) + if (Tmp > fiOrangeDisk && Tmp < fiSnikSnak) Tmp = DisPlayField[tsi]; } +#if 1 + if (Tmp >= 0 && Tmp <= 40) + { + subCopyImageToScreen(tsi, fiGraphic[Tmp]); + +#if 1 + if (Tmp != fiSpace && Tmp != fiSnikSnak && Tmp != fiElectron) + GfxGraphic[X][Y] = fiGraphic[Tmp]; +#endif + } +#else StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, Tmp); +#endif } void DrawFieldAnimated(int X, int Y) @@ -3131,15 +3259,23 @@ void DrawFieldNoAnimated(int X, int Y) switch (Tmp) { case fiSnikSnak: +#if 1 + subCopyImageToScreen(tsi, aniSpace); +#else StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, fiSpace); +#endif break; case fiElectron: +#if 1 + subCopyImageToScreen(tsi, aniSpace); +#else StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, fiSpace); +#endif break; default: - if (40 < Tmp) + if (Tmp > 40) Tmp = 0; if (Tmp == fiRAM || Tmp == fiHardWare) @@ -3150,20 +3286,44 @@ void DrawFieldNoAnimated(int X, int Y) if (EditFlag) { - if (fiOrangeDisk < Tmp && Tmp < fiSnikSnak) + if (Tmp > fiOrangeDisk && Tmp < fiSnikSnak) Tmp = DisPlayField[tsi]; } +#if 1 + if (Tmp >= 0 && Tmp <= 40) + { + subCopyImageToScreen(tsi, fiGraphic[Tmp]); + +#if 1 + if (Tmp != fiSpace && Tmp != fiSnikSnak && Tmp != fiElectron) + GfxGraphic[X][Y] = fiGraphic[Tmp]; +#endif + } +#else StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, Tmp); +#endif + break; } } +#if 1 + +void DrawImage(int X, int Y, int graphic) +{ + StretchedSprites.BltImg(StretchWidth * X, StretchWidth * Y, graphic, 0); +} + +#else + void DrawSprite(int X, int Y, int SpritePos) { StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, SpritePos); } +#endif + #if 0 void InvalidateRect(long XMin, long YMin, long XMax, long YMax) @@ -3218,7 +3378,13 @@ static void picViewPort_Resize() #endif SetScrollEdges(); + +#if 0 + printf("::: MainForm.c: picViewPort_Resize(): %d, %d\n", ScrollX, ScrollY); +#endif + ScrollTo(ScrollX, ScrollY); + // SizeTim.Interval = 1 } @@ -3291,8 +3457,8 @@ void ShowKey(int KeyVar) Tmp = State[i]; if (Tmp ^ LastState[i]) { - Col = (i == 5 ? vbRed : vbRed); - shpKey(i).FillColor = (Tmp ? Col : Col); + Col = (i == 5 ? vbRed : vbGreen); + shpKey(i).FillColor = (Tmp ? Col : vbButtonFace); shpKey(i).Refresh; LastState[i] = Tmp; } @@ -3355,7 +3521,7 @@ static void GetSettings() } Flag = CBool(s.Read("SoundFX", True)); - FXOnFlag = (Flag ? -1 : -1); + FXOnFlag = (Flag ? -1 : 0); menSoundFX.Checked = Flag; SignatureDelay = CLng(s.Read("SignatureDelay", 3000)); AllowRedDiskCheat = CInt(s.Read("AllowRedDiskCheat", 1)); @@ -3383,7 +3549,7 @@ static void SaveSettings() int i; { - s.Save "LastPath", (ModifiedFlag ? OrigPath : OrigPath); + s.Save "LastPath", (ModifiedFlag ? OrigPath : CurPath); if (WindowState != vbMinimized) { s.Save "Width", Width;