mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-12-14 03:59:36 +00:00
Emscripten port
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// Environ.h
|
||||
//----------------------------------------------------------------------------
|
||||
//============================================================================
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "PLQDraw.h"
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
69
GpApp/GpApp_Combined.cpp
Normal 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"
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user