Emscripten port

This commit is contained in:
elasota
2021-03-29 21:41:11 -04:00
parent 9ba0e9f13d
commit 6fb45f480b
92 changed files with 15731 additions and 300 deletions

View File

@@ -136,7 +136,7 @@ void DoAbout (void)
do // Loop until user wants to exit
{
hit = aboutDialog->ExecuteModal(nullptr, AboutFilter);
hit = aboutDialog->ExecuteModal(nullptr, PL_FILTER_FUNC(AboutFilter));
}
while (hit != kOkayButton);
@@ -218,7 +218,7 @@ void DoLicenseReader(int resID)
do
{
hit = dialog->ExecuteModal(nullptr, LicenseReaderFilter);
hit = dialog->ExecuteModal(nullptr, PL_FILTER_FUNC(LicenseReaderFilter));
} while (hit != kOkayButton);
dialog->Destroy();
@@ -265,7 +265,7 @@ void DoAboutOpenSource(void)
do
{
hit = dialog->ExecuteModal(nullptr, AboutFrameworkFilter);
hit = dialog->ExecuteModal(nullptr, PL_FILTER_FUNC(AboutFrameworkFilter));
switch (hit)
{
@@ -359,7 +359,7 @@ void DoAboutFramework (void)
do
{
hit = dialog->ExecuteModal(nullptr, AboutFrameworkFilter);
hit = dialog->ExecuteModal(nullptr, PL_FILTER_FUNC(AboutFrameworkFilter));
if (hit == kAboutOpenSourceButton)
DoAboutOpenSource();
@@ -766,3 +766,6 @@ static int16_t LicenseReaderFilter(void *context, Dialog *dialog, const TimeTagg
return hit;
}
PL_IMPLEMENT_FILTER_FUNCTION(AboutFilter)
PL_IMPLEMENT_FILTER_FUNCTION(LicenseReaderFilter)
PL_IMPLEMENT_FILTER_FUNCTION(AboutFrameworkFilter)

View File

@@ -12,9 +12,10 @@
#include "MemoryManager.h"
#include "ResourceManager.h"
#include "PLBigEndian.h"
#include "PLDrivers.h"
#include "PLResources.h"
#include "PLBigEndian.h"
#include "PLSysCalls.h"
#include <assert.h>
@@ -375,6 +376,8 @@ void DecrementCursor (void)
void SpinCursor (short incrementIndex)
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
UInt32 dummyLong;
short i;

View File

@@ -21,6 +21,7 @@
#include "Utilities.h"
#include "WindowDef.h"
#include "WindowManager.h"
#include "PLSysCalls.h"
#define kBannerPageTopPICT 1993
@@ -179,11 +180,13 @@ void BringUpBanner (void)
(BitMap *)*GetGWorldPixMap(workSrcMap),
&wholePage, &wholePage, srcCopy);
if (demoGoing)
WaitForInputEvent(4);
else
WaitForInputEvent(15);
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
if (demoGoing)
WaitForInputEvent(4);
else
WaitForInputEvent(15);
}
// if (quickerTransitions)
// DissBitsChunky(&justRoomsRect);
@@ -237,8 +240,11 @@ void DisplayStarsRemaining(void)
if (doZooms)
wm->FlickerWindowIn(starsWindow, 32);
DelayTicks(60);
WaitForInputEvent(30);
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
DelayTicks(60);
WaitForInputEvent(30);
}
if (doZooms)
wm->FlickerWindowOut(starsWindow, 32);

View File

@@ -11,6 +11,7 @@
#include "PLNumberFormatting.h"
#include "PLPasStr.h"
#include "PLStandardColors.h"
#include "PLSysCalls.h"
#include "PLWidgets.h"
#include "QDStandardPalette.h"
#include "DialogUtils.h"
@@ -341,6 +342,8 @@ void ZoomOutAlertRect (short alertID)
void FlashDialogButton (Dialog *theDialog, short itemNumber)
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
ControlHandle itemHandle;
UInt32 dummyLong;

View File

@@ -3,7 +3,7 @@
// Environ.h
//----------------------------------------------------------------------------
//============================================================================
#pragma once
#include "PLQDraw.h"

View File

