X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_sp%2FMainForm.c;h=a2dfbbeb100c21ec95681f311343691101a0d6e3;hb=ed873d89bc59f4e641134f9019ce216234b9f38f;hp=f2fe86fd80244d2203b14e5fb455699a2302a2cb;hpb=5ba7f2d9a3f07f342afdf215a3307d5487cb6d43;p=rocksndiamonds.git diff --git a/src/game_sp/MainForm.c b/src/game_sp/MainForm.c index f2fe86fd..a2dfbbeb 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 @@ -661,11 +665,12 @@ void DrawFieldNoAnimated(int X, int Y); // --- End // --- End -static char *VB_Name = "MainForm"; -static boolean VB_GlobalNameSpace = False; -static boolean VB_Creatable = False; -static boolean VB_PredeclaredId = True; -static boolean VB_Exposed = False; +// static char *VB_Name = "MainForm"; +// static boolean VB_GlobalNameSpace = False; +// static boolean VB_Creatable = False; +// static boolean VB_PredeclaredId = True; +// static boolean VB_Exposed = False; + // --- Option Explicit // --- Option Compare Text @@ -699,6 +704,8 @@ TickCountObject T; const char *AppTitle = "MegaPlex"; +#if 0 + static char *GetSpeedDescriptionFPS(currency FrameDelayUS) { static char *GetSpeedDescriptionFPS; @@ -775,8 +782,6 @@ static int GetSpeedIndex(long DelayUS) return GetSpeedIndex; } -#if 0 - static long Get_LastOpenFilter() { static long LastOpenFilter; @@ -817,6 +822,9 @@ static void Let_LastSaveFilter(long NewVal) static void CountDown(long HalfSeconds, int bDisplayBar) { + +#if 0 + long i; int k; long dT, Delta; @@ -856,8 +864,13 @@ static void CountDown(long HalfSeconds, int bDisplayBar) shpProgress.Visible = False; // lblFrameCount = 0 + +#endif + } +#if 0 + static char *GetValidTempPath() { static char *GetValidTempPath; @@ -904,8 +917,6 @@ static char *GetValidTempPath() return GetValidTempPath; } -#if 0 - static char *GetMyTempFileName() { static char *GetMyTempFileName; @@ -992,29 +1003,52 @@ 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 0 + printf("::: MainForm.c: DisplayLevel(): %d, %d, %d\n", + Loaded, LevelLoaded, bPlaying); +#endif + if (! Loaded) return; if (! LevelLoaded) return; -#if 0 +#if 1 SetDisplayRegion(); #endif DrawFrame(0); -#if 0 + /* !!! CHECK THIS !!! */ +#if 1 if (! menBorder.Checked) DrawFrame(1); #endif if (bPlaying) { +#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++) { for (X = DisplayMinX; X <= DisplayMaxX; X++) @@ -1093,8 +1127,8 @@ static void cmbLevel_Click() long InfoCount; boolean Oldflag; int Msg; - long LastIndex; - boolean bBlock; + static long LastIndex = 0; + static boolean bBlock = False; if (bBlock) return; @@ -1300,7 +1334,7 @@ static void Form_KeyUp(int KeyCode, int Shift) #endif -static void Form_Load() +void Form_Load() { #if 0 @@ -1315,6 +1349,7 @@ static void Form_Load() EditFlag = False; EditMode = edMove; // FMark = New MarkerObject; // (handle this later, if needed) + InitGlobals(); #if 0 @@ -1341,14 +1376,25 @@ static void Form_Load() picViewPort.ScaleMode = vbPixels; +#endif + PauseMode = 0; // BaseWidth = 16 - menBorder_Click(); + +#if 1 + if (0) + menBorder_Click(); +#endif + Loaded = True; + ReStretch(Stretch); + +#if 0 + LoadKeyIndicators(); - Show; + Show(); FillFileList(CurPath); if (s.Read("ShowSplash", True)) @@ -1573,7 +1619,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; @@ -1692,7 +1738,7 @@ static void Form_Unload(int Cancel) static void fpsTim_Timer() { currency TickDiff; - int count5; + static int count5 = 0; count5 = count5 + 1; if (4 < count5) @@ -1721,6 +1767,8 @@ static void menAutoScroll_Click() } } +#endif + static void menBorder_Click() { if (menBorder.Checked) @@ -1732,6 +1780,7 @@ static void menBorder_Click() DisplayMinY = 1; DisplayMaxY = FieldHeight - 2; DisplayHeight = FieldHeight; + if (Loaded && LevelLoaded) DrawFrame(1); @@ -1745,6 +1794,7 @@ static void menBorder_Click() DisplayMinY = 0; DisplayMaxY = FieldHeight - 1; DisplayHeight = FieldHeight + 2; + if (Loaded && LevelLoaded) RestoreFrame(); } @@ -1763,6 +1813,7 @@ void SetDisplayRegion() DisplayMinY = 1; DisplayMaxY = FieldHeight - 2; DisplayHeight = FieldHeight; + if (LevelLoaded) DrawFrame(1); @@ -1775,11 +1826,14 @@ void SetDisplayRegion() DisplayMinY = 0; DisplayMaxY = FieldHeight - 1; DisplayHeight = FieldHeight + 2; + if (LevelLoaded) RestoreFrame(); } } +#if 0 + static void menCopy_Click() { FMark.Copy; @@ -1983,7 +2037,7 @@ static void UpdateDeltaT() if (! bPlaying) return; - DeltaT = (DemoFlag != 0 ? DeltaTDemo : DeltaTDemo); + DeltaT = (DemoFlag != 0 ? DeltaTDemo : DeltaTPlay); if (DeltaT < 0) { Stage.Blt(); @@ -2048,7 +2102,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)); @@ -2086,7 +2140,7 @@ static void menPanel_Click() void Let_PanelVisible(boolean NewVal) { - boolean HidePanel; + static boolean HidePanel = False; if (HidePanel != NewVal) return; @@ -2122,10 +2176,10 @@ static void menPaste_Click() static void menPause_Click() { - StdPicture OldPic; - char *OldText; + 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))) @@ -2148,7 +2202,7 @@ static void menPlayAll_Click() int FNum; char *LogPath, *OutStr, *ReRecPath, *SPPath; boolean bEqual; - boolean QuitFlag; + static boolean QuitFlag = False; if (cmdPlayAll.STRING_IS_LIKE(Caption, "Play) All Demos") { @@ -2352,7 +2406,7 @@ static void menSoundFX_Click() { { menSoundFX.Checked = ! menSoundFX.Checked; - FXOnFlag = (menSoundFX.Checked ? -1 : -1); + FXOnFlag = (menSoundFX.Checked ? -1 : 0); } } @@ -2361,7 +2415,6 @@ static void menSoundFX_Click() // static void menPlay_Click() void menPlay_Click() { - #if 0 boolean OldEditFlag; @@ -2407,28 +2460,40 @@ void menPlay_Click() #endif LastFrame = 0; - LastTick = T.TickNow; #if 0 + LastTick = T.TickNow(); +#endif +#if 0 fpsTim.Enabled = True; - #endif // DimPrimary 100 bPlaying = True; #if 0 - UpdateDeltaT(); +#endif +#if 0 + printf("::: MainForm.c: menPlay_Click(): subFetchAndInitLevelB(): ...\n"); #endif subFetchAndInitLevelB(); + +#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" + GoPlay(); + // Trace "MainForm", "GoPlay returned" #if 0 @@ -2454,9 +2519,14 @@ void menPlay_Click() bPlaying = False; // Trace "MainForm", "Call subFetchAndInitLevel" + subFetchAndInitLevel(); + // Trace "MainForm", "subFetchAndInitLevel returned" + +#if 0 Stage.Blt(); +#endif #if 0 @@ -2467,23 +2537,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 + + menPlay_Click(); -static void menPlayDemo_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()"); @@ -2664,7 +2771,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; @@ -2672,8 +2779,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); } } @@ -2891,39 +2998,66 @@ static void picPane_MouseUp(int Button, int Shift, float X, float Y) } } +#endif + static void picPane_Paint() { boolean Oldflag; Oldflag = NoDisplayFlag; NoDisplayFlag = False; + +#if 0 Stage.Blt(); +#endif + NoDisplayFlag = Oldflag; } static void ReStretch(float NewStretch) { +#if 1 + long BW2, LW, LH; +#else long BW2, LW, LH, i; +#endif + +#if 0 + printf("::: MainForm.c: ReStretch(): %d, %d\n", Loaded, LevelLoaded); +#endif if (! Loaded) { +#if 0 + 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); @@ -2937,38 +3071,68 @@ 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 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(); } +#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 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); +#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 0 + printf("::: MainForm.c: SetScrollEdges() done [%d, %d, %d, %d]\n", + ScrollMinX, ScrollMinY, ScrollMaxX, ScrollMaxY); #endif +} void DrawField(int X, int Y) { @@ -3054,6 +3218,12 @@ void DrawFieldNoAnimated(int X, int Y) Tmp = DisPlayField[tsi]; } +#if 0 + if (TEST_flag) + printf("::: MainForm.c: DrawFieldNoAnimated(): %d, %d [%d]\n", + X, Y, Tmp); +#endif + StretchedSprites.BltEx(StretchWidth * X, StretchWidth * Y, Tmp); break; } @@ -3087,8 +3257,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; @@ -3112,11 +3285,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 0 + 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& @@ -3157,7 +3340,7 @@ void ShowKey(int KeyVar) int i; boolean Tmp; long Col; - boolean LastState[5 + 1]; + static boolean LastState[5 + 1]; // For i = 1 To 5 // State(i) = False @@ -3184,8 +3367,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; } @@ -3248,7 +3431,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)); @@ -3276,7 +3459,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;