summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/core/Frontend.cpp37
-rw-r--r--src/core/Game.cpp5
-rw-r--r--src/core/common.h4
-rw-r--r--src/core/config.h7
-rw-r--r--src/core/main.h5
-rw-r--r--src/core/re3.cpp113
-rw-r--r--src/extras/frontendoption.cpp6
-rw-r--r--src/extras/frontendoption.h10
-rw-r--r--src/skel/crossplatform.cpp10
-rw-r--r--src/skel/glfw/glfw.cpp27
-rw-r--r--src/skel/win/win.cpp2
-rw-r--r--src/text/Text.cpp2
12 files changed, 150 insertions, 78 deletions
diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp
index 2cb27730..db3774a7 100644
--- a/src/core/Frontend.cpp
+++ b/src/core/Frontend.cpp
@@ -3450,21 +3450,6 @@ CMenuManager::LoadSettings()
CFileMgr::Read(fileHandle, m_PrefsSkinFile, 256);
CFileMgr::Read(fileHandle, (char*)&m_ControlMethod, 1);
CFileMgr::Read(fileHandle, (char*)&m_PrefsLanguage, 1);
-/*
-#ifdef CUSTOM_FRONTEND_OPTIONS
- for (int i = 0; i < numCustomFrontendOptions; i++) {
- FrontendOption& option = customFrontendOptions[i];
- if (option.save) {
- CFileMgr::Read(fileHandle, (char*)option.value, 1);
- option.lastSavedValue = option.displayedValue = *option.value;
- }
- }
-#endif
-#ifdef NO_ISLAND_LOADING
- CFileMgr::Read(fileHandle, (char *)&CMenuManager::m_PrefsIslandLoading, 1);
- CMenuManager::m_DisplayIslandLoading = CMenuManager::m_PrefsIslandLoading;
-#endif
-*/
}
}
@@ -3481,8 +3466,11 @@ CMenuManager::LoadSettings()
m_bLanguageLoaded = false;
else {
m_bLanguageLoaded = true;
+ // Already called in InitialiseChangedLanguageSettings
+ /*
TheText.Unload();
TheText.Load();
+ */
m_bFrontEnd_ReloadObrTxtGxt = true;
InitialiseChangedLanguageSettings();
@@ -3555,23 +3543,14 @@ CMenuManager::SaveSettings()
CFileMgr::Write(fileHandle, m_PrefsSkinFile, 256);
CFileMgr::Write(fileHandle, (char*)&m_ControlMethod, 1);
CFileMgr::Write(fileHandle, (char*)&m_PrefsLanguage, 1);
-/*
-#ifdef CUSTOM_FRONTEND_OPTIONS
- for (int i = 0; i < numCustomFrontendOptions; i++) {
- FrontendOption &option = customFrontendOptions[i];
- if (option.save) {
- CFileMgr::Write(fileHandle, (char*)option.value, 1);
- }
- }
-#endif
-#ifdef NO_ISLAND_LOADING
- CFileMgr::Write(fileHandle, (char *)&CMenuManager::m_PrefsIslandLoading, 1);
-#endif
-*/
}
CFileMgr::CloseFile(fileHandle);
CFileMgr::SetDir("");
+
+#ifdef LOAD_INI_SETTINGS
+ SaveINISettings();
+#endif
}
bool DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha);
@@ -6332,4 +6311,4 @@ CMenuManager::ConstructStatLine(int rowIdx)
#undef GetBackJustDown
#undef ChangeScreen
-#endif \ No newline at end of file
+#endif
diff --git a/src/core/Game.cpp b/src/core/Game.cpp
index bb9df1a2..93f0d1b0 100644
--- a/src/core/Game.cpp
+++ b/src/core/Game.cpp
@@ -295,10 +295,15 @@ bool CGame::InitialiseOnceAfterRW(void)
CWorld::Players[0].SetPlayerSkin(CMenuManager::m_PrefsSkinFile);
#ifdef CUSTOM_FRONTEND_OPTIONS
+ // Apparently this func. can be run multiple times at the start.
if (numCustomFrontendOptions == 0 && numCustomFrontendScreens == 0) {
+ // needs stored language and TheText to be loaded, and last TheText reload is at the start of here
CustomFrontendOptionsPopulate();
}
#endif
+#ifdef LOAD_INI_SETTINGS
+ LoadINISettings(); // needs frontend options to be loaded
+#endif
return true;
}
diff --git a/src/core/common.h b/src/core/common.h
index 9b5c2369..ef3da265 100644
--- a/src/core/common.h
+++ b/src/core/common.h
@@ -219,6 +219,8 @@ public:
extern int strcasecmp(const char *str1, const char *str2);
#endif
+extern wchar *AllocUnicode(const char*src);
+
#define clamp(v, low, high) ((v)<(low) ? (low) : (v)>(high) ? (high) : (v))
inline float sq(float x) { return x*x; }
@@ -444,4 +446,4 @@ inline T *WriteSaveBuf(uint8 *&buf, const T &value)
assert(ReadSaveBuf<uint32>(buf) == size);
-void cprintf(char*, ...); \ No newline at end of file
+void cprintf(char*, ...);
diff --git a/src/core/config.h b/src/core/config.h
index 0f3cb2ef..171c6be9 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -198,6 +198,7 @@ enum Config {
#define FIX_BUGS // fixes bugs that we've came across during reversing, TODO: use this more
#define MORE_LANGUAGES // Add more translations to the game
#define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible
+#define LOAD_INI_SETTINGS
// Rendering/display
#define ASPECT_RATIO_SCALE // Not just makes everything scale with aspect ratio, also adds support for all aspect ratios
@@ -226,8 +227,8 @@ enum Config {
#if !defined(RW_GL3) && defined(_WIN32)
#define XINPUT
#endif
-#if defined(RW_GL3) && !defined(__SWITCH__) // TODO
-#define DONT_TRUST_RECOGNIZED_JOYSTICKS // Then we'll only rely on GLFW gamepad DB, and want user to enter Cpntroller->Detect joysticks if his joystick isn't on that list.
+#if !defined(_WIN32) && !defined(__SWITCH__)
+#define DONT_TRUST_RECOGNIZED_JOYSTICKS // Then we'll only rely on GLFW gamepad DB, and expect user to enter Controller->Detect joysticks if his joystick isn't on that list.
#endif
#define DETECT_PAD_INPUT_SWITCH // Adds automatic switch of pad related stuff between controller and kb/m
#define KANGAROO_CHEAT
@@ -309,4 +310,4 @@ enum Config {
#undef NO_ISLAND_LOADING
#define PC_PARTICLE
#define VC_PED_PORTS // To not process collisions always. But should be tested if that's really beneficial
-#endif \ No newline at end of file
+#endif
diff --git a/src/core/main.h b/src/core/main.h
index 96fbef05..7eb080cb 100644
--- a/src/core/main.h
+++ b/src/core/main.h
@@ -36,3 +36,8 @@ void ResetLoadingScreenBar(void);
#ifndef MASTER
void TheModelViewer(void);
#endif
+
+#ifdef LOAD_INI_SETTINGS
+void LoadINISettings();
+void SaveINISettings();
+#endif
diff --git a/src/core/re3.cpp b/src/core/re3.cpp
index b892ca36..069320ec 100644
--- a/src/core/re3.cpp
+++ b/src/core/re3.cpp
@@ -1,6 +1,7 @@
#include <csignal>
#define WITHWINDOWS
#include "common.h"
+#include "platform.h"
#include "crossplatform.h"
#include "Renderer.h"
#include "Credits.h"
@@ -16,7 +17,6 @@
#include "Heli.h"
#include "Automobile.h"
#include "Ped.h"
-#include "Particle.h"
#include "Console.h"
#include "Debug.h"
#include "Hud.h"
@@ -32,15 +32,12 @@
#include "MBlur.h"
#include "postfx.h"
#include "custompipes.h"
-#include "ControllerConfig.h"
#ifndef _WIN32
#include "assert.h"
#include <stdarg.h>
#endif
-#include <list>
-
#ifdef RWLIBS
extern "C" int vsprintf(char* const _Buffer, char const* const _Format, va_list _ArgList);
#endif
@@ -74,7 +71,6 @@ mysrand(unsigned int seed)
#ifdef CUSTOM_FRONTEND_OPTIONS
#include "frontendoption.h"
-#include "platform.h"
#include "Font.h"
void ReloadFrontendOptions(void)
@@ -196,7 +192,7 @@ wchar* MultiSamplingDraw(bool *disabled, bool userHovering) {
return unicodeTemp;
}
}
-char* multisamplingKey = "MultiSampling";
+const char* multisamplingKey = "MultiSampling";
#endif
#ifdef MORE_LANGUAGES
@@ -249,8 +245,7 @@ void FreeCamChange(int8 displayedValue)
TheCamera.bFreeCam = !!displayedValue;
FrontEndMenuManager.SaveSettings();
}
-const wchar* freeCamText = (wchar*)L"FREE CAM";
-char* freeCamKey = "FreeCam";
+const char* freeCamKey = "FreeCam";
#endif
#ifdef CUTSCENE_BORDERS_SWITCH
@@ -259,7 +254,7 @@ void BorderModeChange(int8 displayedValue)
CMenuManager::m_PrefsCutsceneBorders = !!displayedValue;
FrontEndMenuManager.SaveSettings();
}
-char* cutsceneBordersKey = "CutsceneBorders";
+const char* cutsceneBordersKey = "CutsceneBorders";
#endif
#ifdef PS2_ALPHA_TEST
@@ -268,13 +263,10 @@ void PS2AlphaTestChange(int8 displayedValue)
gPS2alphaTest = !!displayedValue;
FrontEndMenuManager.SaveSettings();
}
-char* ps2alphaKey = "PS2AlphaTest";
+const char* ps2alphaKey = "PS2AlphaTest";
#endif
#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
-const wchar* detectJoystickText = (wchar*)L"Detect Joystick";
-const wchar* detectJoystickExplanation = (wchar*)L"Press any key on your preferred joystick that you would like to use on the game.";
-const wchar* detectedJoystickText = (wchar*)L"Detected Joystick";
wchar selectedJoystickUnicode[128];
wchar* DetectJoystickDraw(bool* disabled, bool userHovering) {
@@ -287,7 +279,6 @@ wchar* DetectJoystickDraw(bool* disabled, bool userHovering) {
const uint8* buttons = glfwGetJoystickButtons(i, &numButtons);
for (int j = 0; j < numButtons; j++) {
if (buttons[j]) {
- strcpy(gSelectedJoystickName, joyname);
found = i;
break;
}
@@ -303,17 +294,21 @@ wchar* DetectJoystickDraw(bool* disabled, bool userHovering) {
else
PSGLOBAL(joy2id) = -1;
+ strcpy(gSelectedJoystickName, joyname);
PSGLOBAL(joy1id) = found;
}
}
- AsciiToUnicode(gSelectedJoystickName, selectedJoystickUnicode);
+ if (PSGLOBAL(joy1id) == -1)
+ AsciiToUnicode("Not found", selectedJoystickUnicode);
+ else
+ AsciiToUnicode(gSelectedJoystickName, selectedJoystickUnicode);
return selectedJoystickUnicode;
}
#endif
// Important: Make sure to read the warnings/informations in frontendoption.h!!
-// If you won't use GXT entry as text, you may want to declare them globally, to not alloc them on each reload. (static declared texts has some problems on Linux etc.)
+// If you will hardcode any text, please use AllocUnicode! wchar_t size differs between platforms
void
CustomFrontendOptionsPopulate(void)
{
@@ -416,7 +411,7 @@ CustomFrontendOptionsPopulate(void)
#ifdef FREE_CAM
SWITCH_TO_DISPLAY_MENU
- FrontendOptionAddSelect(freeCamText, off_on, 2, (int8*)&TheCamera.bFreeCam, false, FreeCamChange, nil, freeCamKey);
+ FrontendOptionAddSelect(TheText.Get("FEC_FRC"), off_on, 2, (int8*)&TheCamera.bFreeCam, false, FreeCamChange, nil, freeCamKey);
#endif
CLONE_OPTION(TheText.Get("FED_SUB"), MENUACTION_SUBTITLES, nil, nil);
@@ -433,24 +428,96 @@ CustomFrontendOptionsPopulate(void)
#endif
ADD_RESTORE_DEFAULTS(RestoreDefDisplay)
- ADD_BACK
+ ADD_BACK
#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
- int detectJoystickMenu = FrontendScreenAdd("FET_CON", MENUSPRITE_MAINMENU, MENUPAGE_CONTROLLER_PC, 50, 60, 20,
+ int detectJoystickMenu = FrontendScreenAdd("FEC_JOD", MENUSPRITE_MAINMENU, MENUPAGE_CONTROLLER_PC, 40, 60, 20,
FONT_BANK, MEDIUMTEXT_X_SCALE, MEDIUMTEXT_Y_SCALE, FESCREEN_LEFT_ALIGN, false);
FrontendOptionSetCursor(detectJoystickMenu, 0);
- FrontendOptionAddBuiltinAction(detectJoystickExplanation, MENUACTION_LABEL, nil, nil);
- FrontendOptionAddDynamic(detectedJoystickText, DetectJoystickDraw, nil, nil, nil);
+ FrontendOptionAddBuiltinAction(TheText.Get("FEC_JPR"), MENUACTION_LABEL, nil, nil);
+ FrontendOptionAddDynamic(TheText.Get("FEC_JDE"), DetectJoystickDraw, nil, nil, nil);
FrontendOptionAddBackButton(TheText.Get("FEDS_TB"));
FrontendOptionSetCursor(MENUPAGE_CONTROLLER_PC, 2);
- FrontendOptionAddRedirect(detectJoystickText, detectJoystickMenu, 1);
+ FrontendOptionAddRedirect(TheText.Get("FEC_JOD"), detectJoystickMenu, 1);
#endif
}
#endif
+#ifdef LOAD_INI_SETTINGS
+#include "ini_parser.hpp"
+void LoadINISettings()
+{
+ linb::ini cfg;
+ cfg.load_file("re3.ini");
+ char defaultStr[4];
+
+#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+ strcpy(gSelectedJoystickName, cfg.get("DetectJoystick", "JoystickName", "").c_str());
+ _InputInitialiseJoys();
+#endif
+
+#ifdef CUSTOM_FRONTEND_OPTIONS
+ for (int i = 0; i < numCustomFrontendOptions; i++) {
+ FrontendOption& option = customFrontendOptions[i];
+ if (option.save) {
+ // CFO only supports saving uint8 right now
+ sprintf(defaultStr, "%u", *option.value);
+ option.lastSavedValue = option.displayedValue = *option.value = atoi(cfg.get("FrontendOptions", option.save, defaultStr).c_str());
+ }
+ }
+#endif
+
+#ifdef NO_ISLAND_LOADING
+ sprintf(defaultStr, "%u", CMenuManager::m_PrefsIslandLoading);
+ CMenuManager::m_PrefsIslandLoading = atoi(cfg.get("FrontendOptions", "NoIslandLoading", defaultStr).c_str());
+ CMenuManager::m_DisplayIslandLoading = CMenuManager::m_PrefsIslandLoading;
+#endif
+
+}
+
+void SaveINISettings()
+{
+ linb::ini cfg;
+ cfg.load_file("re3.ini");
+ bool changed = false;
+ char temp[4];
+
+#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
+ if (strncmp(cfg.get("DetectJoystick", "JoystickName", "").c_str(), gSelectedJoystickName, strlen(gSelectedJoystickName)) != 0) {
+ changed = true;
+ cfg.set("DetectJoystick", "JoystickName", gSelectedJoystickName);
+ }
+#endif
+#ifdef CUSTOM_FRONTEND_OPTIONS
+ for (int i = 0; i < numCustomFrontendOptions; i++) {
+ FrontendOption &option = customFrontendOptions[i];
+ if (option.save) {
+ if (atoi(cfg.get("FrontendOptions", option.save, "xxx").c_str()) != *option.value) { // if .ini doesn't have that key compare with xxx, so we can add it
+ changed = true;
+ sprintf(temp, "%u", *option.value);
+ cfg.set("FrontendOptions", option.save, temp);
+ }
+ }
+ }
+#endif
+#ifdef NO_ISLAND_LOADING
+ if (atoi(cfg.get("FrontendOptions", "NoIslandLoading", "xxx").c_str()) != CMenuManager::m_PrefsIslandLoading) {
+ changed = true;
+ sprintf(temp, "%u", CMenuManager::m_PrefsIslandLoading);
+ cfg.set("FrontendOptions", "NoIslandLoading", temp);
+ }
+#endif
+
+ if (changed)
+ cfg.write_file("re3.ini");
+}
+
+#endif
+
+
#ifdef DEBUGMENU
void WeaponCheat();
void HealthCheat();
@@ -598,6 +665,8 @@ static const char *carnames[] = {
"yankee", "escape", "borgnine", "toyz", "ghost",
};
+//#include <list>
+
static CTweakVar** TweakVarsList;
static int TweakVarsListSize = -1;
static bool bAddTweakVarsNow = false;
diff --git a/src/extras/frontendoption.cpp b/src/extras/frontendoption.cpp
index 70d444de..ed8aa2a9 100644
--- a/src/extras/frontendoption.cpp
+++ b/src/extras/frontendoption.cpp
@@ -216,7 +216,7 @@ void FrontendOptionAddBuiltinAction(const wchar* leftText, int action, ButtonPre
option.save = nil;
}
-void FrontendOptionAddSelect(const wchar* leftText, const wchar** rightTexts, int8 numRightTexts, int8 *var, bool onlyApplyOnEnter, ChangeFunc changeFunc, ReturnPrevPageFunc returnPrevPageFunc, char* saveName)
+void FrontendOptionAddSelect(const wchar* leftText, const wchar** rightTexts, int8 numRightTexts, int8 *var, bool onlyApplyOnEnter, ChangeFunc changeFunc, ReturnPrevPageFunc returnPrevPageFunc, const char* saveName)
{
int8 screenOptionOrder = RegisterNewOption();
@@ -236,7 +236,7 @@ void FrontendOptionAddSelect(const wchar* leftText, const wchar** rightTexts, in
option.returnPrevPageFunc = returnPrevPageFunc;
}
-void FrontendOptionAddDynamic(const wchar* leftText, DrawFunc drawFunc, int8 *var, ButtonPressFunc buttonPressFunc, ReturnPrevPageFunc returnPrevPageFunc, char* saveName)
+void FrontendOptionAddDynamic(const wchar* leftText, DrawFunc drawFunc, int8 *var, ButtonPressFunc buttonPressFunc, ReturnPrevPageFunc returnPrevPageFunc, const char* saveName)
{
int8 screenOptionOrder = RegisterNewOption();
@@ -300,4 +300,4 @@ uint8 FrontendScreenAdd(const char* gxtKey, eMenuSprites sprite, int prevPage, i
return screenOrder;
}
-#endif \ No newline at end of file
+#endif
diff --git a/src/extras/frontendoption.h b/src/extras/frontendoption.h
index f721abb0..dac6be62 100644
--- a/src/extras/frontendoption.h
+++ b/src/extras/frontendoption.h
@@ -91,11 +91,11 @@ struct FrontendOption
int8 type;
int8 screenOptionOrder;
int32 screen;
- wchar leftText[64];
+ wchar leftText[128];
ReturnPrevPageFunc returnPrevPageFunc;
int8* value;
int8 displayedValue; // only if onlyApplyOnEnter enabled for now
- char* save;
+ const char* save;
int32 ogOptionId; // for replacements, see overwrite parameter of SetCursor
union {
@@ -153,10 +153,10 @@ void FrontendOptionSetCursor(int screen, int8 option, bool overwrite = false);
// var is optional in AddDynamic, enables you to save them in an INI file(also needs passing char array to saveName param. obv), otherwise pass nil/0
void FrontendOptionAddBuiltinAction(const wchar* leftText, int action, ButtonPressFunc buttonPressFunc, ReturnPrevPageFunc returnPrevPageFunc);
-void FrontendOptionAddSelect(const wchar* leftText, const wchar** rightTexts, int8 numRightTexts, int8 *var, bool onlyApplyOnEnter, ChangeFunc changeFunc, ReturnPrevPageFunc returnPrevPageFunc, char* saveName = nil);
-void FrontendOptionAddDynamic(const wchar* leftText, DrawFunc rightTextDrawFunc, int8 *var, ButtonPressFunc buttonPressFunc, ReturnPrevPageFunc returnPrevPageFunc, char* saveName = nil);
+void FrontendOptionAddSelect(const wchar* leftText, const wchar** rightTexts, int8 numRightTexts, int8 *var, bool onlyApplyOnEnter, ChangeFunc changeFunc, ReturnPrevPageFunc returnPrevPageFunc, const char* saveName = nil);
+void FrontendOptionAddDynamic(const wchar* leftText, DrawFunc rightTextDrawFunc, int8 *var, ButtonPressFunc buttonPressFunc, ReturnPrevPageFunc returnPrevPageFunc, const char* saveName = nil);
void FrontendOptionAddRedirect(const wchar* text, int to, int8 selectedOption = 0, bool fadeIn = true);
void FrontendOptionAddBackButton(const wchar* text, bool fadeIn = true);
uint8 FrontendScreenAdd(const char* gxtKey, eMenuSprites sprite, int prevPage, int columnWidth, int headerHeight, int lineHeight, int8 font, float fontScaleX, float fontScaleY, int8 alignment, bool showLeftRightHelper, ReturnPrevPageFunc returnPrevPageFunc = nil);
-#endif \ No newline at end of file
+#endif
diff --git a/src/skel/crossplatform.cpp b/src/skel/crossplatform.cpp
index 6188992d..452ad9fa 100644
--- a/src/skel/crossplatform.cpp
+++ b/src/skel/crossplatform.cpp
@@ -84,6 +84,16 @@ void FileTimeToSystemTime(time_t* writeTime, SYSTEMTIME* out) {
}
#endif
+// Because wchar length differs between platforms.
+wchar*
+AllocUnicode(const char* src)
+{
+ wchar *dst = (wchar*)malloc(strlen(src)*2 + 2);
+ wchar *i = dst;
+ while((*i++ = (unsigned char)*src++) != '\0');
+ return dst;
+}
+
// Funcs/features from Windows that we need on other platforms
#ifndef _WIN32
char *strupr(char *s) {
diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp
index 944e87b5..cd8380b2 100644
--- a/src/skel/glfw/glfw.cpp
+++ b/src/skel/glfw/glfw.cpp
@@ -41,7 +41,6 @@
#include "AnimViewer.h"
#include "Font.h"
-
#define MAX_SUBSYSTEMS (16)
@@ -425,6 +424,10 @@ psInitialize(void)
_dwOperatingSystemVersion = OS_WIN95;
}
}
+#else
+ _dwOperatingSystemVersion = OS_WINXP; // To fool other classes
+#endif
+
#ifndef PS2_MENU
@@ -434,6 +437,8 @@ psInitialize(void)
#endif
+
+#ifdef _WIN32
MEMORYSTATUS memstats;
GlobalMemoryStatus(&memstats);
@@ -442,20 +447,10 @@ psInitialize(void)
debug("Physical memory size %u\n", memstats.dwTotalPhys);
debug("Available physical memory %u\n", memstats.dwAvailPhys);
#else
-
-#ifndef PS2_MENU
-
-#ifdef GTA3_1_1_PATCH
- FrontEndMenuManager.LoadSettings();
-#endif
-
-#endif
struct sysinfo systemInfo;
sysinfo(&systemInfo);
_dwMemAvailPhys = systemInfo.freeram;
- _dwOperatingSystemVersion = OS_WINXP; // To fool other classes
-
debug("Physical memory size %u\n", systemInfo.totalram);
debug("Available physical memory %u\n", systemInfo.freeram);
@@ -835,7 +830,7 @@ bool IsThisJoystickBlacklisted(int i)
const char* joyname = glfwGetJoystickName(i);
- if (strncmp(joyname, gSelectedJoystickName, sizeof(gSelectedJoystickName)) == 0)
+ if (strncmp(joyname, gSelectedJoystickName, strlen(gSelectedJoystickName)) == 0)
return false;
return true;
@@ -844,6 +839,9 @@ bool IsThisJoystickBlacklisted(int i)
void _InputInitialiseJoys()
{
+ PSGLOBAL(joy1id) = -1;
+ PSGLOBAL(joy2id) = -1;
+
for (int i = 0; i <= GLFW_JOYSTICK_LAST; i++) {
if (glfwJoystickPresent(i) && !IsThisJoystickBlacklisted(i)) {
if (PSGLOBAL(joy1id) == -1)
@@ -858,7 +856,9 @@ void _InputInitialiseJoys()
if (PSGLOBAL(joy1id) != -1) {
int count;
glfwGetJoystickButtons(PSGLOBAL(joy1id), &count);
+#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
strcpy(gSelectedJoystickName, glfwGetJoystickName(PSGLOBAL(joy1id)));
+#endif
ControlsManager.InitDefaultControlConfigJoyPad(count);
}
}
@@ -2067,14 +2067,15 @@ void joysChangeCB(int jid, int event)
if (event == GLFW_CONNECTED && !IsThisJoystickBlacklisted(jid)) {
if (PSGLOBAL(joy1id) == -1) {
PSGLOBAL(joy1id) = jid;
+#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS
strcpy(gSelectedJoystickName, glfwGetJoystickName(jid));
+#endif
} else if (PSGLOBAL(joy2id) == -1)
PSGLOBAL(joy2id) = jid;
} else if (event == GLFW_DISCONNECTED) {
if (PSGLOBAL(joy1id) == jid) {
PSGLOBAL(joy1id) = -1;
- strcpy(gSelectedJoystickName, "");
} else if (PSGLOBAL(joy2id) == jid)
PSGLOBAL(joy2id) = -1;
}
diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp
index 119e666e..ac46d23a 100644
--- a/src/skel/win/win.cpp
+++ b/src/skel/win/win.cpp
@@ -3378,4 +3378,4 @@ int strcasecmp(const char *str1, const char *str2)
return _strcmpi(str1, str2);
}
#endif
-#endif \ No newline at end of file
+#endif
diff --git a/src/text/Text.cpp b/src/text/Text.cpp
index 1f6cda89..a4f2af7f 100644
--- a/src/text/Text.cpp
+++ b/src/text/Text.cpp
@@ -354,4 +354,4 @@ void
TextCopy(wchar *dst, const wchar *src)
{
while((*dst++ = *src++) != '\0');
-} \ No newline at end of file
+}