@@ -19,6 +19,7 @@
#include "Rect2i.h"
#include "WindowManager.h"
#include "PLSysCalls.h"
void HandleMouseEvent (const GpMouseInputEvent &, uint32_t);
void HandleKeyEvent (const KeyDownStates &keyStates, const GpKeyboardInputEvent &);
@@ -419,7 +420,10 @@ void HandleEvent (void)
SelectTool(kSelectTool);
}
itHappened = WaitForEvent(&theEvent, sleep);
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
itHappened = WaitForEvent(&theEvent, sleep);
}
if (itHappened)
{

View File

@@ -21,6 +21,7 @@
#include "RenderedFont.h"
#include "ResolveCachingColor.h"
#include "Utilities.h"
#include "PLSysCalls.h"
#define kNumCountDownFrames 16
@@ -489,6 +490,7 @@ void DoDiedGameOver (void)
}
}
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
Delay(1, nullptr);
}
while (TickCount() < nextLoop);

View File

@@ -14,8 +14,8 @@ void gpAppInit();
class GpAppInterfaceImpl final : public GpAppInterface
{
public:
void ApplicationInit() override;
int ApplicationMain() override;
void ApplicationInit() GP_ASYNCIFY_PARANOID_OVERRIDE;
int ApplicationMain() GP_ASYNCIFY_PARANOID_OVERRIDE;
void PL_IncrementTickCounter(uint32_t count) override;
void PL_Render(IGpDisplayDriver *displayDriver) override;
@@ -30,7 +30,11 @@ void GpAppInterfaceImpl::ApplicationInit()
int GpAppInterfaceImpl::ApplicationMain()
{
#if GP_ASYNCIFY_PARANOID
return gpAppMain();
#else
return PLSysCalls::MainExitWrapper(gpAppMain);
#endif
}
void GpAppInterfaceImpl::PL_IncrementTickCounter(uint32_t count)
@@ -69,3 +73,15 @@ GP_APP_DLL_EXPORT_API GpAppInterface *GpAppInterface_Get()
{
return &gs_application;
}
#if GP_ASYNCIFY_PARANOID
void GpAppInterface::ApplicationInit()
{
static_cast<GpAppInterfaceImpl*>(this)->ApplicationInit();
}
int GpAppInterface::ApplicationMain()
{
return static_cast<GpAppInterfaceImpl*>(this)->ApplicationMain();
}
#endif

69
GpApp/GpApp_Combined.cpp Normal file
View File

@@ -0,0 +1,69 @@
#include "About.cpp"
#include "AnimCursor.cpp"
#include "AppleEvents.cpp"
#include "Banner.cpp"
#include "ColorUtils.cpp"
#include "Coordinates.cpp"
#include "DialogUtils.cpp"
#include "DynamicMaps.cpp"
#include "Dynamics.cpp"
#include "Dynamics2.cpp"
#include "Dynamics3.cpp"
#include "Environ.cpp"
#include "Events.cpp"
#include "FileError.cpp"
#include "GameOver.cpp"
#include "GpAppInterface.cpp"
#include "Grease.cpp"
#include "HighScores.cpp"
#include "House.cpp"
#include "HouseInfo.cpp"
#include "HouseIO.cpp"
#include "HouseLegal.cpp"
#include "Input.cpp"
#include "Interactions.cpp"
#include "InterfaceInit.cpp"
#include "Link.cpp"
#include "Main.cpp"
#include "MainMenuUI.cpp"
#include "MainWindow.cpp"
#include "Map.cpp"
#include "Marquee.cpp"
#include "Menu.cpp"
#include "Modes.cpp"
#include "Music.cpp"
#include "ObjectAdd.cpp"
#include "ObjectDraw.cpp"
#include "ObjectDraw2.cpp"
#include "ObjectDrawAll.cpp"
#include "ObjectEdit.cpp"
#include "ObjectInfo.cpp"
#include "ObjectRects.cpp"
#include "Objects.cpp"
#include "Play.cpp"
#include "Player.cpp"
#include "Prefs.cpp"
#include "RectUtils.cpp"
#include "Render.cpp"
#include "Room.cpp"
#include "RoomGraphics.cpp"
#include "RoomInfo.cpp"
#include "RubberBands.cpp"
#include "SavedGames.cpp"
#include "Scoreboard.cpp"
#include "Scrap.cpp"
#include "SelectHouse.cpp"
#include "Settings.cpp"
#include "Sound.cpp"
#include "SoundSync_Cpp11.cpp"
#include "SourceExport.cpp"
#include "StringUtils.cpp"
#include "StructuresInit.cpp"
#include "StructuresInit2.cpp"
#include "Tools.cpp"
#include "Transit.cpp"
#include "Transitions.cpp"
#include "Triggers.cpp"
#include "Trip.cpp"
#include "Utilities.cpp"
#include "WindowUtils.cpp"

View File

@@ -96,8 +96,12 @@ void DoHighScores (void)
// DissBits(&workSrcRect);
InitCursor();
DelayTicks(60);
WaitForInputEvent(30);
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
DelayTicks(60);
WaitForInputEvent(30);
}
RedrawSplashScreen();
}
@@ -553,7 +557,7 @@ void GetHighScoreName (short place)
while (!leaving)
{
item = theDial->ExecuteModal(nullptr, NameFilter);
item = theDial->ExecuteModal(nullptr, PL_FILTER_FUNC(NameFilter));
if (item == kOkayButton)
{
@@ -666,7 +670,7 @@ void GetHighScoreBanner (void)
while (!leaving)
{
item = theDial->ExecuteModal(nullptr, BannerFilter);
item = theDial->ExecuteModal(nullptr, PL_FILTER_FUNC(BannerFilter));
if (item == kOkayButton)
{
@@ -789,3 +793,5 @@ Boolean ReadScoresFromDisk (void)
return (true);
}
PL_IMPLEMENT_FILTER_FUNCTION(NameFilter)
PL_IMPLEMENT_FILTER_FUNCTION(BannerFilter)

View File

@@ -52,24 +52,24 @@ extern Boolean houseOpen, noRoomAtAll;
extern Boolean twoPlayerGame, wardBitSet, phoneBitSet;
static void FBUI_DrawLabels(DrawSurface *surface, const Point &basePoint)
static void FBUI_House_DrawLabels(DrawSurface *surface, const Point &basePoint)
{
}
static void FBUI_DrawFileDetails(DrawSurface *surface, const Point &basePoint, const Rect &constraintRect, void *fileDetails)
static void FBUI_House_DrawFileDetails(DrawSurface *surface, const Point &basePoint, const Rect &constraintRect, void *fileDetails)
{
}
static void *FBUI_LoadFileDetails(PortabilityLayer::VirtualDirectory_t dirID, const PLPasStr &filename)
static void *FBUI_House_LoadFileDetails(PortabilityLayer::VirtualDirectory_t dirID, const PLPasStr &filename)
{
return nullptr;
}
static void FBUI_FreeFileDetails(void *fileDetails)
static void FBUI_House_FreeFileDetails(void *fileDetails)
{
}
static bool FBUI_FilterFile(PortabilityLayer::VirtualDirectory_t dirID, const PLPasStr &filename)
static bool FBUI_House_FilterFile(PortabilityLayer::VirtualDirectory_t dirID, const PLPasStr &filename)
{
PortabilityLayer::CompositeFile *cfile = PortabilityLayer::FileManager::GetInstance()->OpenCompositeFile(dirID, filename);
@@ -80,11 +80,11 @@ static PortabilityLayer::FileBrowserUI_DetailsCallbackAPI GetHouseDetailsAPI()
{
PortabilityLayer::FileBrowserUI_DetailsCallbackAPI api;
api.m_drawLabelsCallback = FBUI_DrawLabels;
api.m_drawFileDetailsCallback = FBUI_DrawFileDetails;
api.m_loadFileDetailsCallback = FBUI_LoadFileDetails;
api.m_freeFileDetailsCallback = FBUI_FreeFileDetails;
api.m_filterFileCallback = FBUI_FilterFile;
api.m_drawLabelsCallback = FBUI_House_DrawLabels;
api.m_drawFileDetailsCallback = FBUI_House_DrawFileDetails;
api.m_loadFileDetailsCallback = FBUI_House_LoadFileDetails;
api.m_freeFileDetailsCallback = FBUI_House_FreeFileDetails;
api.m_filterFileCallback = FBUI_House_FilterFile;
return api;
}
@@ -707,7 +707,7 @@ int16_t GoToFilter(void *context, Dialog *dial, const TimeTaggedVOSEvent *evt)
while (!leaving)
{
item = theDialog->ExecuteModal(nullptr, GoToFilter);
item = theDialog->ExecuteModal(nullptr, PL_FILTER_FUNC(GoToFilter));
if (item == kOkayButton)
{
@@ -863,3 +863,4 @@ void ShiftWholeHouse (short howFar)
CloseMessageWindow();
}
PL_IMPLEMENT_FILTER_FUNCTION(GoToFilter)

View File

@@ -249,7 +249,7 @@ void DoHouseInfo (void)
while (!leaving)
{
item = houseInfoDialog->ExecuteModal(nullptr, HouseFilter);
item = houseInfoDialog->ExecuteModal(nullptr, PL_FILTER_FUNC(HouseFilter));
if (item == kOkayButton)
{
@@ -334,3 +334,4 @@ void HowToZeroScores (void)
#endif
PL_IMPLEMENT_FILTER_FUNCTION(HouseFilter)

View File

@@ -15,6 +15,7 @@
#include "FontManager.h"
#include "GpApplicationName.h"
#include "GpRenderedFontMetrics.h"
#include "IGpLogDriver.h"
#include "IGpMutex.h"
#include "IGpThreadEvent.h"
#include "IGpDisplayDriver.h"
@@ -519,15 +520,20 @@ void gpAppInit()
//-------------------------------------------------------------- main
// Here is main(). The first function called when Glider PRO comes up.
int gpAppMain()
int AppStartup()
{
// long wasSeed;
// long wasSeed;
long theErr;
PLError_t fileErr;
Boolean whoCares, copyGood;
PL_Init();
IGpLogDriver *logger = PLDrivers::GetLogDriver();
if (logger)
logger->Printf(IGpLogDriver::Category_Information, "Init phase 1...");
ToolBoxInit();
CheckOurEnvirons();
@@ -540,18 +546,24 @@ int gpAppMain()
RedAlert(kErrNeedSystem7);
if (thisMac.numScreens == 0)
RedAlert(kErrNeed16Or256Colors);
// dataResFile = OpenResFile("\pMermaid");
// dataResFile = OpenResFile("\pMermaid");
SetUpAppleEvents();
LoadCursors();
ReadInPrefs();
if (logger)
logger->Printf(IGpLogDriver::Category_Information, "Init phase 2...");
SpinCursor(2); // Tick once to let the display driver flush any resolution changes from prefs
FlushResolutionChange();
if (logger)
logger->Printf(IGpLogDriver::Category_Information, "Init phase 3...");
#if defined COMPILEDEMO
copyGood = true;
#elif defined COMPILENOCP
// didValidation = false;
// didValidation = false;
copyGood = true;
#else
didValidation = false;
@@ -562,8 +574,8 @@ int gpAppMain()
WriteOutPrefs(); SpinCursor(3);
#endif
// if ((thisMac.numScreens > 1) && (isUseSecondScreen))
// ReflectSecondMonitorEnvirons(false, true, true);
// if ((thisMac.numScreens > 1) && (isUseSecondScreen))
// ReflectSecondMonitorEnvirons(false, true, true);
HandleDepthSwitching();
VariableInit();
GetExtraCursors();
@@ -572,6 +584,9 @@ int gpAppMain()
InitSrcRects();
CreateOffscreens();
if (logger)
logger->Printf(IGpLogDriver::Category_Information, "Init phase 3...");
bool resolutionChanged = false;
if (!isPrefsLoaded)
@@ -598,19 +613,32 @@ int gpAppMain()
if (isDoColorFade)
PortabilityLayer::WindowManager::GetInstance()->SetWindowDesaturation(mainWindow, 1.0);
if (logger)
logger->Printf(IGpLogDriver::Category_Information, "Init phase 4...");
InitSound(); SpinCursor(2);
InitMusic(); SpinCursor(2);
if (logger)
logger->Printf(IGpLogDriver::Category_Information, "Init phase 5...");
BuildHouseList();
OpenHouse(true);
PlayPrioritySound(kBirdSound, kBirdPriority);
DelayTicks(6);
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
DelayTicks(6);
}
InitializeMenus(); InitCursor();
#if BUILD_ARCADE_VERSION
// HideMenuBarOld();
// HideMenuBarOld();
#endif
if (logger)
logger->Printf(IGpLogDriver::Category_Information, "Initialization completed");
if (isDoColorFade)
WashColorIn();
@@ -619,14 +647,16 @@ int gpAppMain()
if (thisMac.isTouchscreen)
StartMainMenuUI();
while (!quitting) // this is the main loop
HandleEvent();
return 0;
}
/*
#if BUILD_ARCADE_VERSION
ShowMenuBarOld();
#endif
*/
int AppShutdown()
{
/*
#if BUILD_ARCADE_VERSION
ShowMenuBarOld();
#endif
*/
KillMusic();
KillSound();
if (houseOpen)
@@ -641,8 +671,19 @@ int gpAppMain()
}
WriteOutPrefs();
PL_DEAD(FlushEvents());
// theErr = LoadScrap();
// theErr = LoadScrap();
return 0;
}
int gpAppMain()
{
int returnCode = AppStartup();
if (returnCode != 0)
return returnCode;
while (!quitting) // this is the main loop
HandleEvent();
return AppShutdown();
}

View File

@@ -23,6 +23,7 @@
#include "PLDrivers.h"
#include "PLNumberFormatting.h"
#include "PLPasStr.h"
#include "PLSysCalls.h"
#define kMainWindowID 128
#define kEditWindowID 129
@@ -571,6 +572,8 @@ void HardDrawMainWindow (void)
// palette. In this way, color appears to slowly wash in.
void WashColorIn (void)
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
#define kGray2ColorSteps 180
long longDelta;
short i, c;

View File

@@ -785,7 +785,7 @@ void DoBlowerObjectInfo (short what)
{
bool redrawMain = false;
item = infoDial->ExecuteModal(nullptr, BlowerFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(BlowerFilter));
if (item == kOkayButton)
{
@@ -937,7 +937,7 @@ void DoFurnitureObjectInfo (void)
while (!leaving)
{
item = infoDial->ExecuteModal(nullptr, FurnitureFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(FurnitureFilter));
if (item == kOkayButton)
leaving = true;
@@ -997,7 +997,7 @@ void DoCustPictObjectInfo (void)
{
bool redrawMain = false;
item = infoDial->ExecuteModal(nullptr, CustPictFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(CustPictFilter));
if (item == kOkayButton)
{
@@ -1106,7 +1106,7 @@ void DoSwitchObjectInfo (void)
while (!leaving)
{
item = infoDial->ExecuteModal(nullptr, SwitchFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(SwitchFilter));
if (item == kOkayButton)
{
@@ -1231,7 +1231,7 @@ void DoTriggerObjectInfo (void)
while (!leaving)
{
item = infoDial->ExecuteModal(nullptr, TriggerFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(TriggerFilter));
if (item == kOkayButton)
{
@@ -1371,7 +1371,7 @@ void DoLightObjectInfo (void)
while (!leaving)
{
bool redrawMain = false;
item = infoDial->ExecuteModal(nullptr, LightFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(LightFilter));
if (item == kOkayButton)
{
@@ -1465,7 +1465,7 @@ void DoApplianceObjectInfo (short what)
while (!leaving)
{
bool redrawMain = false;
item = infoDial->ExecuteModal(nullptr, ApplianceFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(ApplianceFilter));
if (item == kOkayButton)
{
@@ -1585,7 +1585,7 @@ void DoMicrowaveObjectInfo (void)
while (!leaving)
{
bool redrawMain = false;
item = infoDial->ExecuteModal(nullptr, MicrowaveFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(MicrowaveFilter));
if (item == kOkayButton)
{
@@ -1695,7 +1695,7 @@ void DoGreaseObjectInfo (void)
{
bool redrawMain = false;
item = infoDial->ExecuteModal(nullptr, GreaseFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(GreaseFilter));
if (item == kOkayButton)
{
@@ -1783,7 +1783,7 @@ void DoInvisBonusObjectInfo (void)
while (!leaving)
{
item = infoDial->ExecuteModal(nullptr, InvisBonusFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(InvisBonusFilter));
if (item == kOkayButton)
{
@@ -1907,7 +1907,7 @@ void DoTransObjectInfo (short what)
while (!leaving)
{
item = infoDial->ExecuteModal(nullptr, TransFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(TransFilter));
if (item == kOkayButton)
{
@@ -2017,7 +2017,7 @@ void DoEnemyObjectInfo (short what)
while (!leaving)
{
item = infoDial->ExecuteModal(nullptr, EnemyFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(EnemyFilter));
if (item == kOkayButton)
{
@@ -2113,7 +2113,7 @@ void DoFlowerObjectInfo (void)
{
bool redrawMain = false;
item = infoDial->ExecuteModal(nullptr, FlowerFilter);
item = infoDial->ExecuteModal(nullptr, PL_FILTER_FUNC(FlowerFilter));
if (item == kOkayButton)
{
@@ -2361,3 +2361,17 @@ void DoObjectInfo (void)
#endif
PL_IMPLEMENT_FILTER_FUNCTION(BlowerFilter)
PL_IMPLEMENT_FILTER_FUNCTION(FurnitureFilter)
PL_IMPLEMENT_FILTER_FUNCTION(CustPictFilter)
PL_IMPLEMENT_FILTER_FUNCTION(SwitchFilter)
PL_IMPLEMENT_FILTER_FUNCTION(TriggerFilter)
PL_IMPLEMENT_FILTER_FUNCTION(LightFilter)
PL_IMPLEMENT_FILTER_FUNCTION(ApplianceFilter)
PL_IMPLEMENT_FILTER_FUNCTION(MicrowaveFilter)
PL_IMPLEMENT_FILTER_FUNCTION(GreaseFilter)
PL_IMPLEMENT_FILTER_FUNCTION(InvisBonusFilter)
PL_IMPLEMENT_FILTER_FUNCTION(TransFilter)
PL_IMPLEMENT_FILTER_FUNCTION(EnemyFilter)
PL_IMPLEMENT_FILTER_FUNCTION(FlowerFilter)

View File

@@ -16,7 +16,7 @@
#include "RectUtils.h"
#include "Room.h"
#include "RubberBands.h"
#include "PLSysCalls.h"
#define kMaxGarbageRects 48
@@ -739,6 +739,7 @@ void RenderFrame (void)
while (TickCount() < nextFrame)
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
Delay(1, nullptr);
}
nextFrame = TickCount() + kTicksPerFrame;

View File

@@ -502,7 +502,7 @@ void DoRoomInfo(void)
{
bool needRedraw = false;
item = roomInfoDialog->ExecuteModal(nullptr, RoomFilter);
item = roomInfoDialog->ExecuteModal(nullptr, PL_FILTER_FUNC(RoomFilter));
if (item == kOkayButton)
{
@@ -737,7 +737,7 @@ short ChooseOriginalArt (short was)
while (!leaving)
{
item = theDialog->ExecuteModal(nullptr, OriginalArtFilter);
item = theDialog->ExecuteModal(nullptr, PL_FILTER_FUNC(OriginalArtFilter));
if (item == kOkayButton)
{
@@ -881,3 +881,5 @@ void ComplainAboutPICTNotFound (void)
}
#endif
PL_IMPLEMENT_FILTER_FUNCTION(RoomFilter)
PL_IMPLEMENT_FILTER_FUNCTION(OriginalArtFilter)

View File

@@ -41,7 +41,7 @@ static const int kStarsOffset = 180;
static const int kGlidersOffset = 260;
static const int kScoreOffset = 320;
static void FBUI_DrawLabels(DrawSurface *surface, const Point &basePoint)
static void FBUI_Save_DrawLabels(DrawSurface *surface, const Point &basePoint)
{
PortabilityLayer::ResolveCachingColor blackColor(StdColors::Black());
PortabilityLayer::RenderedFont *rfont = GetFont(PortabilityLayer::FontPresets::kSystem12Bold);
@@ -51,7 +51,7 @@ static void FBUI_DrawLabels(DrawSurface *surface, const Point &basePoint)
surface->DrawString(basePoint + Point::Create(kScoreOffset, 0), PSTR("Score"), blackColor, rfont);
}
static void FBUI_DrawFileDetails(DrawSurface *surface, const Point &basePoint, const Rect &constraintRect, void *fileDetails)
static void FBUI_Save_DrawFileDetails(DrawSurface *surface, const Point &basePoint, const Rect &constraintRect, void *fileDetails)
{
PortabilityLayer::ResolveCachingColor blackColor(StdColors::Black());
PortabilityLayer::RenderedFont *rfont = GetFont(PortabilityLayer::FontPresets::kSystem12Bold);
@@ -70,7 +70,7 @@ static void FBUI_DrawFileDetails(DrawSurface *surface, const Point &basePoint, c
surface->DrawString(basePoint + Point::Create(kScoreOffset, 0), numStr, blackColor, rfont);
}
static void *FBUI_LoadFileDetails(PortabilityLayer::VirtualDirectory_t dirID, const PLPasStr &filename)
static void *FBUI_Save_LoadFileDetails(PortabilityLayer::VirtualDirectory_t dirID, const PLPasStr &filename)
{
GpIOStream *stream = nullptr;
if (PortabilityLayer::FileManager::GetInstance()->OpenNonCompositeFile(dirID, filename, ".sav", PortabilityLayer::EFilePermission_Read, GpFileCreationDispositions::kOpenExisting, stream) != PLErrors::kNone)
@@ -97,12 +97,12 @@ static void *FBUI_LoadFileDetails(PortabilityLayer::VirtualDirectory_t dirID, co
return gameData;
}
static void FBUI_FreeFileDetails(void *fileDetails)
static void FBUI_Save_FreeFileDetails(void *fileDetails)
{
PortabilityLayer::MemoryManager::GetInstance()->Release(fileDetails);
}
static bool FBUI_FilterFile(PortabilityLayer::VirtualDirectory_t dirID, const PLPasStr &filename)
static bool FBUI_Save_FilterFile(PortabilityLayer::VirtualDirectory_t dirID, const PLPasStr &filename)
{
return true;
}
@@ -111,11 +111,11 @@ static PortabilityLayer::FileBrowserUI_DetailsCallbackAPI GetSavedGameDetailsAPI
{
PortabilityLayer::FileBrowserUI_DetailsCallbackAPI api;
api.m_drawLabelsCallback = FBUI_DrawLabels;
api.m_drawFileDetailsCallback = FBUI_DrawFileDetails;
api.m_loadFileDetailsCallback = FBUI_LoadFileDetails;
api.m_freeFileDetailsCallback = FBUI_FreeFileDetails;
api.m_filterFileCallback = FBUI_FilterFile;
api.m_drawLabelsCallback = FBUI_Save_DrawLabels;
api.m_drawFileDetailsCallback = FBUI_Save_DrawFileDetails;
api.m_loadFileDetailsCallback = FBUI_Save_LoadFileDetails;
api.m_freeFileDetailsCallback = FBUI_Save_FreeFileDetails;
api.m_filterFileCallback = FBUI_Save_FilterFile;
return api;
}

View File

@@ -407,7 +407,7 @@ void DoLoadHouse (void)
while (!leaving)
{
int16_t item = theDial->ExecuteModal(nullptr, LoadFilter);
int16_t item = theDial->ExecuteModal(nullptr, PL_FILTER_FUNC(LoadFilter));
bool requiresRedraw = false;
@@ -665,3 +665,4 @@ void AddExtraHouse (const VFileSpec &newHouse)
numExtraHouses++;
}
PL_IMPLEMENT_FILTER_FUNCTION(LoadFilter)

View File

@@ -254,7 +254,7 @@ void DoBrainsPrefs (void)
while (!leaving)
{
itemHit = prefDlg->ExecuteModal(nullptr, BrainsFilter);
itemHit = prefDlg->ExecuteModal(nullptr, PL_FILTER_FUNC(BrainsFilter));
switch (itemHit)
{
case kOkayButton:
@@ -536,7 +536,7 @@ void DoControlPrefs (void)
while (!leaving)
{
itemHit = prefDlg->ExecuteModal(nullptr, ControlFilter);
itemHit = prefDlg->ExecuteModal(nullptr, PL_FILTER_FUNC(ControlFilter));
switch (itemHit)
{
case kOkayButton:
@@ -758,7 +758,7 @@ void DoSoundPrefs (void)
while (!leaving)
{
itemHit = prefDlg->ExecuteModal(nullptr, SoundFilter);
itemHit = prefDlg->ExecuteModal(nullptr, PL_FILTER_FUNC(SoundFilter));
switch (itemHit)
{
@@ -1026,7 +1026,7 @@ void DoDisplayPrefs (void)
while (!leaving)
{
int16_t itemHit = prefDlg->ExecuteModal(nullptr, DisplayFilter);
int16_t itemHit = prefDlg->ExecuteModal(nullptr, PL_FILTER_FUNC(DisplayFilter));
switch (itemHit)
{
case kOkayButton:
@@ -1166,6 +1166,8 @@ void SetAllDefaults (void)
void FlashSettingsButton (DrawSurface *surface, short who)
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
#define kNormalSettingsIcon 1010
#define kInvertedSettingsIcon 1014
short theID;
@@ -1293,7 +1295,7 @@ void DoSettingsMain (void)
while (!leaving)
{
int16_t selectedItem = prefDlg->ExecuteModal(nullptr, PrefsFilter);
int16_t selectedItem = prefDlg->ExecuteModal(nullptr, PL_FILTER_FUNC(PrefsFilter));
switch (selectedItem)
{
@@ -1374,3 +1376,8 @@ void ComplainAboutChanges (void)
hitWhat = PortabilityLayer::DialogManager::GetInstance()->DisplayAlert(kChangesEffectAlert, nullptr);
}
PL_IMPLEMENT_FILTER_FUNCTION(BrainsFilter)
PL_IMPLEMENT_FILTER_FUNCTION(ControlFilter)
PL_IMPLEMENT_FILTER_FUNCTION(SoundFilter)
PL_IMPLEMENT_FILTER_FUNCTION(DisplayFilter)
PL_IMPLEMENT_FILTER_FUNCTION(PrefsFilter)

View File

@@ -14,6 +14,7 @@
#include "PLQDraw.h"
#include "RectUtils.h"
#include "RandomNumberGenerator.h"
#include "PLSysCalls.h"
#include <algorithm>
@@ -166,6 +167,7 @@ void WipeScreenOn (short direction, Rect *theRect)
mainWindow->GetDrawSurface()->m_port.SetDirty(PortabilityLayer::QDPortDirtyFlag_Contents);
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
Delay(1, nullptr);
}
}
@@ -229,7 +231,10 @@ void DissolveScreenOn(Rect *theRect)
graf->m_port.SetDirty(PortabilityLayer::QDPortDirtyFlag_Contents);
Delay(1, nullptr);
{
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
Delay(1, nullptr);
}
}
graf->m_port.SetDirty(PortabilityLayer::QDPortDirtyFlag_Contents);

View File

@@ -18,11 +18,14 @@
#include "DialogManager.h"
#include "DisplayDeviceManager.h"
#include "Externs.h"
#include "IGpLogDriver.h"
#include "IconLoader.h"
#include "InputManager.h"
#include "ResourceManager.h"
#include "Utilities.h"
#include "PLDrivers.h"
#include <assert.h>
@@ -92,6 +95,11 @@ long RandomLong (long range)
void RedAlert (short errorNumber)
{
IGpLogDriver *logger = PLDrivers::GetLogDriver();
if (logger)
logger->Printf(IGpLogDriver::Category_Error, "Red alert error %i", static_cast<int>(errorNumber));
#define rDeathAlertID 170 // alert res. ID for death error
#define rErrTitleID 170 // string ID for death error title
#define rErrMssgID 171 // string ID for death error message
@@ -486,6 +494,7 @@ void WaitCommandQReleased (void)
if (!theKeys->IsSet(PL_KEY_EITHER_SPECIAL(kControl)) || !theKeys->IsSet(PL_KEY_ASCII('Q')))
waiting = false;
PL_ASYNCIFY_PARANOID_DISARM_FOR_SCOPE();
Delay(1, nullptr);
}
FlushEvents();