Dialog: Manage status only through accessors.
This commit is contained in:
parent
6db0f5106c
commit
8bd32b6009
8 changed files with 46 additions and 38 deletions
|
@ -28,11 +28,7 @@
|
|||
#define FADE_TIME 1.0
|
||||
const float FONT_SCALE = 0.55f;
|
||||
|
||||
PSPDialog::PSPDialog()
|
||||
: status(SCE_UTILITY_STATUS_NONE), pendingStatus(SCE_UTILITY_STATUS_NONE),
|
||||
pendingStatusTicks(0), lastButtons(0), buttons(0)
|
||||
{
|
||||
|
||||
PSPDialog::PSPDialog() {
|
||||
}
|
||||
|
||||
PSPDialog::~PSPDialog() {
|
||||
|
|
|
@ -94,23 +94,23 @@ protected:
|
|||
void ChangeStatus(DialogStatus newStatus, int delayUs);
|
||||
void ChangeStatusInit(int delayUs);
|
||||
void ChangeStatusShutdown(int delayUs);
|
||||
DialogStatus ReadStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
// TODO: Remove this once all dialogs are updated.
|
||||
virtual bool UseAutoStatus() {
|
||||
return true;
|
||||
}
|
||||
virtual bool UseAutoStatus() = 0;
|
||||
|
||||
void StartFade(bool fadeIn_);
|
||||
void UpdateFade(int animSpeed);
|
||||
virtual void FinishFadeOut();
|
||||
u32 CalcFadedColor(u32 inColor);
|
||||
|
||||
DialogStatus status;
|
||||
DialogStatus pendingStatus;
|
||||
u64 pendingStatusTicks;
|
||||
DialogStatus pendingStatus = SCE_UTILITY_STATUS_NONE;
|
||||
u64 pendingStatusTicks = 0;
|
||||
|
||||
unsigned int lastButtons;
|
||||
unsigned int buttons;
|
||||
unsigned int lastButtons = 0;
|
||||
unsigned int buttons = 0;
|
||||
|
||||
float fadeTimer;
|
||||
bool isFading;
|
||||
|
@ -121,4 +121,7 @@ protected:
|
|||
ImageID cancelButtonImg;
|
||||
int okButtonFlag;
|
||||
int cancelButtonFlag;
|
||||
|
||||
private:
|
||||
DialogStatus status = SCE_UTILITY_STATUS_NONE;
|
||||
};
|
||||
|
|
|
@ -46,6 +46,12 @@ public:
|
|||
int Abort();
|
||||
std::string GetGameDataInstallFileName(SceUtilityGamedataInstallParam *param, std::string filename);
|
||||
|
||||
protected:
|
||||
// TODO: Manage status correctly.
|
||||
bool UseAutoStatus() override {
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
void UpdateProgress();
|
||||
void OpenNextFile();
|
||||
|
|
|
@ -62,7 +62,7 @@ PSPNetconfDialog::~PSPNetconfDialog() {
|
|||
|
||||
int PSPNetconfDialog::Init(u32 paramAddr) {
|
||||
// Already running
|
||||
if (status != SCE_UTILITY_STATUS_NONE)
|
||||
if (ReadStatus() != SCE_UTILITY_STATUS_NONE)
|
||||
return SCE_ERROR_UTILITY_INVALID_STATUS;
|
||||
|
||||
requestAddr = paramAddr;
|
||||
|
@ -471,7 +471,7 @@ int PSPNetconfDialog::Update(int animSpeed) {
|
|||
}
|
||||
|
||||
int PSPNetconfDialog::Shutdown(bool force) {
|
||||
if (status != SCE_UTILITY_STATUS_FINISHED && !force)
|
||||
if (ReadStatus() != SCE_UTILITY_STATUS_FINISHED && !force)
|
||||
return SCE_ERROR_UTILITY_INVALID_STATUS;
|
||||
|
||||
PSPDialog::Shutdown(force);
|
||||
|
|
|
@ -25,20 +25,18 @@ PSPPlaceholderDialog::~PSPPlaceholderDialog() {
|
|||
}
|
||||
|
||||
|
||||
int PSPPlaceholderDialog::Init()
|
||||
{
|
||||
status = SCE_UTILITY_STATUS_INITIALIZE;
|
||||
int PSPPlaceholderDialog::Init() {
|
||||
ChangeStatus(SCE_UTILITY_STATUS_INITIALIZE, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int PSPPlaceholderDialog::Update(int animSpeed)
|
||||
{
|
||||
if (status == SCE_UTILITY_STATUS_INITIALIZE) {
|
||||
status = SCE_UTILITY_STATUS_RUNNING;
|
||||
} else if (status == SCE_UTILITY_STATUS_RUNNING) {
|
||||
status = SCE_UTILITY_STATUS_FINISHED;
|
||||
} else if (status == SCE_UTILITY_STATUS_FINISHED) {
|
||||
status = SCE_UTILITY_STATUS_SHUTDOWN;
|
||||
int PSPPlaceholderDialog::Update(int animSpeed) {
|
||||
if (ReadStatus() == SCE_UTILITY_STATUS_INITIALIZE) {
|
||||
ChangeStatus(SCE_UTILITY_STATUS_RUNNING, 0);
|
||||
} else if (ReadStatus() == SCE_UTILITY_STATUS_RUNNING) {
|
||||
ChangeStatus(SCE_UTILITY_STATUS_FINISHED, 0);
|
||||
} else if (ReadStatus() == SCE_UTILITY_STATUS_FINISHED) {
|
||||
ChangeStatus(SCE_UTILITY_STATUS_SHUTDOWN, 0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -1013,7 +1013,7 @@ int PSPSaveDialog::Update(int animSpeed)
|
|||
break;
|
||||
}
|
||||
|
||||
if (status == SCE_UTILITY_STATUS_FINISHED || pendingStatus == SCE_UTILITY_STATUS_FINISHED)
|
||||
if (ReadStatus() == SCE_UTILITY_STATUS_FINISHED || pendingStatus == SCE_UTILITY_STATUS_FINISHED)
|
||||
Memory::Memcpy(requestAddr, &request, request.common.size);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -61,7 +61,7 @@ PSPScreenshotDialog::~PSPScreenshotDialog() {
|
|||
|
||||
int PSPScreenshotDialog::Init(u32 paramAddr) {
|
||||
// Already running
|
||||
if (status != SCE_UTILITY_STATUS_NONE && status != SCE_UTILITY_STATUS_SHUTDOWN) {
|
||||
if (ReadStatus() != SCE_UTILITY_STATUS_NONE && ReadStatus() != SCE_UTILITY_STATUS_SHUTDOWN) {
|
||||
ERROR_LOG_REPORT(HLE, "sceUtilityScreenshotInitStart(%08x): invalid status", paramAddr);
|
||||
return SCE_ERROR_UTILITY_INVALID_STATUS;
|
||||
}
|
||||
|
@ -84,23 +84,23 @@ int PSPScreenshotDialog::Init(u32 paramAddr) {
|
|||
}
|
||||
|
||||
mode = params_->mode;
|
||||
status = SCE_UTILITY_STATUS_INITIALIZE;
|
||||
ChangeStatus(SCE_UTILITY_STATUS_INITIALIZE, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int PSPScreenshotDialog::Update(int animSpeed) {
|
||||
if (UseAutoStatus()) {
|
||||
if (status == SCE_UTILITY_STATUS_INITIALIZE) {
|
||||
status = SCE_UTILITY_STATUS_RUNNING;
|
||||
} else if (status == SCE_UTILITY_STATUS_RUNNING) {
|
||||
if (ReadStatus() == SCE_UTILITY_STATUS_INITIALIZE) {
|
||||
ChangeStatus(SCE_UTILITY_STATUS_RUNNING, 0);
|
||||
} else if (ReadStatus() == SCE_UTILITY_STATUS_RUNNING) {
|
||||
if (mode == SCE_UTILITY_SCREENSHOT_TYPE_CONT_START) {
|
||||
status = SCE_UTILITY_STATUS_SCREENSHOT_UNKNOWN;
|
||||
ChangeStatus(SCE_UTILITY_STATUS_SCREENSHOT_UNKNOWN, 0);
|
||||
} else {
|
||||
status = SCE_UTILITY_STATUS_FINISHED;
|
||||
ChangeStatus(SCE_UTILITY_STATUS_FINISHED, 0);
|
||||
}
|
||||
} else if (status == SCE_UTILITY_STATUS_FINISHED) {
|
||||
status = SCE_UTILITY_STATUS_SHUTDOWN;
|
||||
} else if (ReadStatus() == SCE_UTILITY_STATUS_FINISHED) {
|
||||
ChangeStatus(SCE_UTILITY_STATUS_SHUTDOWN, 0);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
@ -108,11 +108,11 @@ int PSPScreenshotDialog::Update(int animSpeed) {
|
|||
|
||||
int PSPScreenshotDialog::ContStart() {
|
||||
// Based on JPCSP http://code.google.com/p/jpcsp/source/detail?r=3381
|
||||
if (status != SCE_UTILITY_STATUS_SCREENSHOT_UNKNOWN)
|
||||
if (ReadStatus() != SCE_UTILITY_STATUS_SCREENSHOT_UNKNOWN)
|
||||
return SCE_ERROR_UTILITY_INVALID_STATUS;
|
||||
|
||||
// Check with JPCSPTrace log of Dream Club Portable
|
||||
status = SCE_UTILITY_STATUS_FINISHED;
|
||||
ChangeStatus(SCE_UTILITY_STATUS_FINISHED, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -33,6 +33,11 @@ public:
|
|||
virtual void DoState(PointerWrap &p) override;
|
||||
|
||||
protected:
|
||||
// TODO: Manage status correctly.
|
||||
bool UseAutoStatus() override {
|
||||
return true;
|
||||
}
|
||||
|
||||
int mode;
|
||||
PSPPointer<SceUtilityScreenshotParams> params_;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue