Fix the rest of house load and game over asserts

This commit is contained in:
elasota
2020-01-20 02:17:07 -05:00
parent c9f3e5aba6
commit 610c72b9bb
5 changed files with 39 additions and 16 deletions

View File

@@ -639,14 +639,24 @@ void DrawDialogUserText (Dialog *dial, short item, StringPtr text, Boolean inver
const int32_t ascender = surface->MeasureFontAscender(); const int32_t ascender = surface->MeasureFontAscender();
if (invert)
{
surface->SetForeColor(StdColors::Black());
surface->FillRect(iRect);
surface->SetForeColor(StdColors::White());
}
else
{
surface->SetForeColor(StdColors::White());
surface->FillRect(iRect);
surface->SetForeColor(StdColors::Black());
}
const Point centeredDrawPoint = Point::Create((iRect.left + iRect.right - strWidth) / 2, (iRect.top + iRect.bottom + ascender) / 2); const Point centeredDrawPoint = Point::Create((iRect.left + iRect.right - strWidth) / 2, (iRect.top + iRect.bottom + ascender) / 2);
surface->DrawString(centeredDrawPoint, stringCopy, true); surface->DrawString(centeredDrawPoint, stringCopy, true);
if (invert) if (invert)
{ surface->SetForeColor(StdColors::Black());
OffsetRect(&iRect, 0, 1);
surface->InvertFillRect(iRect, nullptr);
}
} }
//-------------------------------------------------------------- DrawDialogUserText //-------------------------------------------------------------- DrawDialogUserText

View File

@@ -103,7 +103,7 @@ void SetUpFinalScreen (void)
{ {
GetLineOfText(tempStr, count, subStr); GetLineOfText(tempStr, count, subStr);
offset = ((thisMac.screen.right - thisMac.screen.left) - offset = ((thisMac.screen.right - thisMac.screen.left) -
TextWidth(subStr, 1, subStr[0])) / 2; surface->MeasureString(subStr)) / 2;
surface->SetApplicationFont(12, PortabilityLayer::FontFamilyFlag_Bold); surface->SetApplicationFont(12, PortabilityLayer::FontFamilyFlag_Bold);

View File

@@ -77,12 +77,6 @@ void UpdateLoadDialog (Dialog *theDialog)
DrawSurface *surface = theWindow->GetDrawSurface(); DrawSurface *surface = theWindow->GetDrawSurface();
GetWindowBounds(theWindow, kWindowContentRgn, &dialogRect); GetWindowBounds(theWindow, kWindowContentRgn, &dialogRect);
/*
wasState = HGetState((Handle)(((DialogPeek)theDialog)->window).port.visRgn);
HLock((Handle)(((DialogPeek)theDialog)->window).port.visRgn);
dialogRect = (**((((DialogPeek)theDialog)->window).port.visRgn)).rgnBBox;
HSetState((Handle)(((DialogPeek)theDialog)->window).port.visRgn, wasState);
*/
ColorFrameWHRect(theDialog->GetWindow()->GetDrawSurface(), 8, 39, 413, 184, kRedOrangeColor8); // box around files ColorFrameWHRect(theDialog->GetWindow()->GetDrawSurface(), 8, 39, 413, 184, kRedOrangeColor8); // box around files
@@ -403,6 +397,8 @@ void DoLoadHouse (void)
while (!leaving) while (!leaving)
{ {
int16_t item = theDial->ExecuteModal(LoadFilter); int16_t item = theDial->ExecuteModal(LoadFilter);
bool requiresRedraw = false;
if (item == kOkayButton) if (item == kOkayButton)
{ {
@@ -431,9 +427,8 @@ void DoLoadHouse (void)
if ((item - kLoadNameFirstItem != thisHouseIndex) && if ((item - kLoadNameFirstItem != thisHouseIndex) &&
(item - kLoadNameFirstItem < screenCount)) (item - kLoadNameFirstItem < screenCount))
{ {
InvalWindowRect(theDial->GetWindow(), &loadHouseRects[thisHouseIndex]);
thisHouseIndex = item - kLoadNameFirstItem; thisHouseIndex = item - kLoadNameFirstItem;
InvalWindowRect(theDial->GetWindow(), &loadHouseRects[thisHouseIndex]); requiresRedraw = true;
} }
if (lastWhereClick.h < 0) if (lastWhereClick.h < 0)
@@ -466,9 +461,8 @@ void DoLoadHouse (void)
if ((item - kLoadIconFirstItem != thisHouseIndex) && if ((item - kLoadIconFirstItem != thisHouseIndex) &&
(item - kLoadIconFirstItem < screenCount)) (item - kLoadIconFirstItem < screenCount))
{ {
InvalWindowRect(theDial->GetWindow(), &loadHouseRects[thisHouseIndex]);
thisHouseIndex = item - kLoadIconFirstItem; thisHouseIndex = item - kLoadIconFirstItem;
InvalWindowRect(theDial->GetWindow(), &loadHouseRects[thisHouseIndex]); requiresRedraw = true;
} }
if (lastWhereClick.h < 0) if (lastWhereClick.h < 0)
@@ -500,6 +494,9 @@ void DoLoadHouse (void)
{ {
PageDownHouses(theDial); PageDownHouses(theDial);
} }
if (requiresRedraw)
UpdateLoadDialog(theDial);
} }
theDial->Destroy(); theDial->Destroy();

View File

@@ -1,9 +1,12 @@
#include "PLInvisibleWidget.h" #include "PLInvisibleWidget.h"
#include "PLTimeTaggedVOSEvent.h"
#include "PLWidgets.h"
namespace PortabilityLayer namespace PortabilityLayer
{ {
InvisibleWidget::InvisibleWidget(const WidgetBasicState &state) InvisibleWidget::InvisibleWidget(const WidgetBasicState &state)
: WidgetSpec<InvisibleWidget>(state) : WidgetSpec<InvisibleWidget>(state)
, m_clickable(state.m_enabled)
{ {
} }
@@ -17,4 +20,12 @@ namespace PortabilityLayer
return true; return true;
} }
WidgetHandleState_t InvisibleWidget::ProcessEvent(const TimeTaggedVOSEvent &evt)
{
if (m_clickable && evt.IsLMouseDownEvent() && m_rect.Contains(m_window->MouseToLocal(evt.m_vosEvent.m_event.m_mouseInputEvent)))
return WidgetHandleStates::kActivated;
else
return WidgetHandleStates::kIgnored;
}
} }

View File

@@ -7,9 +7,14 @@ namespace PortabilityLayer
class InvisibleWidget final : public WidgetSpec<InvisibleWidget> class InvisibleWidget final : public WidgetSpec<InvisibleWidget>
{ {
public: public:
InvisibleWidget(const WidgetBasicState &state); explicit InvisibleWidget(const WidgetBasicState &state);
~InvisibleWidget(); ~InvisibleWidget();
bool Init(const WidgetBasicState &state) override; bool Init(const WidgetBasicState &state) override;
WidgetHandleState_t ProcessEvent(const TimeTaggedVOSEvent &evt) override;
private:
bool m_clickable;
}; };
} }