mirror of
https://github.com/libretro/ppsspp.git
synced 2024-11-24 08:39:51 +00:00
shorten key.
This commit is contained in:
parent
bbb52b1ff3
commit
453b7d60cf
@ -72,7 +72,7 @@ void CwCheatScreen::CreateViews() {
|
|||||||
leftColumn->Add(new ItemHeader(k->T("Options")));
|
leftColumn->Add(new ItemHeader(k->T("Options")));
|
||||||
leftColumn->Add(new Choice(k->T("Back")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnBack);
|
leftColumn->Add(new Choice(k->T("Back")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnBack);
|
||||||
//leftColumn->Add(new Choice(k->T("Add Cheat")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnAddCheat);
|
//leftColumn->Add(new Choice(k->T("Add Cheat")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnAddCheat);
|
||||||
leftColumn->Add(new Choice(k->T("Import from cheat.db")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnImportCheat);
|
leftColumn->Add(new Choice(k->T("ImportCheats")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnImportCheat);
|
||||||
leftColumn->Add(new Choice(k->T("Enable/Disable All")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnEnableAll);
|
leftColumn->Add(new Choice(k->T("Enable/Disable All")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnEnableAll);
|
||||||
|
|
||||||
|
|
||||||
|
591
Windows/enc_temp_folder/enc207.tmp
Normal file
591
Windows/enc_temp_folder/enc207.tmp
Normal file
@ -0,0 +1,591 @@
|
|||||||
|
// Copyright (c) 2013- PPSSPP Project.
|
||||||
|
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, version 2.0 or later versions.
|
||||||
|
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License 2.0 for more details.
|
||||||
|
|
||||||
|
// A copy of the GPL 2.0 should have been included with the program.
|
||||||
|
// If not, see http://www.gnu.org/licenses/
|
||||||
|
|
||||||
|
// Official git repository and contact information can be found at
|
||||||
|
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
|
||||||
|
|
||||||
|
#include "gfx_es2/draw_buffer.h"
|
||||||
|
#include "i18n/i18n.h"
|
||||||
|
#include "ui/view.h"
|
||||||
|
#include "ui/viewgroup.h"
|
||||||
|
#include "ui/ui_context.h"
|
||||||
|
#include "UI/EmuScreen.h"
|
||||||
|
#include "UI/PluginScreen.h"
|
||||||
|
#include "UI/GameSettingsScreen.h"
|
||||||
|
#include "UI/GameInfoCache.h"
|
||||||
|
#include "UI/MiscScreens.h"
|
||||||
|
#include "UI/ControlMappingScreen.h"
|
||||||
|
#include "Core/Config.h"
|
||||||
|
#include "android/jni/TestRunner.h"
|
||||||
|
#include "GPU/GPUInterface.h"
|
||||||
|
#include "base/colorutil.h"
|
||||||
|
#include "base/timeutil.h"
|
||||||
|
#include "math/curves.h"
|
||||||
|
#include "Core/HW/atrac3plus.h"
|
||||||
|
#include "Core/System.h"
|
||||||
|
#include "Common/KeyMap.h"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include "Core/Host.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
namespace MainWindow {
|
||||||
|
enum {
|
||||||
|
WM_USER_LOG_STATUS_CHANGED = WM_USER + 200,
|
||||||
|
WM_USER_ATRAC_STATUS_CHANGED = WM_USER + 300,
|
||||||
|
};
|
||||||
|
extern HWND hwndMain;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef IOS
|
||||||
|
extern bool isJailed;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace UI {
|
||||||
|
|
||||||
|
// Reads and writes value to determine the current selection.
|
||||||
|
class PopupMultiChoice : public Choice {
|
||||||
|
public:
|
||||||
|
PopupMultiChoice(int *value, const std::string &text, const char **choices, int minVal, int numChoices,
|
||||||
|
I18NCategory *category, ScreenManager *screenManager, LayoutParams *layoutParams = 0)
|
||||||
|
: Choice(text, "", false, layoutParams), value_(value), choices_(choices), minVal_(minVal), numChoices_(numChoices),
|
||||||
|
category_(category), screenManager_(screenManager) {
|
||||||
|
if (*value < minVal) *value = minVal;
|
||||||
|
OnClick.Handle(this, &PopupMultiChoice::HandleClick);
|
||||||
|
UpdateText();
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void Draw(UIContext &dc);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void UpdateText();
|
||||||
|
EventReturn HandleClick(EventParams &e);
|
||||||
|
|
||||||
|
void ChoiceCallback(int num);
|
||||||
|
|
||||||
|
int *value_;
|
||||||
|
const char **choices_;
|
||||||
|
int minVal_;
|
||||||
|
int numChoices_;
|
||||||
|
I18NCategory *category_;
|
||||||
|
ScreenManager *screenManager_;
|
||||||
|
std::string valueText_;
|
||||||
|
};
|
||||||
|
|
||||||
|
EventReturn PopupMultiChoice::HandleClick(EventParams &e) {
|
||||||
|
std::vector<std::string> choices;
|
||||||
|
for (int i = 0; i < numChoices_; i++) {
|
||||||
|
choices.push_back(category_ ? category_->T(choices_[i]) : choices_[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Screen *popupScreen = new ListPopupScreen(text_, choices, *value_ - minVal_,
|
||||||
|
std::bind(&PopupMultiChoice::ChoiceCallback, this, placeholder::_1));
|
||||||
|
screenManager_->push(popupScreen);
|
||||||
|
return EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PopupMultiChoice::UpdateText() {
|
||||||
|
valueText_ = category_ ? category_->T(choices_[*value_ - minVal_]) : choices_[*value_ - minVal_];
|
||||||
|
}
|
||||||
|
|
||||||
|
void PopupMultiChoice::ChoiceCallback(int num) {
|
||||||
|
if (num != -1) {
|
||||||
|
*value_ = num + minVal_;
|
||||||
|
UpdateText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PopupMultiChoice::Draw(UIContext &dc) {
|
||||||
|
Choice::Draw(dc);
|
||||||
|
int paddingX = 12;
|
||||||
|
dc.Draw()->DrawText(dc.theme->uiFont, valueText_.c_str(), bounds_.x2() - paddingX, bounds_.centerY(), 0xFFFFFFFF, ALIGN_RIGHT | ALIGN_VCENTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
class PopupSliderChoice : public Choice {
|
||||||
|
public:
|
||||||
|
PopupSliderChoice(int *value, int minValue, int maxValue, const std::string &text, ScreenManager *screenManager, LayoutParams *layoutParams = 0)
|
||||||
|
: Choice(text, "", false, layoutParams), value_(value), minValue_(minValue), maxValue_(maxValue), screenManager_(screenManager) {
|
||||||
|
OnClick.Handle(this, &PopupSliderChoice::HandleClick);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw(UIContext &dc);
|
||||||
|
|
||||||
|
private:
|
||||||
|
EventReturn HandleClick(EventParams &e);
|
||||||
|
|
||||||
|
int *value_;
|
||||||
|
int minValue_;
|
||||||
|
int maxValue_;
|
||||||
|
ScreenManager *screenManager_;
|
||||||
|
};
|
||||||
|
|
||||||
|
class PopupSliderChoiceFloat : public Choice {
|
||||||
|
public:
|
||||||
|
PopupSliderChoiceFloat(float *value, float minValue, float maxValue, const std::string &text, ScreenManager *screenManager, LayoutParams *layoutParams = 0)
|
||||||
|
: Choice(text, "", false, layoutParams), value_(value), minValue_(minValue), maxValue_(maxValue), screenManager_(screenManager) {
|
||||||
|
OnClick.Handle(this, &PopupSliderChoiceFloat::HandleClick);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Draw(UIContext &dc);
|
||||||
|
|
||||||
|
private:
|
||||||
|
EventReturn HandleClick(EventParams &e);
|
||||||
|
|
||||||
|
float *value_;
|
||||||
|
float minValue_;
|
||||||
|
float maxValue_;
|
||||||
|
ScreenManager *screenManager_;
|
||||||
|
};
|
||||||
|
|
||||||
|
EventReturn PopupSliderChoice::HandleClick(EventParams &e) {
|
||||||
|
Screen *popupScreen = new SliderPopupScreen(value_, minValue_, maxValue_, text_);
|
||||||
|
screenManager_->push(popupScreen);
|
||||||
|
return EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PopupSliderChoice::Draw(UIContext &dc) {
|
||||||
|
Choice::Draw(dc);
|
||||||
|
char temp[32];
|
||||||
|
sprintf(temp, "%i", *value_);
|
||||||
|
dc.Draw()->DrawText(dc.theme->uiFont, temp, bounds_.x2() - 12, bounds_.centerY(), 0xFFFFFFFF, ALIGN_RIGHT | ALIGN_VCENTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
EventReturn PopupSliderChoiceFloat::HandleClick(EventParams &e) {
|
||||||
|
Screen *popupScreen = new SliderFloatPopupScreen(value_, minValue_, maxValue_, text_);
|
||||||
|
screenManager_->push(popupScreen);
|
||||||
|
return EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PopupSliderChoiceFloat::Draw(UIContext &dc) {
|
||||||
|
Choice::Draw(dc);
|
||||||
|
char temp[32];
|
||||||
|
sprintf(temp, "%2.2f", *value_);
|
||||||
|
dc.Draw()->DrawText(dc.theme->uiFont, temp, bounds_.x2() - 12, bounds_.centerY(), 0xFFFFFFFF, ALIGN_RIGHT | ALIGN_VCENTER);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static const int alternateSpeedTable[9] = {
|
||||||
|
0, 15, 30, 45, 60, 75, 90, 120, 180
|
||||||
|
};
|
||||||
|
|
||||||
|
void GameSettingsScreen::CreateViews() {
|
||||||
|
GameInfo *info = g_gameInfoCache.GetInfo(gamePath_, true);
|
||||||
|
|
||||||
|
cap60FPS_ = g_Config.iForceMaxEmulatedFPS == 60;
|
||||||
|
|
||||||
|
iAlternateSpeedPercent_ = 3;
|
||||||
|
for (int i = 0; i < 8; i++) {
|
||||||
|
if (g_Config.iFpsLimit <= alternateSpeedTable[i]) {
|
||||||
|
iAlternateSpeedPercent_ = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Information in the top left.
|
||||||
|
// Back button to the bottom left.
|
||||||
|
// Scrolling action menu to the right.
|
||||||
|
using namespace UI;
|
||||||
|
|
||||||
|
I18NCategory *g = GetI18NCategory("General");
|
||||||
|
I18NCategory *gs = GetI18NCategory("Graphics");
|
||||||
|
I18NCategory *c = GetI18NCategory("Controls");
|
||||||
|
I18NCategory *a = GetI18NCategory("Audio");
|
||||||
|
I18NCategory *s = GetI18NCategory("System");
|
||||||
|
I18NCategory *ms = GetI18NCategory("MainSettings");
|
||||||
|
|
||||||
|
root_ = new AnchorLayout(new LayoutParams(FILL_PARENT, FILL_PARENT));
|
||||||
|
|
||||||
|
ViewGroup *leftColumn = new AnchorLayout(new LinearLayoutParams(1.0f));
|
||||||
|
root_->Add(leftColumn);
|
||||||
|
|
||||||
|
root_->Add(new Choice(g->T("Back"), "", false, new AnchorLayoutParams(150, WRAP_CONTENT, 10, NONE, NONE, 10)))->OnClick.Handle(this, &GameSettingsScreen::OnBack);
|
||||||
|
|
||||||
|
TabHolder *tabHolder = new TabHolder(ORIENT_VERTICAL, 200, new AnchorLayoutParams(10, 0, 10, 0, false));
|
||||||
|
|
||||||
|
root_->Add(tabHolder);
|
||||||
|
|
||||||
|
// TODO: These currently point to global settings, not game specific ones.
|
||||||
|
|
||||||
|
// Graphics
|
||||||
|
ViewGroup *graphicsSettingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
|
||||||
|
LinearLayout *graphicsSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||||
|
graphicsSettings->SetSpacing(0);
|
||||||
|
graphicsSettingsScroll->Add(graphicsSettings);
|
||||||
|
tabHolder->AddTab(ms->T("Graphics"), graphicsSettingsScroll);
|
||||||
|
|
||||||
|
graphicsSettings->Add(new ItemHeader(gs->T("Rendering Mode")));
|
||||||
|
static const char *renderingMode[] = { "Non-Buffered Rendering", "Buffered Rendering", "Read Framebuffers To Memory(CPU)", "Read Framebuffers To Memory(GPU)"};
|
||||||
|
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iRenderingMode, gs->T("Mode"), renderingMode, 0, 4, gs, screenManager()));
|
||||||
|
|
||||||
|
graphicsSettings->Add(new ItemHeader(gs->T("Frame Rate Control")));
|
||||||
|
static const char *frameSkip[] = {"Off", "Auto", "1", "2", "3", "4", "5", "6", "7", "8"};
|
||||||
|
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iFrameSkip, gs->T("Frame Skipping"), frameSkip, 0, 10, gs, screenManager()));
|
||||||
|
static const char *fpsChoices[] = {"None", "Speed", "FPS", "Both"};
|
||||||
|
|
||||||
|
graphicsSettings->Add(new CheckBox(&cap60FPS_, gs->T("Force max 60 FPS (helps GoW)")));
|
||||||
|
static const char *customSpeed[] = {"Unlimited", "25%", "50%", "75%", "100%", "125%", "150%", "200%", "300%"};
|
||||||
|
graphicsSettings->Add(new PopupMultiChoice(&iAlternateSpeedPercent_, gs->T("Alternative Speed"), customSpeed, 0, 9, gs, screenManager()));
|
||||||
|
|
||||||
|
graphicsSettings->Add(new ItemHeader(gs->T("Features")));
|
||||||
|
graphicsSettings->Add(new CheckBox(&g_Config.bHardwareTransform, gs->T("Hardware Transform")));
|
||||||
|
graphicsSettings->Add(new CheckBox(&g_Config.bVertexCache, gs->T("Vertex Cache")));
|
||||||
|
graphicsSettings->Add(new CheckBox(&g_Config.bAntiAliasing, gs->T("Anti-Aliasing")));
|
||||||
|
graphicsSettings->Add(new CheckBox(&g_Config.bStretchToDisplay, gs->T("Stretch to Display")));
|
||||||
|
#ifdef BLACKBERRY
|
||||||
|
if (pixel_xres == pixel_yres)
|
||||||
|
graphicsSettings->Add(new CheckBox(&g_Config.bPartialStretch, gs->T("Partial Vertical Stretch")));
|
||||||
|
#endif
|
||||||
|
graphicsSettings->Add(new CheckBox(&g_Config.bMipMap, gs->T("Mipmapping")));
|
||||||
|
// This setting is not really useful for anyone atm.
|
||||||
|
// graphicsSettings->Add(new CheckBox(&g_Config.bTrueColor, gs->T("True Color")));
|
||||||
|
#ifdef _WIN32
|
||||||
|
graphicsSettings->Add(new CheckBox(&g_Config.bVSync, gs->T("VSync")));
|
||||||
|
graphicsSettings->Add(new CheckBox(&g_Config.bFullScreen, gs->T("FullScreen")));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
graphicsSettings->Add(new ItemHeader(gs->T("Overlay Information")));
|
||||||
|
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iShowFPSCounter, gs->T("Show FPS Counter"), fpsChoices, 0, 4, gs, screenManager()));
|
||||||
|
graphicsSettings->Add(new CheckBox(&g_Config.bShowDebugStats, gs->T("Show Debug Statistics")));
|
||||||
|
|
||||||
|
graphicsSettings->Add(new ItemHeader(gs->T("Texture Scaling")));
|
||||||
|
#ifndef USING_GLES2
|
||||||
|
static const char *texScaleLevels[] = {"Off", "2x", "3x","4x", "5x"};
|
||||||
|
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iTexScalingLevel, gs->T("Upscale Level"), texScaleLevels, 1, 5, gs, screenManager()));
|
||||||
|
#else
|
||||||
|
static const char *texScaleLevels[] = {"Off", "2x", "3x"};
|
||||||
|
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iTexScalingLevel, gs->T("Upscale Level"), texScaleLevels, 1, 3, gs, screenManager()));
|
||||||
|
#endif
|
||||||
|
static const char *texScaleAlgos[] = { "xBRZ", "Hybrid", "Bicubic", "Hybrid + Bicubic", };
|
||||||
|
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iTexScalingType, gs->T("Upscale Type"), texScaleAlgos, 0, 4, gs, screenManager()));
|
||||||
|
graphicsSettings->Add(new CheckBox(&g_Config.bTexDeposterize, gs->T("Deposterize")));
|
||||||
|
graphicsSettings->Add(new ItemHeader(gs->T("Texture Filtering")));
|
||||||
|
static const char *anisoLevels[] = { "Off", "2x", "4x", "8x", "16x" };
|
||||||
|
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iAnisotropyLevel, gs->T("Anisotropic Filtering"), anisoLevels, 0, 5, gs, screenManager()));
|
||||||
|
static const char *texFilters[] = { "Auto", "Nearest", "Linear", "Linear on FMV", };
|
||||||
|
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iTexFiltering, gs->T("Texture Filter"), texFilters, 1, 4, gs, screenManager()));
|
||||||
|
|
||||||
|
// Developer tools are not accessible ingame, so it goes here
|
||||||
|
graphicsSettings->Add(new ItemHeader(gs->T("Debugging")));
|
||||||
|
Choice *dump = graphicsSettings->Add(new Choice(gs->T("Dump next frame to log")));
|
||||||
|
dump->OnClick.Handle(this, &GameSettingsScreen::OnDumpNextFrameToLog);
|
||||||
|
if (!PSP_IsInited())
|
||||||
|
dump->SetEnabled(false);
|
||||||
|
|
||||||
|
// Audio
|
||||||
|
ViewGroup *audioSettingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
|
||||||
|
LinearLayout *audioSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||||
|
audioSettings->SetSpacing(0);
|
||||||
|
audioSettingsScroll->Add(audioSettings);
|
||||||
|
tabHolder->AddTab(ms->T("Audio"), audioSettingsScroll);
|
||||||
|
|
||||||
|
std::string atracString;
|
||||||
|
atracString.assign(Atrac3plus_Decoder::IsInstalled() ? "Redownload Atrac3+ plugin" : "Download Atrac3+ plugin");
|
||||||
|
audioSettings->Add(new ItemHeader(ms->T("Audio")));
|
||||||
|
audioSettings->Add(new Choice(a->T(atracString.c_str())))->OnClick.Handle(this, &GameSettingsScreen::OnDownloadPlugin);
|
||||||
|
|
||||||
|
audioSettings->Add(new PopupSliderChoice(&g_Config.iSFXVolume, 0, 8, a->T("SFX volume"), screenManager()));
|
||||||
|
audioSettings->Add(new PopupSliderChoice(&g_Config.iBGMVolume, 0, 8, a->T("BGM volume"), screenManager()));
|
||||||
|
|
||||||
|
audioSettings->Add(new CheckBox(&g_Config.bEnableSound, a->T("Enable Sound")));
|
||||||
|
audioSettings->Add(new CheckBox(&g_Config.bEnableAtrac3plus, a->T("Enable Atrac3+")));
|
||||||
|
audioSettings->Add(new CheckBox(&g_Config.bLowLatencyAudio, a->T("Low latency audio")));
|
||||||
|
|
||||||
|
// Control
|
||||||
|
ViewGroup *controlsSettingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
|
||||||
|
LinearLayout *controlsSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||||
|
controlsSettings->SetSpacing(0);
|
||||||
|
controlsSettingsScroll->Add(controlsSettings);
|
||||||
|
tabHolder->AddTab(ms->T("Controls"), controlsSettingsScroll);
|
||||||
|
controlsSettings->Add(new ItemHeader(ms->T("Controls")));
|
||||||
|
controlsSettings->Add(new Choice(c->T("Control Mapping")))->OnClick.Handle(this, &GameSettingsScreen::OnControlMapping);
|
||||||
|
controlsSettings->Add(new CheckBox(&g_Config.bAccelerometerToAnalogHoriz, c->T("Tilt", "Tilt to Analog (horizontal)")));
|
||||||
|
controlsSettings->Add(new ItemHeader(c->T("OnScreen", "On-Screen Touch Controls")));
|
||||||
|
controlsSettings->Add(new CheckBox(&g_Config.bShowTouchControls, c->T("OnScreen", "On-Screen Touch Controls")));
|
||||||
|
controlsSettings->Add(new PopupSliderChoice(&g_Config.iTouchButtonOpacity, 0, 85, c->T("Button Opacity"), screenManager()));
|
||||||
|
controlsSettings->Add(new PopupSliderChoiceFloat(&g_Config.fButtonScale, 1.15, 2.05, c->T("Button Scaling"), screenManager()));
|
||||||
|
controlsSettings->Add(new CheckBox(&g_Config.bShowAnalogStick, c->T("Show Left Analog Stick")));
|
||||||
|
|
||||||
|
// System
|
||||||
|
ViewGroup *systemSettingsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
|
||||||
|
LinearLayout *systemSettings = new LinearLayout(ORIENT_VERTICAL);
|
||||||
|
systemSettings->SetSpacing(0);
|
||||||
|
systemSettingsScroll->Add(systemSettings);
|
||||||
|
tabHolder->AddTab(ms->T("System"), systemSettingsScroll);
|
||||||
|
|
||||||
|
systemSettings->Add(new ItemHeader(s->T("Emulation")));
|
||||||
|
systemSettings->Add(new CheckBox(&g_Config.bFastMemory, s->T("Fast Memory", "Fast Memory (Unstable)")));
|
||||||
|
|
||||||
|
#ifdef IOS
|
||||||
|
if (isJailed) {
|
||||||
|
systemSettings->Add(new TextView(s->T("DynarecisJailed", "Dynarec (JIT) - (Not jailbroken - JIT not available)")));
|
||||||
|
} else {
|
||||||
|
systemSettings->Add(new CheckBox(&g_Config.bJit, s->T("Dynarec", "Dynarec (JIT)")));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
systemSettings->Add(new CheckBox(&g_Config.bJit, s->T("Dynarec", "Dynarec (JIT)")));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __SYMBIAN32__
|
||||||
|
systemSettings->Add(new CheckBox(&g_Config.bSeparateCPUThread, s->T("Multithreaded (experimental)")))->SetEnabled(!PSP_IsInited());
|
||||||
|
systemSettings->Add(new CheckBox(&g_Config.bSeparateIOThread, s->T("I/O on thread (experimental)")))->SetEnabled(!PSP_IsInited());
|
||||||
|
#endif
|
||||||
|
systemSettings->Add(new PopupSliderChoice(&g_Config.iLockedCPUSpeed, 0, 1000, s->T("Change CPU Clock", "Change CPU Clock (0 = default)"), screenManager()));
|
||||||
|
|
||||||
|
enableReports_ = g_Config.sReportHost != "default";
|
||||||
|
//#ifndef ANDROID
|
||||||
|
systemSettings->Add(new ItemHeader(s->T("Cheats", "Cheats (experimental, see forums)")));
|
||||||
|
systemSettings->Add(new CheckBox(&g_Config.bEnableCheats, s->T("Enable Cheats")));
|
||||||
|
//#endif
|
||||||
|
LinearLayout *list = root_->Add(new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(1.0f)));
|
||||||
|
systemSettings->SetSpacing(0);
|
||||||
|
systemSettings->Add(new ItemHeader(g->T("General")));
|
||||||
|
systemSettings->Add(new Choice(s->T("System Language", "Language")))->OnClick.Handle(this, &GameSettingsScreen::OnLanguage);
|
||||||
|
#ifdef _WIN32
|
||||||
|
// Screenshot functionality is not yet available on non-Windows
|
||||||
|
systemSettings->Add(new CheckBox(&g_Config.bScreenshotsAsPNG, s->T("Screenshots as PNG")));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// TODO: Come up with a way to display a keyboard for mobile users,
|
||||||
|
// so until then, this is Windows/Desktop only.
|
||||||
|
#ifdef _WIN32
|
||||||
|
systemSettings->Add(new Choice(s->T("Change Nickname")))->OnClick.Handle(this, &GameSettingsScreen::OnChangeNickname);
|
||||||
|
#endif
|
||||||
|
systemSettings->Add(new Choice(s->T("Clear Recent Games List")))->OnClick.Handle(this, &GameSettingsScreen::OnClearRecents);
|
||||||
|
systemSettings->Add(new CheckBox(&enableReports_, s->T("Enable Compatibility Server Reports")));
|
||||||
|
systemSettings->Add(new Choice(s->T("Developer Tools")))->OnClick.Handle(this, &GameSettingsScreen::OnDeveloperTools);
|
||||||
|
|
||||||
|
|
||||||
|
systemSettings->Add(new ItemHeader(s->T("PSP Settings")));
|
||||||
|
systemSettings->Add(new CheckBox(&g_Config.bDayLightSavings, s->T("Day Light Saving")));
|
||||||
|
static const char *dateFormat[] = { "YYYYMMDD", "MMDDYYYY", "DDMMYYYY"};
|
||||||
|
systemSettings->Add(new PopupMultiChoice(&g_Config.iDateFormat, s->T("Date Format"), dateFormat, 1, 3, s, screenManager()));
|
||||||
|
static const char *timeFormat[] = { "12HR", "24HR"};
|
||||||
|
systemSettings->Add(new PopupMultiChoice(&g_Config.iTimeFormat, s->T("Time Format"), timeFormat, 1, 2, s, screenManager()));
|
||||||
|
static const char *buttonPref[] = { "Use O to confirm", "Use X to confirm" };
|
||||||
|
systemSettings->Add(new PopupMultiChoice(&g_Config.iButtonPreference, s->T("Confirmation Button"), buttonPref, 0, 2, s, screenManager()));
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn GameSettingsScreen::OnClearRecents(UI::EventParams &e) {
|
||||||
|
g_Config.recentIsos.clear();
|
||||||
|
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn GameSettingsScreen::OnReloadCheats(UI::EventParams &e) {
|
||||||
|
// Hmm, strange mechanism.
|
||||||
|
g_Config.bReloadCheats = true;
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DrawBackground(float alpha);
|
||||||
|
|
||||||
|
UI::EventReturn GameSettingsScreen::OnDumpNextFrameToLog(UI::EventParams &e) {
|
||||||
|
if (gpu) {
|
||||||
|
gpu->DumpNextFrame();
|
||||||
|
}
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameSettingsScreen::DrawBackground(UIContext &dc) {
|
||||||
|
GameInfo *ginfo = g_gameInfoCache.GetInfo(gamePath_, true);
|
||||||
|
dc.Flush();
|
||||||
|
|
||||||
|
dc.RebindTexture();
|
||||||
|
::DrawBackground(1.0f);
|
||||||
|
dc.Flush();
|
||||||
|
|
||||||
|
if (ginfo && ginfo->pic1Texture) {
|
||||||
|
ginfo->pic1Texture->Bind(0);
|
||||||
|
uint32_t color = whiteAlpha(ease((time_now_d() - ginfo->timePic1WasLoaded) * 3)) & 0xFFc0c0c0;
|
||||||
|
dc.Draw()->DrawTexRect(0,0,dp_xres, dp_yres, 0,0,1,1,color);
|
||||||
|
dc.Flush();
|
||||||
|
dc.RebindTexture();
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
if (ginfo && ginfo->pic0Texture) {
|
||||||
|
ginfo->pic0Texture->Bind(0);
|
||||||
|
// Pic0 is drawn in the bottom right corner, overlaying pic1.
|
||||||
|
float sizeX = dp_xres / 480 * ginfo->pic0Texture->Width();
|
||||||
|
float sizeY = dp_yres / 272 * ginfo->pic0Texture->Height();
|
||||||
|
uint32_t color = whiteAlpha(ease((time_now_d() - ginfo->timePic1WasLoaded) * 2)) & 0xFFc0c0c0;
|
||||||
|
ui_draw2d.DrawTexRect(dp_xres - sizeX, dp_yres - sizeY, dp_xres, dp_yres, 0,0,1,1,color);
|
||||||
|
ui_draw2d.Flush();
|
||||||
|
dc.RebindTexture();
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void GameSettingsScreen::update(InputState &input) {
|
||||||
|
UIScreen::update(input);
|
||||||
|
g_Config.iForceMaxEmulatedFPS = cap60FPS_ ? 60 : 0;
|
||||||
|
g_Config.iFpsLimit = alternateSpeedTable[iAlternateSpeedPercent_];
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn GameSettingsScreen::OnDownloadPlugin(UI::EventParams &e) {
|
||||||
|
screenManager()->push(new PluginScreen());
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn GameSettingsScreen::OnBack(UI::EventParams &e) {
|
||||||
|
screenManager()->finishDialog(this, DR_OK);
|
||||||
|
|
||||||
|
if(g_Config.bEnableSound) {
|
||||||
|
if(PSP_IsInited() && !IsAudioInitialised())
|
||||||
|
Audio_Init();
|
||||||
|
}
|
||||||
|
// It doesn't matter if audio is inited or not, it'll still output no sound
|
||||||
|
// if the mixer isn't available, so go ahead and init/shutdown at our leisure.
|
||||||
|
if(Atrac3plus_Decoder::IsInstalled()) {
|
||||||
|
if(g_Config.bEnableAtrac3plus)
|
||||||
|
Atrac3plus_Decoder::Init();
|
||||||
|
else Atrac3plus_Decoder::Shutdown();
|
||||||
|
}
|
||||||
|
g_Config.sReportHost = enableReports_ ? "report.ppsspp.org" : "default";
|
||||||
|
g_Config.Save();
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
PostMessage(MainWindow::hwndMain, MainWindow::WM_USER_ATRAC_STATUS_CHANGED, 0, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
KeyMap::UpdateConfirmCancelKeys();
|
||||||
|
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
void GlobalSettingsScreen::CreateViews() {
|
||||||
|
using namespace UI;
|
||||||
|
root_ = new ScrollView(ORIENT_VERTICAL);
|
||||||
|
|
||||||
|
enableReports_ = g_Config.sReportHost != "";
|
||||||
|
}*/
|
||||||
|
|
||||||
|
UI::EventReturn GameSettingsScreen::OnChangeNickname(UI::EventParams &e) {
|
||||||
|
#ifdef _WIN32
|
||||||
|
|
||||||
|
const size_t name_len = 256;
|
||||||
|
|
||||||
|
char name[name_len];
|
||||||
|
memset(name, 0, sizeof(name));
|
||||||
|
|
||||||
|
if (host->InputBoxGetString("Enter a new PSP nickname", g_Config.sNickName.c_str(), name, name_len)) {
|
||||||
|
g_Config.sNickName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn GameSettingsScreen::OnFactoryReset(UI::EventParams &e) {
|
||||||
|
screenManager()->push(new PluginScreen());
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn GameSettingsScreen::OnLanguage(UI::EventParams &e) {
|
||||||
|
screenManager()->push(new NewLanguageScreen());
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn GameSettingsScreen::OnDeveloperTools(UI::EventParams &e) {
|
||||||
|
screenManager()->push(new DeveloperToolsScreen());
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn GameSettingsScreen::OnControlMapping(UI::EventParams &e) {
|
||||||
|
screenManager()->push(new ControlMappingScreen());
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeveloperToolsScreen::CreateViews() {
|
||||||
|
using namespace UI;
|
||||||
|
root_ = new ScrollView(ORIENT_VERTICAL);
|
||||||
|
|
||||||
|
enableLogging_ = g_Config.bEnableLogging;
|
||||||
|
|
||||||
|
I18NCategory *g = GetI18NCategory("General");
|
||||||
|
I18NCategory *d = GetI18NCategory("Developer");
|
||||||
|
I18NCategory *gs = GetI18NCategory("Graphics");
|
||||||
|
I18NCategory *a = GetI18NCategory("Audio");
|
||||||
|
|
||||||
|
LinearLayout *list = root_->Add(new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(1.0f)));
|
||||||
|
list->SetSpacing(0);
|
||||||
|
list->Add(new ItemHeader(g->T("General")));
|
||||||
|
list->Add(new Choice(d->T("System Information")))->OnClick.Handle(this, &DeveloperToolsScreen::OnSysInfo);
|
||||||
|
list->Add(new Choice(d->T("Run CPU Tests")))->OnClick.Handle(this, &DeveloperToolsScreen::OnRunCPUTests);
|
||||||
|
list->Add(new Choice(d->T("Restore Default Settings")))->OnClick.Handle(this, &DeveloperToolsScreen::OnRestoreDefaultSettings);
|
||||||
|
#ifndef __SYMBIAN32__
|
||||||
|
list->Add(new CheckBox(&g_Config.bSoftwareRendering, gs->T("Software Rendering", "Software Rendering (experimental)")));
|
||||||
|
#endif
|
||||||
|
list->Add(new CheckBox(&enableLogging_, d->T("Enable Logging")))->OnClick.Handle(this, &DeveloperToolsScreen::OnLoggingChanged);
|
||||||
|
list->Add(new ItemHeader(g->T("Language")));
|
||||||
|
list->Add(new Choice(d->T("Load language ini")))->OnClick.Handle(this, &DeveloperToolsScreen::OnLoadLanguageIni);
|
||||||
|
list->Add(new Choice(d->T("Save language ini")))->OnClick.Handle(this, &DeveloperToolsScreen::OnSaveLanguageIni);
|
||||||
|
list->Add(new Choice(g->T("Back")))->OnClick.Handle(this, &DeveloperToolsScreen::OnBack);
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn DeveloperToolsScreen::OnBack(UI::EventParams &e) {
|
||||||
|
screenManager()->finishDialog(this, DR_OK);
|
||||||
|
|
||||||
|
g_Config.bEnableLogging = enableLogging_;
|
||||||
|
#ifdef _WIN32
|
||||||
|
PostMessage(MainWindow::hwndMain, MainWindow::WM_USER_LOG_STATUS_CHANGED, 0, 0);
|
||||||
|
#endif
|
||||||
|
g_Config.Save();
|
||||||
|
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeveloperToolsScreen::CallbackRestoreDefaults(bool yes) {
|
||||||
|
if(yes)
|
||||||
|
g_Config.RestoreDefaults();
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn DeveloperToolsScreen::OnRestoreDefaultSettings(UI::EventParams &e) {
|
||||||
|
I18NCategory *d = GetI18NCategory("Dialog");
|
||||||
|
I18NCategory *g = GetI18NCategory("General");
|
||||||
|
screenManager()->push(
|
||||||
|
new PromptScreen(d->T("RestoreDefaultSettings", "Are you sure you want to restore all settings(except control mapping) back to their defaults?\nYou can't undo this.\nPlease restart PPSSPP after restoring settings."), g->T("OK"), g->T("Cancel"),
|
||||||
|
std::bind(&DeveloperToolsScreen::CallbackRestoreDefaults, this, placeholder::_1)));
|
||||||
|
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn DeveloperToolsScreen::OnLoggingChanged(UI::EventParams &e) {
|
||||||
|
#ifdef _WIN32
|
||||||
|
PostMessage(MainWindow::hwndMain, MainWindow::WM_USER_LOG_STATUS_CHANGED, 0, 0);
|
||||||
|
#endif
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn DeveloperToolsScreen::OnSysInfo(UI::EventParams &e) {
|
||||||
|
screenManager()->push(new SystemInfoScreen());
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn DeveloperToolsScreen::OnRunCPUTests(UI::EventParams &e) {
|
||||||
|
RunTests();
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn DeveloperToolsScreen::OnSaveLanguageIni(UI::EventParams &e) {
|
||||||
|
i18nrepo.SaveIni(g_Config.languageIni);
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn DeveloperToolsScreen::OnLoadLanguageIni(UI::EventParams &e) {
|
||||||
|
i18nrepo.LoadIni(g_Config.languageIni);
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
265
Windows/enc_temp_folder/enc208.tmp
Normal file
265
Windows/enc_temp_folder/enc208.tmp
Normal file
@ -0,0 +1,265 @@
|
|||||||
|
// Copyright (c) 2012- PPSSPP Project.
|
||||||
|
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, version 2.0 or later versions.
|
||||||
|
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License 2.0 for more details.
|
||||||
|
|
||||||
|
// A copy of the GPL 2.0 should have been included with the program.
|
||||||
|
// If not, see http://www.gnu.org/licenses/
|
||||||
|
|
||||||
|
// Official git repository and contact information can be found at
|
||||||
|
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
|
||||||
|
|
||||||
|
#include "android/app-android.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include "input/input_state.h"
|
||||||
|
#include "ui/ui.h"
|
||||||
|
#include "i18n/i18n.h"
|
||||||
|
|
||||||
|
#include "Core/Core.h"
|
||||||
|
|
||||||
|
#include "UI/OnScreenDisplay.h"
|
||||||
|
#include "UI/ui_atlas.h"
|
||||||
|
#include "UI/GamepadEmu.h"
|
||||||
|
#include "UI/UIShader.h"
|
||||||
|
|
||||||
|
#include "UI/MainScreen.h"
|
||||||
|
#include "UI/EmuScreen.h"
|
||||||
|
#include "UI/GameInfoCache.h"
|
||||||
|
#include "UI/MiscScreens.h"
|
||||||
|
#include "UI/CwCheatScreen.h"
|
||||||
|
|
||||||
|
bool enableAll = false;
|
||||||
|
static std::vector<std::string> cheatList;
|
||||||
|
extern void DrawBackground(float alpha);
|
||||||
|
static CWCheatEngine *cheatEngine2;
|
||||||
|
static bool enableCheat [64];
|
||||||
|
|
||||||
|
std::vector<std::string> CwCheatScreen::CreateCodeList() {
|
||||||
|
cheatEngine2 = new CWCheatEngine();
|
||||||
|
cheatList = cheatEngine2->GetCodesList();
|
||||||
|
int j = 0;
|
||||||
|
for (size_t i = 0; i < cheatList.size(); i++) {
|
||||||
|
if (cheatList[i].substr(0, 3) == "_C1") {
|
||||||
|
formattedList.push_back(cheatList[i].substr(4));
|
||||||
|
enableCheat[j++] = true;
|
||||||
|
locations.push_back(i);
|
||||||
|
}
|
||||||
|
if (cheatList[i].substr(0, 3) == "_C0") {
|
||||||
|
formattedList.push_back(cheatList[i].substr(4));
|
||||||
|
enableCheat[j++] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
delete cheatEngine2;
|
||||||
|
return formattedList;
|
||||||
|
}
|
||||||
|
void CwCheatScreen::CreateViews() {
|
||||||
|
using namespace UI;
|
||||||
|
std::vector<std::string> formattedList;
|
||||||
|
I18NCategory *k = GetI18NCategory("CwCheats");
|
||||||
|
formattedList = CreateCodeList();
|
||||||
|
root_ = new LinearLayout(ORIENT_HORIZONTAL);
|
||||||
|
Margins actionMenuMargins(50, 100, 100, 50);
|
||||||
|
|
||||||
|
LinearLayout *leftColumn = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(400, FILL_PARENT));
|
||||||
|
leftColumn->Add(new ItemHeader(k->T("Options")));
|
||||||
|
leftColumn->Add(new Choice(k->T("Back")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnBack);
|
||||||
|
//leftColumn->Add(new Choice(k->T("Add Cheat")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnAddCheat);
|
||||||
|
leftColumn->Add(new Choice(k->T("ImportC")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnImportCheat);
|
||||||
|
leftColumn->Add(new Choice(k->T("Enable/Disable All")))->OnClick.Handle<CwCheatScreen>(this, &CwCheatScreen::OnEnableAll);
|
||||||
|
|
||||||
|
|
||||||
|
ScrollView *rightScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(0.5f));
|
||||||
|
rightScroll->SetScrollToTop(false);
|
||||||
|
LinearLayout *rightColumn = new LinearLayout(ORIENT_VERTICAL, new LinearLayoutParams(200, FILL_PARENT, actionMenuMargins));
|
||||||
|
LayoutParams *layout = new LayoutParams(500, 50, LP_PLAIN);
|
||||||
|
rightScroll->Add(rightColumn);
|
||||||
|
|
||||||
|
root_->Add(leftColumn);
|
||||||
|
root_->Add(rightScroll);
|
||||||
|
rightColumn->Add(new ItemHeader(k->T("Cheats")));
|
||||||
|
for (size_t i = 0; i < formattedList.size(); i++) {
|
||||||
|
name = formattedList[i].c_str();
|
||||||
|
rightColumn->Add(new CheatCheckBox(&enableCheat[i], k->T(name), "" ))->OnClick.Handle(this, &CwCheatScreen::OnCheckBox);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
UI::EventReturn CwCheatScreen::OnBack(UI::EventParams ¶ms)
|
||||||
|
{
|
||||||
|
screenManager()->finishDialog(this, DR_OK);
|
||||||
|
os.open(activeCheatFile.c_str());
|
||||||
|
for (int j = 0; j < cheatList.size(); j++) {
|
||||||
|
os << cheatList[j];
|
||||||
|
if (j < cheatList.size() - 1) {
|
||||||
|
os << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os.close();
|
||||||
|
g_Config.bReloadCheats = true;
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
UI::EventReturn CwCheatScreen::OnEnableAll(UI::EventParams ¶ms)
|
||||||
|
{
|
||||||
|
std::vector<std::string> temp = cheatList;
|
||||||
|
enableAll = !enableAll;
|
||||||
|
os.open(activeCheatFile.c_str());
|
||||||
|
for (int j = 0; j < temp.size(); j++) {
|
||||||
|
if (enableAll == 1 && temp[j].substr(0, 3) == "_C0"){
|
||||||
|
temp[j].replace(0,3,"_C1");
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (enableAll == 0 && temp[j].substr(0, 3) == "_C1") {
|
||||||
|
temp[j].replace(0, 3, "_C0");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int y = 0; y < 64; y++) {
|
||||||
|
enableCheat[y] = enableAll;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < temp.size(); i++) {
|
||||||
|
os << temp[i];
|
||||||
|
if (i < temp.size() - 1) {
|
||||||
|
os << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os.close();
|
||||||
|
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
UI::EventReturn CwCheatScreen::OnAddCheat(UI::EventParams ¶ms)
|
||||||
|
{
|
||||||
|
screenManager()->finishDialog(this, DR_OK);
|
||||||
|
g_Config.bReloadCheats = true;
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
UI::EventReturn CwCheatScreen::OnImportCheat(UI::EventParams ¶ms)
|
||||||
|
{
|
||||||
|
std::string line;
|
||||||
|
bool finished = false, skip = false;
|
||||||
|
std::vector<std::string> newList;
|
||||||
|
#ifdef ANDROID
|
||||||
|
is.open(g_Config.memCardDirectory + "PSP/Cheats/cheat.db");
|
||||||
|
#else
|
||||||
|
is.open("cheats/cheat.db");
|
||||||
|
#endif
|
||||||
|
os.open(activeCheatFile.c_str(),std::ios::app);
|
||||||
|
while (is.good())
|
||||||
|
{
|
||||||
|
getline(is, line); // get line from file
|
||||||
|
if (line == "_S " + gameTitle.substr(0, 4) + "-" + gameTitle.substr(4))
|
||||||
|
{
|
||||||
|
getline(is, line);
|
||||||
|
getline(is, line);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (finished == false){
|
||||||
|
getline(is, line);
|
||||||
|
}
|
||||||
|
if (line.substr(0, 3) == "_C0")
|
||||||
|
{
|
||||||
|
//Test if cheat already exists in cheatList
|
||||||
|
for (int j = 0; j < formattedList.size(); j++) {
|
||||||
|
if (line.substr(4) == formattedList[j]) {
|
||||||
|
finished = false;
|
||||||
|
goto loop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
newList.push_back(line);
|
||||||
|
getline(is, line);
|
||||||
|
do {
|
||||||
|
newList.push_back(line);
|
||||||
|
getline(is, line);
|
||||||
|
} while (line.substr(0, 2) == "_L");
|
||||||
|
finished = true;
|
||||||
|
}
|
||||||
|
else { continue; }
|
||||||
|
loop:;
|
||||||
|
} while (line.substr(0, 2) != "_S");
|
||||||
|
finished = true;
|
||||||
|
}
|
||||||
|
if (finished == true)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (newList.size() != 0)
|
||||||
|
{
|
||||||
|
os << "\n";
|
||||||
|
}
|
||||||
|
for (int i = 0; i < newList.size(); i++) {
|
||||||
|
os << newList[i];
|
||||||
|
if (i < newList.size() - 1) {
|
||||||
|
os << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os.close();
|
||||||
|
is.close();
|
||||||
|
g_Config.bReloadCheats = true;
|
||||||
|
//Need a better way to refresh the screen, rather than exiting and having to re-enter.
|
||||||
|
screenManager()->finishDialog(this, DR_OK);
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
UI::EventReturn CwCheatScreen::OnCheckBox(UI::EventParams ¶ms) {
|
||||||
|
|
||||||
|
return UI::EVENT_DONE;
|
||||||
|
}
|
||||||
|
void CwCheatScreen::processFileOn(std::string activatedCheat) {
|
||||||
|
|
||||||
|
for (int i = 0; i < cheatList.size(); i++) {
|
||||||
|
if (cheatList[i].substr(4) == activatedCheat) {
|
||||||
|
cheatList[i] = "_C1 " + activatedCheat;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
os.open(activeCheatFile.c_str());
|
||||||
|
for (int j = 0; j < cheatList.size(); j++) {
|
||||||
|
os << cheatList[j];
|
||||||
|
if (j < cheatList.size() - 1) {
|
||||||
|
os << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os.close();
|
||||||
|
|
||||||
|
}
|
||||||
|
void CwCheatScreen::processFileOff(std::string deactivatedCheat) {
|
||||||
|
|
||||||
|
for (int i = 0; i < cheatList.size(); i++) {
|
||||||
|
if (cheatList[i].substr(4) == deactivatedCheat) {
|
||||||
|
cheatList[i] = "_C0 " + deactivatedCheat;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
os.open(activeCheatFile.c_str());
|
||||||
|
for (int j = 0; j < cheatList.size(); j++) {
|
||||||
|
os << cheatList[j];
|
||||||
|
if (j < cheatList.size() - 1) {
|
||||||
|
os << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
os.close();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheatCheckBox::Draw(UIContext &dc) {
|
||||||
|
ClickableItem::Draw(dc);
|
||||||
|
int paddingX = 16;
|
||||||
|
int paddingY = 12;
|
||||||
|
|
||||||
|
int image = *toggle_ ? dc.theme->checkOn : dc.theme->checkOff;
|
||||||
|
|
||||||
|
Style style = dc.theme->itemStyle;
|
||||||
|
if (!IsEnabled())
|
||||||
|
style = dc.theme->itemDisabledStyle;
|
||||||
|
|
||||||
|
dc.Draw()->DrawText(dc.theme->uiFont, text_.c_str(), bounds_.x + paddingX, bounds_.centerY(), style.fgColor, ALIGN_VCENTER);
|
||||||
|
dc.Draw()->DrawImage(image, bounds_.x2() - paddingX, bounds_.centerY(), 1.0f, style.fgColor, ALIGN_RIGHT | ALIGN_VCENTER);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user