Skip to content

Instantly share code, notes, and snippets.

@Friday-The13-rus
Created May 31, 2023 18:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Friday-The13-rus/0aa857859522c519ffe06606755dcee1 to your computer and use it in GitHub Desktop.
Save Friday-The13-rus/0aa857859522c519ffe06606755dcee1 to your computer and use it in GitHub Desktop.
Witcher 3 QuickSave Menu 4.03
/***********************************************************************/
/** © 2015 CD PROJEKT S.A. All rights reserved.
/** THE WITCHER® is a trademark of CD PROJEKT S. A.
/** The Witcher game is based on the prose of Andrzej Sapkowski.
/***********************************************************************/
enum InGameMenuActionType
{
IGMActionType_CommonMenu = 0,
IGMActionType_Close = 1,
IGMActionType_MenuHolder = 2,
IGMActionType_MenuLastHolder = 3,
IGMActionType_Load = 4,
IGMActionType_Save = 5,
IGMActionType_Quit = 6,
IGMActionType_Preset = 7,
IGMActionType_Toggle = 8,
IGMActionType_List = 9,
IGMActionType_Slider = 10,
IGMActionType_LoadLastSave = 11,
IGMActionType_Tutorials = 12,
IGMActionType_Credits = 13,
IGMActionType_Help = 14,
IGMActionType_Controls = 15,
IGMActionType_ControllerHelp = 16,
IGMActionType_NewGame = 17,
IGMActionType_CloseGame = 18,
IGMActionType_UIRescale = 19,
IGMActionType_Gamma = 20,
IGMActionType_DebugStartQuest = 21,
IGMActionType_Gwint = 22,
IGMActionType_ImportSave = 23,
IGMActionType_KeyBinds = 24,
IGMActionType_Back = 25,
IGMActionType_NewGamePlus = 26,
IGMActionType_InstalledDLC = 27,
IGMActionType_Button = 28,
IGMActionType_ToggleRender = 29,
IGMActionType_Gog = 30,
IGMActionType_TelemetryConsent = 31,
IGMActionType_ListWithCondition = 32,
IGMActionType_Stepper = 33,
IGMActionType_ToggleStepper = 34,
IGMActionType_Separator = 35,
IGMActionType_SubtleSeparator = 36,
IGMActionType_PurchaseEP1 = 37,
IGMActionType_PurchaseEP2 = 38,
IGMActionType_Options = 100
};
enum GERR
{
GOGNoInternetConnection = 0,
RewardsTemporaryFail = 1,
RewardsRequestFailed = 2,
QRCodeTemporaryFail= 3,
QRCodeRequestFailed = 4
};
enum EIngameMenuConstants
{
IGMC_Difficulty_mask = 7,
IGMC_Tutorials_On = 1024,
IGMC_Simulate_Import = 2048,
IGMC_Import_Save = 4096,
IGMC_EP1_Save = 8192,
IGMC_New_game_plus = 16384,
IGMC_EP2_Save = 32768,
}
struct newGameConfig
{
var tutorialsOn : bool;
var difficulty : int;
var simulate_import : bool;
var import_save_index : int;
}
function UpdateAO2CorrespondRT(RTEnabled: bool, justValidate: bool)
{
var inGameConfigWrapper : CInGameConfigWrapper;
inGameConfigWrapper = (CInGameConfigWrapper)theGame.GetInGameConfigWrapper();
if( RTEnabled )
{
if ((justValidate && StringToInt(inGameConfigWrapper.GetVarValue('PostProcess', 'Virtual_SSAOSolution')) == IGMOPT_AO_SSAO)
||(!justValidate && StringToInt(inGameConfigWrapper.GetVarValue('PostProcess', 'Virtual_SSAOSolution')) != IGMOPT_AO_NRDRTAO))
{
inGameConfigWrapper.SetVarValue('PostProcess', 'Virtual_SSAOSolution', IntToString(IGMOPT_AO_NRDRTAO));
}
} else {
if(StringToInt(inGameConfigWrapper.GetVarValue('PostProcess', 'Virtual_SSAOSolution')) >= IGMOPT_AO_RTAO)
{
inGameConfigWrapper.SetVarValue('PostProcess', 'Virtual_SSAOSolution', IntToString(IGMOPT_AO_SSAO));
}
}
}
class CR4IngameMenu extends CR4MenuBase
{
protected var mInGameConfigWrapper : CInGameConfigWrapper;
protected var inGameConfigBufferedWrapper : CInGameConfigBufferedWrapper;
protected var currentNewGameConfig : newGameConfig;
private var m_fxNavigateBack : CScriptedFlashFunction;
private var m_fxSetIsMainMenu : CScriptedFlashFunction;
private var m_fxSetCurrentUsername : CScriptedFlashFunction;
private var m_fxSetVersion : CScriptedFlashFunction;
private var m_fxShowHelp : CScriptedFlashFunction;
private var m_fxSetVisible : CScriptedFlashFunction;
private var m_fxSetPanelMode : CScriptedFlashFunction;
private var m_fxRemoveOption : CScriptedFlashFunction;
private var m_fxSetGameLogoLanguage : CScriptedFlashFunction;
private var m_fxUpdateOptionValue : CScriptedFlashFunction;
private var m_fxUpdateOptionLabel : CScriptedFlashFunction;
private var m_fxUpdateInputFeedback : CScriptedFlashFunction;
private var m_fxOnSaveScreenshotRdy : CScriptedFlashFunction;
private var m_fxSetIgnoreInput : CScriptedFlashFunction;
private var m_fxUpdateSaveSlot : CScriptedFlashFunction;
private var m_fxForceEnterCurEntry : CScriptedFlashFunction;
private var m_fxForceBackgroundVis : CScriptedFlashFunction;
private var m_fxSetHardwareCursorOn : CScriptedFlashFunction;
private var m_fxSetExpansionText : CScriptedFlashFunction;
private var m_fxUpdateAnchorsAspectRatio : CScriptedFlashFunction;
private var m_fxQRCodeReadyToLoad : CScriptedFlashFunction;
private var m_fxShowCloudModal : CScriptedFlashFunction;
private var m_fxCloseGalaxySignInModalWindow: CScriptedFlashFunction;
private var m_fxSetDLSSIsSupported : CScriptedFlashFunction;
private var m_fxSetXESSIsSupported : CScriptedFlashFunction;
private var m_fxSetRTEnabled : CScriptedFlashFunction;
private var m_fxHideErrorWindow : CScriptedFlashFunction;
protected var loadConfPopup : W3ApplyLoadConfirmation;
protected var saveConfPopup : W3SaveGameConfirmation;
protected var newGameConfPopup : W3NewGameConfirmation;
protected var actionConfPopup : W3ActionConfirmation;
protected var deleteConfPopup : W3DeleteSaveConf;
protected var diffChangeConfPopup : W3DifficultyChangeConfirmation;
protected var isShowingSaveList : bool; default isShowingSaveList = false;
protected var isShowingLoadList : bool; default isShowingLoadList = false;
protected var smartKeybindingEnabled : bool; default smartKeybindingEnabled = true;
public var m_structureCreator : IngameMenuStructureCreator;
protected var isInLoadselector : bool; default isInLoadselector = false;
protected var swapAcceptCancelChanged : bool; default swapAcceptCancelChanged = false;
protected var alternativeRadialInputChanged : bool; default alternativeRadialInputChanged = false;
protected var EnableUberMovement : bool; default EnableUberMovement = false;
protected var shouldRefreshKinect : bool; default shouldRefreshKinect = false;
public var isMainMenu : bool;
protected var managingPause : bool; default managingPause = false;
protected var updateInputDeviceRequired : bool; default updateInputDeviceRequired = false;
protected var hasChangedOption : bool;
default hasChangedOption = false;
protected var curMenuDepth : int;
default curMenuDepth = 0;
protected var depthOptions : int;
default depthOptions = 10;
private var ignoreInput : bool;
default ignoreInput = false;
public var disableAccountPicker : bool;
default disableAccountPicker = false;
protected var lastSetTag : int;
protected var currentLangValue : string;
protected var lastUsedLangValue : string;
protected var currentSpeechLang : string;
protected var lastUsedSpeechLang : string;
private var languageName : string;
private var panelMode : bool; default panelMode = false;
private var postprocessRtGreyed : bool; default postprocessRtGreyed = false;
private var postprocessEntered : bool; default postprocessEntered = false;
public var lastSetDifficulty : int;
private var lastTimeGetOption : int; default lastTimeGetOption = 0;
event OnConfigUI()
{
var initDataObject : W3MenuInitData;
var commonIngameMenu : CR4CommonIngameMenu;
var commonMainMenuBase : CR4CommonMainMenuBase;
var deathScreenMenu : CR4DeathScreenMenu;
var audioLanguageName : string;
var tempLanguageName : string;
var username : string;
var lootPopup : CR4LootPopup;
var ep1StatusText : string;
var ep2StatusText : string;
var width : int;
var height : int;
super.OnConfigUI();
m_fxNavigateBack = m_flashModule.GetMemberFlashFunction("handleNavigateBack");
m_fxSetIsMainMenu = m_flashModule.GetMemberFlashFunction("setIsMainMenu");
m_fxSetCurrentUsername = m_flashModule.GetMemberFlashFunction("setCurrentUsername");
m_fxSetVersion = m_flashModule.GetMemberFlashFunction("setVersion");
m_fxShowHelp = m_flashModule.GetMemberFlashFunction("showHelpPanel");
m_fxSetVisible = m_flashModule.GetMemberFlashFunction("setVisible");
m_fxSetPanelMode = m_flashModule.GetMemberFlashFunction("setPanelMode");
m_fxRemoveOption = m_flashModule.GetMemberFlashFunction("removeOption");
m_fxSetGameLogoLanguage = m_flashModule.GetMemberFlashFunction( "setGameLogoLanguage" );
m_fxUpdateOptionValue = m_flashModule.GetMemberFlashFunction( "updateOptionValue" );
m_fxUpdateOptionLabel = m_flashModule.GetMemberFlashFunction( "updateOptionLabel" );
m_fxUpdateInputFeedback = m_flashModule.GetMemberFlashFunction( "updateInputFeedback" );
m_fxOnSaveScreenshotRdy = m_flashModule.GetMemberFlashFunction( "onSaveScreenshotLoaded" );
m_fxSetIgnoreInput = m_flashModule.GetMemberFlashFunction( "setIgnoreInput" );
m_fxUpdateSaveSlot = m_flashModule.GetMemberFlashFunction( "updateSaveSlot" );
m_fxForceEnterCurEntry = m_flashModule.GetMemberFlashFunction( "forceEnterCurrentEntry" );
m_fxForceBackgroundVis = m_flashModule.GetMemberFlashFunction( "setForceBackgroundVisible" );
m_fxSetHardwareCursorOn = m_flashModule.GetMemberFlashFunction( "setHardwareCursorOn" );
m_fxSetExpansionText = m_flashModule.GetMemberFlashFunction( "setExpansionText" );
m_fxUpdateAnchorsAspectRatio = m_flashModule.GetMemberFlashFunction( "UpdateAnchorsAspectRatio" );
m_fxQRCodeReadyToLoad = m_flashModule.GetMemberFlashFunction("QRCodeReadyToLoad");
m_fxShowCloudModal = m_flashModule.GetMemberFlashFunction("ShowCloudModal");
m_fxCloseGalaxySignInModalWindow = m_flashModule.GetMemberFlashFunction("closeGalaxySignInDialog");
m_fxSetDLSSIsSupported = m_flashModule.GetMemberFlashFunction("DLSSIsSupported");
m_fxSetXESSIsSupported = m_flashModule.GetMemberFlashFunction("XESSIsSupported");
m_fxSetRTEnabled = m_flashModule.GetMemberFlashFunction("RTEnabled");
m_fxHideErrorWindow = m_flashModule.GetMemberFlashFunction("hideErrorHandlingWindow");
m_structureCreator = new IngameMenuStructureCreator in this;
m_structureCreator.parentMenu = this;
m_structureCreator.m_flashValueStorage = m_flashValueStorage;
m_structureCreator.m_flashConstructor = m_flashValueStorage.CreateTempFlashObject();
m_hideTutorial = false;
m_forceHideTutorial = false;
disableAccountPicker = false;
theGame.LoadHudSettings();
mInGameConfigWrapper = (CInGameConfigWrapper)theGame.GetInGameConfigWrapper();
inGameConfigBufferedWrapper = theGame.GetGuiManager().GetInGameConfigBufferedWrapper();
lootPopup = (CR4LootPopup)theGame.GetGuiManager().GetPopup('LootPopup');
if (lootPopup)
{
lootPopup.ClosePopup();
}
commonIngameMenu = (CR4CommonIngameMenu)(GetParent());
commonMainMenuBase = (CR4CommonMainMenuBase)(GetParent());
deathScreenMenu = (CR4DeathScreenMenu)(GetParent());
if (commonIngameMenu)
{
isMainMenu = false;
panelMode = false;
mInGameConfigWrapper.ActivateScriptTag('inGame');
mInGameConfigWrapper.DeactivateScriptTag('mainMenu');
if ((!thePlayer.IsAlive() && !thePlayer.OnCheckUnconscious()) || theGame.HasBlackscreenRequested() || FactsQuerySum("nge_pause_menu_disabled") > 0 )
{
CloseMenu();
return true;
}
if(theGame.IsDialogOrCutscenePlaying())
theSound.SoundEvent("music_pause");
}
else if (commonMainMenuBase)
{
isMainMenu = true;
panelMode = false;
mInGameConfigWrapper.ActivateScriptTag('mainMenu');
mInGameConfigWrapper.DeactivateScriptTag('inGame');
StartShowingCustomDialogs();
if (theGame.GetDLCManager().IsEP1Available())
{
ep1StatusText = GetLocStringByKeyExt("expansion_status_installed");
}
else
{
ep1StatusText = GetLocStringByKeyExt("expansion_status_available");
}
if (theGame.GetDLCManager().IsEP2Available())
{
ep2StatusText = GetLocStringByKeyExt("expansion_status_installed");
}
else
{
ep2StatusText = GetLocStringByKeyExt("expansion_status_available");
}
m_fxSetExpansionText.InvokeSelfTwoArgs(FlashArgString(ep1StatusText), FlashArgString(ep2StatusText));
if (theGame.AreConfigResetInThisSession() && !theGame.HasShownConfigChangedMessage())
{
showNotification(GetLocStringByKeyExt("update_warning_message"));
OnPlaySoundEvent("gui_global_denied");
theGame.SetHasShownConfigChangedMessage(true);
}
}
else if (deathScreenMenu)
{
isMainMenu = false;
panelMode = true;
mInGameConfigWrapper.DeactivateScriptTag('mainMenu');
mInGameConfigWrapper.DeactivateScriptTag('inGame');
deathScreenMenu.HideInputFeedback();
if (hasSaveDataToLoad())
{
isInLoadselector = true;
SendLoadData();
m_fxSetPanelMode.InvokeSelfOneArg(FlashArgBool(true));
}
else
{
CloseMenu();
}
}
else
{
initDataObject = (W3MenuInitData)GetMenuInitData();
if (initDataObject && initDataObject.getDefaultState() == 'SaveGame')
{
isMainMenu = false;
panelMode = true;
managingPause = true;
theInput.StoreContext( 'EMPTY_CONTEXT' );
theGame.Pause('IngameMenu');
mInGameConfigWrapper.DeactivateScriptTag('mainMenu');
mInGameConfigWrapper.DeactivateScriptTag('inGame');
SendSaveData();
m_fxSetPanelMode.InvokeSelfOneArg(FlashArgBool(true));
}
}
IngameMenu_UpdateDLCScriptTags();
if (!panelMode)
{
m_fxSetIsMainMenu.InvokeSelfOneArg(FlashArgBool(isMainMenu));
if (isMainMenu)
{
username = FixStringForFont(theGame.GetActiveUserDisplayName());
m_fxSetCurrentUsername.InvokeSelfOneArg(FlashArgString(username));
m_fxSetVersion.InvokeSelfOneArg(FlashArgString(theGame.GetApplicationVersion()));
if( !theGame.IsContentAvailable( 'content12' ) )
{
theGame.GetGuiManager().RefreshMainMenuAfterContentLoaded();
}
}
theGame.GetSecondScreenManager().SendGameMenuOpen();
lastSetDifficulty = theGame.GetDifficultyLevel();
currentLangValue = mInGameConfigWrapper.GetVarValue('Localization', 'Virtual_Localization_text');
lastUsedLangValue = currentLangValue;
currentSpeechLang = mInGameConfigWrapper.GetVarValue('Localization', 'Virtual_Localization_speech');
lastUsedSpeechLang = currentSpeechLang;
theGame.GetGameLanguageName(audioLanguageName,tempLanguageName);
if( tempLanguageName != languageName )
{
languageName = tempLanguageName;
m_fxSetGameLogoLanguage.InvokeSelfOneArg( FlashArgString(languageName) );
}
PopulateMenuData();
if(!theTelemetry.WasConsentWindowShown())
{
ShowTelemetryWindow();
}
}
theGame.GetCurrentViewportResolution( width, height );
m_fxUpdateAnchorsAspectRatio.InvokeSelfTwoArgs( FlashArgInt( width ), FlashArgInt( height ) );
theInput.RegisterListener( this, 'OnShowDeveloperMode', 'ShowDeveloperMode' );
}
event OnRefreshActiveUserDisplayName()
{
var username : string;
if (isMainMenu)
{
username = FixStringForFont(theGame.GetActiveUserDisplayName());
m_fxSetCurrentUsername.InvokeSelfOneArg(FlashArgString(username));
}
}
event OnRefresh()
{
var audioLanguageName : string;
var tempLanguageName : string;
var overlayPopupRef : CR4OverlayPopup;
var username : string;
var hud : CR4ScriptedHud;
var ep1StatusText : string;
var ep2StatusText : string;
currentLangValue = mInGameConfigWrapper.GetVarValue('Localization', 'Virtual_Localization_text');
lastUsedLangValue = currentLangValue;
currentSpeechLang = mInGameConfigWrapper.GetVarValue('Localization', 'Virtual_Localization_speech');
lastUsedSpeechLang = currentSpeechLang;
if (isMainMenu)
{
username = FixStringForFont(theGame.GetActiveUserDisplayName());
m_fxSetCurrentUsername.InvokeSelfOneArg(FlashArgString(username));
PopulateMenuData();
}
UpdateAcceptCancelSwaping();
SetPlatformType(theGame.GetPlatform());
hud = (CR4ScriptedHud)(theGame.GetHud());
if (hud)
{
hud.UpdateAcceptCancelSwaping();
}
overlayPopupRef = (CR4OverlayPopup) theGame.GetGuiManager().GetPopup('OverlayPopup');
if (overlayPopupRef)
{
overlayPopupRef.UpdateAcceptCancelSwaping();
}
theGame.GetGameLanguageName(audioLanguageName,tempLanguageName);
if( tempLanguageName != languageName )
{
languageName = tempLanguageName;
m_fxSetGameLogoLanguage.InvokeSelfOneArg( FlashArgString(languageName) );
m_fxUpdateInputFeedback.InvokeSelf();
if (overlayPopupRef)
{
overlayPopupRef.UpdateButtons();
}
}
{
if (theGame.GetDLCManager().IsEP1Available())
{
ep1StatusText = GetLocStringByKeyExt("expansion_status_installed");
}
else
{
ep1StatusText = GetLocStringByKeyExt("expansion_status_available");
}
if (theGame.GetDLCManager().IsEP2Available())
{
ep2StatusText = GetLocStringByKeyExt("expansion_status_installed");
}
else
{
ep2StatusText = GetLocStringByKeyExt("expansion_status_available");
}
m_fxSetExpansionText.InvokeSelfTwoArgs(FlashArgString(ep1StatusText), FlashArgString(ep2StatusText));
}
setArabicAligmentMode();
}
event OnVisitWeibo()
{
theGame.VisitWeibo();
}
function OnRequestSubMenu( menuName: name, optional initData : IScriptable )
{
RequestSubMenu(menuName, initData);
m_fxSetVisible.InvokeSelfOneArg(FlashArgBool(false));
}
function ChildRequestCloseMenu()
{
m_fxSetVisible.InvokeSelfOneArg(FlashArgBool(true));
}
event OnCloseMenu()
{
if(theGame.IsDialogOrCutscenePlaying())
theSound.SoundEvent("music_resume");
CloseMenu();
}
public function ReopenMenu()
{
var commonInGameMenu : CR4CommonIngameMenu;
var commonMainMenuBase : CR4CommonMainMenuBase;
commonInGameMenu = (CR4CommonIngameMenu)m_parentMenu;
if(commonInGameMenu)
{
commonInGameMenu.reopenRequested = true;
}
commonMainMenuBase = (CR4CommonMainMenuBase)m_parentMenu;
if ( commonMainMenuBase )
{
commonMainMenuBase.reopenRequested = true;
}
CloseMenu();
}
event OnClosingMenu()
{
var commonInGameMenu : CR4CommonIngameMenu;
var commonMainMenuBase : CR4CommonMainMenuBase;
var deathScreenMenu : CR4DeathScreenMenu;
var controlsFeedbackModule : CR4HudModuleControlsFeedback;
var interactionModule : CR4HudModuleInteractions;
var hud : CR4ScriptedHud;
SaveChangedSettings();
theGame.GetSecondScreenManager().SendGameMenuClose();
super.OnClosingMenu();
hud = (CR4ScriptedHud)(theGame.GetHud());
if (hud)
{
controlsFeedbackModule = (CR4HudModuleControlsFeedback)(hud.GetHudModule(NameToString('ControlsFeedbackModule')));
if (controlsFeedbackModule)
{
controlsFeedbackModule.ForceModuleUpdate();
}
interactionModule = (CR4HudModuleInteractions)(hud.GetHudModule(NameToString('InteractionsModule')));
if (interactionModule)
{
interactionModule.ForceUpdateModule();
}
}
if (managingPause)
{
managingPause = false;
theInput.RestoreContext( 'EMPTY_CONTEXT', true );
theGame.Unpause('IngameMenu');
}
if (theGame.GetGuiManager().potalConfirmationPending)
{
theGame.GetGuiManager().ResumePortalConfirmationPendingMessage();
}
if (m_structureCreator)
{
delete m_structureCreator;
}
if (loadConfPopup)
{
delete loadConfPopup;
}
if (saveConfPopup)
{
delete saveConfPopup;
}
if (actionConfPopup)
{
delete actionConfPopup;
}
if (newGameConfPopup)
{
delete newGameConfPopup;
}
if (deleteConfPopup)
{
delete deleteConfPopup;
}
if (diffChangeConfPopup)
{
delete diffChangeConfPopup;
}
commonInGameMenu = (CR4CommonIngameMenu)m_parentMenu;
if(commonInGameMenu)
{
commonInGameMenu.ChildRequestCloseMenu();
return true;
}
commonMainMenuBase = (CR4CommonMainMenuBase)m_parentMenu;
if ( commonMainMenuBase )
{
commonMainMenuBase.ChildRequestCloseMenu();
return true;
}
deathScreenMenu = (CR4DeathScreenMenu)m_parentMenu;
if (deathScreenMenu)
{
deathScreenMenu.ChildRequestCloseMenu();
return true;
}
}
protected function CloseCurrentPopup():void
{
if (loadConfPopup)
{
loadConfPopup.ClosePopupOverlay();
}
else if (saveConfPopup)
{
saveConfPopup.ClosePopupOverlay();
}
else if (actionConfPopup)
{
actionConfPopup.ClosePopupOverlay();
}
else if (newGameConfPopup)
{
newGameConfPopup.ClosePopupOverlay();
}
else if (deleteConfPopup)
{
deleteConfPopup.ClosePopupOverlay();
}
else if (diffChangeConfPopup)
{
diffChangeConfPopup.ClosePopupOverlay();
}
}
public function SetIgnoreInput(value : bool) : void
{
if (value != ignoreInput)
{
ignoreInput = value;
m_fxSetIgnoreInput.InvokeSelfOneArg( FlashArgBool(value) );
}
}
public function UpdateSaveSlot() : void
{
m_fxUpdateSaveSlot.InvokeSelf();
}
public function OnUserSignIn() : void
{
SetIgnoreInput(false);
CloseCurrentPopup();
}
public function OnUserSignInCancelled() : void
{
SetIgnoreInput(false);
CloseCurrentPopup();
}
public function OnSaveLoadingFailed() : void
{
SetIgnoreInput(false);
CloseCurrentPopup();
}
event OnItemActivated( actionType:int, menuTag:int ) : void
{
var l_DataFlashArray : CScriptedFlashArray;
var manager : CR4GuiManager;
if (ignoreInput)
{
m_fxNavigateBack.InvokeSelf();
}
else
{
postprocessEntered = false;
switch (actionType)
{
case IGMActionType_CommonMenu:
theGame.RequestMenu( 'CommonMenu' );
break;
case IGMActionType_MenuHolder:
m_initialSelectionsToIgnore = 1;
OnPlaySoundEvent( "gui_global_panel_open" );
curMenuDepth += 1;
break;
case IGMActionType_MenuLastHolder:
m_initialSelectionsToIgnore = 1;
OnPlaySoundEvent( "gui_global_panel_open" );
curMenuDepth += 1;
break;
case IGMActionType_Load:
if (hasSaveDataToLoad())
{
SendLoadData();
}
else
{
m_fxNavigateBack.InvokeSelf();
}
isInLoadselector = true;
break;
case IGMActionType_Save:
if ( !theGame.AreSavesLocked() )
{
SendSaveData();
}
else
{
m_fxNavigateBack.InvokeSelf();
theGame.GetGuiManager().DisplayLockedSavePopup();
}
isInLoadselector = false;
break;
case IGMActionType_Quit:
ShowActionConfPopup( IGMActionType_Quit, "", GetPlatformLocString( "error_message_exit_game" ) );
break;
case IGMActionType_Toggle:
break;
case IGMActionType_ListWithCondition:
break;
case IGMActionType_List:
break;
case IGMActionType_Slider:
break;
case IGMActionType_LoadLastSave:
LoadLastSave();
break;
case IGMActionType_Close:
break;
case IGMActionType_Tutorials:
if(menuTag == NameToFlashUInt('QuickSave')){ // ++QuicksaveMenu++
if ( !theGame.AreSavesLocked() ) // ++QuicksaveMenu++
{ // ++QuicksaveMenu++
executeSave(SGT_QuickSave, -1); // ++QuicksaveMenu++
CloseMenu(); // ++QuicksaveMenu++
} // ++QuicksaveMenu++
else // ++QuicksaveMenu++
{ // ++QuicksaveMenu++
m_fxNavigateBack.InvokeSelf(); // ++QuicksaveMenu++
theGame.GetGuiManager().DisplayLockedSavePopup(); // ++QuicksaveMenu++
} // ++QuicksaveMenu++
} // ++QuicksaveMenu++
else // ++QuicksaveMenu++
theGame.RequestMenuWithBackground( 'GlossaryTutorialsMenu', 'CommonMenu' );
break;
case IGMActionType_Credits:
theGame.GetGuiManager().RequestCreditsMenu(menuTag);
break;
case IGMActionType_Help:
showHelpPanel();
break;
case IGMActionType_Options:
DLSSSupported();
XESSSupported();
RTEnabled();
developerOptions = m_flashValueStorage.CreateTempFlashArray();
showOptionsPanel();
isDeveloperModeEnabled = false;
ShowDeveloperMode( isDeveloperModeEnabled );
break;
case IGMActionType_ControllerHelp:
curMenuDepth += 1;
SendControllerData();
break;
case IGMActionType_NewGame:
TryStartNewGame(menuTag);
break;
case IGMActionType_NewGamePlus:
fetchNewGameConfigFromTag(menuTag);
SendNewGamePlusSaves();
break;
case IGMActionType_InstalledDLC:
SendInstalledDLCList();
break;
case IGMActionType_UIRescale:
curMenuDepth += 1;
SendRescaleData();
break;
case IGMActionType_DebugStartQuest:
RequestSubMenu( 'MainDbgStartQuestMenu', GetMenuInitData() );
break;
case IGMActionType_Gwint:
GetRootMenu().CloseMenu();
theGame.RequestMenu( 'DeckBuilder' );
break;
case IGMActionType_ImportSave:
lastSetTag = menuTag;
fetchNewGameConfigFromTag( menuTag );
SendImportSaveData( );
break;
case IGMActionType_CloseGame:
if (!isMainMenu)
{
ShowActionConfPopup(IGMActionType_CloseGame, "", GetLocStringByKeyExt("error_message_exit_game"));
}
else
{
theGame.RequestExit();
}
break;
case IGMActionType_KeyBinds:
curMenuDepth += 1;
SendKeybindData();
break;
case IGMActionType_ToggleRender:
ToggleRTEnabled();
break;
case IGMActionType_Gog:
m_initialSelectionsToIgnore = 1;
manager = (CR4GuiManager)theGame.GetGuiManager();
if (manager) {
manager.GalaxyQRSignInInitiate();
}
break;
case IGMActionType_TelemetryConsent:
ShowTelemetryWindow();
break;
case IGMActionType_PurchaseEP1:
theGame.DisplayStoreExpansionPack('ep1');
break;
case IGMActionType_PurchaseEP2:
theGame.DisplayStoreExpansionPack('bob_000_000');
break;
}
}
}
event OnShowOptionSubmenu( actionType:int, menuTag:int ) : void
{
updateDLSSGOptionChanged();
}
public function HandleLoadGameFailed():void
{
disableAccountPicker = false;
SetIgnoreInput(false);
}
private function StartShowingCustomDialogs()
{
if (theGame.GetInGameConfigWrapper().GetVarValue('Hidden', 'HasSeenGotyWelcomeMessage') == "false")
{
theGame.GetInGameConfigWrapper().SetVarValue('Hidden', 'HasSeenGotyWelcomeMessage', "true");
theGame.SaveUserSettings();
prepareBigMessageGOTY( "menu_goty_starting_message_alt" );
}
}
protected function prepareBigMessage( epIndex : int ):void
{
var l_DataFlashObject : CScriptedFlashObject;
l_DataFlashObject = m_flashValueStorage.CreateTempFlashObject();
l_DataFlashObject.SetMemberFlashInt( "index", epIndex );
l_DataFlashObject.SetMemberFlashString( "tfTitle1", GetLocStringByKeyExt("ep" + epIndex + "_installed_information_title_1") );
l_DataFlashObject.SetMemberFlashString( "tfTitle2", GetLocStringByKeyExt("ep" + epIndex + "_installed_information_title_2") );
l_DataFlashObject.SetMemberFlashString( "tfTitlePath1", GetLocStringByKeyExt("ep" + epIndex + "_installed_information_title_path_1") );
l_DataFlashObject.SetMemberFlashString( "tfTitlePath2", GetLocStringByKeyExt("ep" + epIndex + "_installed_information_title_path_2") );
l_DataFlashObject.SetMemberFlashString( "tfTitlePath3", GetLocStringByKeyExt("ep" + epIndex + "_installed_information_title_path_3") );
l_DataFlashObject.SetMemberFlashString( "tfDescPath1", GetLocStringByKeyExt("ep" + epIndex + "_installed_information_title_path_1_description") );
l_DataFlashObject.SetMemberFlashString( "tfDescPath2", GetLocStringByKeyExt("ep" + epIndex + "_installed_information_title_path_2_description") );
l_DataFlashObject.SetMemberFlashString( "tfDescPath3", GetLocStringByKeyExt("ep" + epIndex + "_installed_information_title_path_3_description") );
l_DataFlashObject.SetMemberFlashString( "tfWarning", GetLocStringByKeyExt("ep" + epIndex + "_installed_information_warning_level") );
l_DataFlashObject.SetMemberFlashString( "tfGoodLuck", GetLocStringByKeyExt("ep" + epIndex + "_installed_information_good_luck") );
m_flashValueStorage.SetFlashObject( "ingamemenu.bigMessage" + epIndex, l_DataFlashObject );
}
private function prepareBigMessageGOTY( text : string )
{
var l_DataFlashObject : CScriptedFlashObject;
var title1 : string;
var content : string;
var titleEnd : string;
l_DataFlashObject = m_flashValueStorage.CreateTempFlashObject();
title1 = GetLocStringByKey( text );
content = GetLocStringByKey( "menu_goty_starting_message_content" );
titleEnd = GetLocStringByKey( "ep1_installed_information_good_luck" );
l_DataFlashObject.SetMemberFlashInt( "index", 3 );
l_DataFlashObject.SetMemberFlashString( "tfTitle1", title1 );
l_DataFlashObject.SetMemberFlashString( "tfContent", content );
l_DataFlashObject.SetMemberFlashString( "tfTitleEnd", titleEnd );
m_flashValueStorage.SetFlashObject( "ingamemenu.bigMessage3", l_DataFlashObject );
}
public function StartShowCustomDialogGalaxySignIn()
{
var l_DataFlashObject : CScriptedFlashObject;
var isPlatformPC : bool;
l_DataFlashObject = m_flashValueStorage.CreateTempFlashObject();
isPlatformPC = (theGame.GetGalaxyPf() == Platform_PC);
l_DataFlashObject.SetMemberFlashInt( "index", 4 );
l_DataFlashObject.SetMemberFlashBool("isPlatformPC", isPlatformPC);
l_DataFlashObject.SetMemberFlashString( "tfTitleSignIn", "[[ui_gog_qr_title]]" );
l_DataFlashObject.SetMemberFlashString( "tfContentSignInTopA", "[[ui_gog_qr_explain_1]]" );
l_DataFlashObject.SetMemberFlashString( "tfContentSignInTopB", "[[ui_gog_qr_explain_2]]" );
if (isPlatformPC) {
if (theGame.UsesRedLauncher())
l_DataFlashObject.SetMemberFlashString( "tfContentSignIn2", "[[ui_gog_red_launcher_signin_instructions]]");
else
l_DataFlashObject.SetMemberFlashString( "tfContentSignIn2", "[[ui_gog_pc_signin_instructions]]");
}
else
{
l_DataFlashObject.SetMemberFlashString( "tfLink1" , "[[ui_gog_qr_pls_wait]]");
l_DataFlashObject.SetMemberFlashString( "tfContentSignIn2", "[[ui_gog_qr_use_url]]");
l_DataFlashObject.SetMemberFlashString( "tfContentSignIn3", "[[ui_gog_qr_scan_hint]]" );
}
m_flashValueStorage.SetFlashObject( "ingamemenu.bigMessage4", l_DataFlashObject );
}
public function HideErrorWindow()
{
m_fxHideErrorWindow.InvokeSelf();
}
public function ShowErrorWindow(error : int)
{
var l_DataFlashObject : CScriptedFlashObject;
var tfDescription : string ;
l_DataFlashObject = m_flashValueStorage.CreateTempFlashObject();
switch(error)
{
case RewardsRequestFailed:
case QRCodeRequestFailed:
case GOGNoInternetConnection:
tfDescription = "[[ui_gog_error_no_connection]]";
break;
case RewardsTemporaryFail:
tfDescription = "[[ui_gog_error_fault_retry]]";
break;
default:
tfDescription = "[[ui_gog_error_smt_wrong]]";
break;
}
l_DataFlashObject.SetMemberFlashString("tfTitleError","[[ui_gog_error_popup_title]]");
l_DataFlashObject.SetMemberFlashString("tfDescription",tfDescription);
m_flashValueStorage.SetFlashObject("ingamemenu.ErrorHandleWindow", l_DataFlashObject);
}
private function SetRewardsCellParams( out dataFObj : CScriptedFlashObject, out rewarr : array< int >, cellName: string, rewID : int )
{
var rewTitle : string ;
var rewDesc : string ;
var isPresent : bool ;
isPresent = rewarr.Contains(rewID);
dataFObj.SetMemberFlashBool("b"+cellName+"on", isPresent);
if ( !isPresent ) {
return;
}
theGame.GetGuiManager().GetGalaxyRewardDesc( rewID, rewTitle, rewDesc );
dataFObj.SetMemberFlashString("tf"+cellName+"title", rewTitle);
dataFObj.SetMemberFlashString("tf"+cellName+"desc", rewDesc);
}
public function ShowRewardsWindow( out rewarr : array< int > )
{
var dataFObj : CScriptedFlashObject;
var tfTableTitle : string ;
var tfTableDescription : string ;
var tfRoachDescription : string ;
var isRoachPresent : bool ;
dataFObj = m_flashValueStorage.CreateTempFlashObject();
tfTableTitle = GetLocStringByKeyExt("ui_gog_rewards_table_title");
dataFObj.SetMemberFlashString("tfTitleRewards",tfTableTitle);
if(theGame.GetPlatform() == Platform_PC)
dataFObj.SetMemberFlashString("tfTitleLink","[[ui_gog_link_rewards]]");
else
dataFObj.SetMemberFlashString("tfTitleLink","");
tfTableDescription = GetLocStringByKeyExt("ui_gog_rewards_table_description");
dataFObj.SetMemberFlashString("tfTopDescription",tfTableDescription);
SetRewardsCellParams( dataFObj, rewarr, "Cell_1_1", 6);
SetRewardsCellParams( dataFObj, rewarr, "Cell_1_2", 7);
SetRewardsCellParams( dataFObj, rewarr, "Cell_2_1", 8);
SetRewardsCellParams( dataFObj, rewarr, "Cell_2_2", 9);
SetRewardsCellParams( dataFObj, rewarr, "Cell_3_1", 10);
SetRewardsCellParams( dataFObj, rewarr, "Cell_3_2", 11);
SetRewardsCellParams( dataFObj, rewarr, "Cell_4_1", 12);
SetRewardsCellParams( dataFObj, rewarr, "Cell_4_2", 13);
SetRewardsCellParams( dataFObj, rewarr, "Cell_5_1", 14);
SetRewardsCellParams( dataFObj, rewarr, "Cell_5_2", 15);
isRoachPresent = rewarr.Contains(12);
if (isRoachPresent) {
tfRoachDescription = GetLocStringByKeyExt("ui_gog_reward_roach_table_desc");
} else {
tfRoachDescription = "";
}
dataFObj.SetMemberFlashString("tfRoachDescription",tfRoachDescription);
m_flashValueStorage.SetFlashObject("ingamemenu.RewardsTableWindow", dataFObj);
}
private function ShowTelemetryWindow()
{
var l_DataFlashObject : CScriptedFlashObject;
var isPlatformPC : bool = (theGame.GetGalaxyPf() == Platform_PC);
if( theGame.isUserSignedIn() )
{
l_DataFlashObject = m_flashValueStorage.CreateTempFlashObject();
l_DataFlashObject.SetMemberFlashBool("isPlatformPC", isPlatformPC);
l_DataFlashObject.SetMemberFlashString("tfTelemetryTitle","[[ui_gog_tel_consent_title]]");
l_DataFlashObject.SetMemberFlashString("tfTelemetryContent","[[ui_gog_tel_consent_big_text]]");
l_DataFlashObject.SetMemberFlashString("tfTelemetryContent2","[[ui_gog_tel_consent_question]]");
l_DataFlashObject.SetMemberFlashString("tfTelemetryFooter","[[ui_gog_tel_consent_thanks]]");
l_DataFlashObject.SetMemberFlashString("tfTelemetryFooter2","CD PROJEKT RED");
m_flashValueStorage.SetFlashObject("ingamemenu.TelemetryModalWindow",l_DataFlashObject);
theTelemetry.MarkShownConsentWindow();
}
}
protected function LoadLastSave():void
{
if (theGame.GetGuiManager().GetPopup('MessagePopup') && theGame.GetGuiManager().lastMessageData.messageId == UMID_ControllerDisconnected)
{
return;
}
SetIgnoreInput(true);
if (isMainMenu)
{
disableAccountPicker = true;
}
theGame.LoadLastGameInit();
}
protected function ShowActionConfPopup(action : int, title : string, description : string) : void
{
if (actionConfPopup)
{
delete actionConfPopup;
}
actionConfPopup = new W3ActionConfirmation in this;
actionConfPopup.SetMessageTitle(title);
actionConfPopup.SetMessageText(description);
actionConfPopup.actionID = action;
actionConfPopup.menuRef = this;
actionConfPopup.BlurBackground = true;
RequestSubMenu('PopupMenu', actionConfPopup);
}
public function OnActionConfirmed(action:int) : void
{
var parentMenu : CR4MenuBase;
parentMenu = (CR4MenuBase)GetParent();
switch (action)
{
case IGMActionType_Quit:
{
parentMenu.OnCloseMenu();
theGame.RequestEndGame();
break;
}
case IGMActionType_CloseGame:
{
theGame.RequestExit();
break;
}
}
}
event OnPresetApplied(groupId:name, targetPresetIndex:int)
{
hasChangedOption = true;
IngameMenu_ChangePresetValue(groupId, targetPresetIndex, this);
if (groupId == 'Rendering' && !isMainMenu)
{
m_fxForceBackgroundVis.InvokeSelfOneArg(FlashArgBool(true));
}
if(groupId == 'PostProcess')
{
UpdateAO2CorrespondRT(theGame.GetRTEnabled(), true);
UpdateOptions('PostProcess', false);
}
updateOptionsDisableState();
}
event OnTelemetryConsentChanged(telemetryConsent:bool)
{
theTelemetry.TelemetryConsentChanged( telemetryConsent );
}
event OnConsentPopupWasShown(consentPopupWasShown: bool)
{
theTelemetry.MarkShownConsentWindow();
}
public function UpdateOptions(groupId:name, applyLocks:bool)
{
var optionChangeContainer : CScriptedFlashObject;
optionChangeContainer = m_flashValueStorage.CreateTempFlashObject();
IngameMenu_GatherOptionUpdatedValues(groupId, optionChangeContainer, m_flashValueStorage, applyLocks);
m_flashValueStorage.SetFlashObject( "ingamemenu.optionValueChanges", optionChangeContainer );
IngameMenu_GatherOptionUpdatedValueList(groupId, m_flashValueStorage);
}
public function DLSSSupported()
{
var DLSSIsSupported : bool;
DLSSIsSupported = theGame.GetIsDLSSSupported();
m_fxSetDLSSIsSupported.InvokeSelfTwoArgs( FlashArgBool(DLSSIsSupported), FlashArgUInt(NameToFlashUInt('AAMode') ));
}
public function XESSSupported()
{
var XESSIsSupported : bool;
XESSIsSupported = theGame.GetIsXESSSupported();
m_fxSetXESSIsSupported.InvokeSelfTwoArgs( FlashArgBool(XESSIsSupported), FlashArgUInt(NameToFlashUInt('AAMode') ));
}
public function RTEnabled()
{
var RTEnabled : bool;
RTEnabled = theGame.GetRTEnabled();
m_fxSetRTEnabled.InvokeSelfTwoArgs( FlashArgBool(RTEnabled), FlashArgUInt(NameToFlashUInt('Virtual_SSAOSolution') ));
if(RTEnabled == false)
{
if( StringToInt(mInGameConfigWrapper.GetVarValue('PostProcess', 'Virtual_SSAOSolution')) >= 2 )
{
mInGameConfigWrapper.SetVarValue( 'PostProcess', 'Virtual_SSAOSolution','1' );
m_fxUpdateOptionValue.InvokeSelfTwoArgs( FlashArgUInt(NameToFlashUInt('Virtual_SSAOSolution')), FlashArgString('1') );
}
}
}
event OnCancelOptionValueChange(groupId:int, optionName:name)
{
var groupName:name;
var curTimeGetOption:int;
groupName = mInGameConfigWrapper.GetGroupName(groupId);
if (groupName == 'Graphics' && optionName == 'AAMode' && theGame.GetIsXESSSupported() == false)
{
showNotification(GetPlatformLocString("option_warning_xess_support"));
}
if (groupName == 'Graphics' && optionName == 'AAMode' && theGame.GetIsDLSSSupported() == false)
{
showNotification(GetPlatformLocString("option_warning_dlss_support"));
}
curTimeGetOption = theGame.GetLocalTimeAsMilliseconds();
if(((curTimeGetOption - lastTimeGetOption) > 300))
{
lastTimeGetOption = curTimeGetOption;
theSound.SoundEvent("gui_global_denied");
}
}
event OnOptionValueChanged(groupId:int, optionName:name, optionValue:string)
{
var groupName : name;
var hud : CR4ScriptedHud;
var isValid : bool;
var isBuffered : bool;
var dialogModule : CR4HudModuleDialog;
var subtitleModule : CR4HudModuleSubtitles;
var onelinerModule : CR4HudModuleOneliners;
var minimapModule : CR4HudModuleMinimap2;
var objectiveModule : CR4HudModuleQuests;
hasChangedOption = true;
OnPlaySoundEvent( "gui_global_switch" );
if (groupId == NameToFlashUInt('SpecialSettingsGroupId'))
{
HandleSpecialValueChanged(optionName, optionValue);
return true;
}
if (optionName == 'InvertLockOption')
{
if ( optionValue == "true" )
thePlayer.SetInvertedLockOption(true);
else
thePlayer.SetInvertedLockOption(false);
}
if (optionName == 'InvertCameraX')
{
if ( optionValue == "true" )
thePlayer.SetInvertedCameraX(true);
else
thePlayer.SetInvertedCameraX(false);
}
if (optionName == 'InvertCameraY')
{
if ( optionValue == "true" )
thePlayer.SetInvertedCameraY(true);
else
thePlayer.SetInvertedCameraY(false);
}
if (optionName == 'InvertCameraXOnMouse')
{
if ( optionValue == "true" )
thePlayer.SetInvertedMouseCameraX(true);
else
thePlayer.SetInvertedMouseCameraX(false);
}
if (optionName == 'InvertCameraYOnMouse')
{
if ( optionValue == "true" )
thePlayer.SetInvertedMouseCameraY(true);
else
thePlayer.SetInvertedMouseCameraY(false);
}
if (optionName == 'EnableAlternateSignCasting')
{
if ( optionValue == "1" )
{
thePlayer.GetInputHandler().SetIsAltSignCasting(true);
FactsSet( "nge_alt_sign_casting_chosen", 1 );
}
else
{
thePlayer.GetInputHandler().SetIsAltSignCasting(false);
FactsSet( "nge_alt_sign_casting_chosen", 0 );
}
thePlayer.ApplyCastSettings();
}
if (optionName == 'EnableAlternateExplorationCamera')
{
if ( optionValue == "1" )
thePlayer.SetExplCamera(true);
else
thePlayer.SetExplCamera(false);
}
if (optionName == 'EnableAlternateCombatCamera')
{
if ( optionValue == "1" )
thePlayer.SetCmbtCamera(true);
else
thePlayer.SetCmbtCamera(false);
}
if (optionName == 'EnableAlternateHorseCamera')
{
if ( optionValue == "1" )
thePlayer.SetHorseCamera(true);
else
thePlayer.SetHorseCamera(false);
}
if (optionName == 'SoftLockCameraAssist')
{
if ( optionValue == "true" )
thePlayer.SetSoftLockCameraAssist(true);
else
thePlayer.SetSoftLockCameraAssist(false);
}
if (optionName == 'SubtitleScale')
{
hud = (CR4ScriptedHud)theGame.GetHud();
if(hud)
{
dialogModule = (CR4HudModuleDialog)hud.GetHudModule("DialogModule");
if(dialogModule)
dialogModule.SetSubtitleScale( StringToInt(optionValue) );
subtitleModule = (CR4HudModuleSubtitles)hud.GetHudModule("SubtitlesModule");
if(subtitleModule)
subtitleModule.SetSubtitleScale( StringToInt(optionValue) );
}
}
if (optionName == 'DialogChoiceScale')
{
hud = (CR4ScriptedHud)theGame.GetHud();
if(hud)
{
dialogModule = (CR4HudModuleDialog)hud.GetHudModule("DialogModule");
if(dialogModule)
dialogModule.SetDialogChoiceScale( StringToInt(optionValue) );
}
}
if (optionName == 'OnelinerScale')
{
hud = (CR4ScriptedHud)theGame.GetHud();
if(hud)
{
onelinerModule = (CR4HudModuleOneliners)hud.GetHudModule("OnelinersModule");
if(onelinerModule)
onelinerModule.SetOnelinerScale( StringToInt(optionValue) );
}
}
if (optionName == 'WidescreenCutscene' && optionValue == "true")
{
theGame.GetGuiManager().ShowUserDialog(0, "", "message_widescreen_cutscene_use_cachets_disclaimer", UDB_Ok);
}
if (optionName == 'MinimapDuringFocusCombat')
{
hud = (CR4ScriptedHud)theGame.GetHud();
if(hud)
{
minimapModule = (CR4HudModuleMinimap2)hud.GetHudModule("Minimap2Module");
if(minimapModule)
{
if ( optionValue == "true" )
{
minimapModule.SetMinimapDuringFocusCombat( true );
}
else
{
minimapModule.SetMinimapDuringFocusCombat( false );
}
}
}
}
if (optionName == 'ObjectiveDuringFocusCombat')
{
hud = (CR4ScriptedHud)theGame.GetHud();
if(hud)
{
objectiveModule = (CR4HudModuleQuests)hud.GetHudModule("QuestsModule");
if(objectiveModule)
{
if ( optionValue == "true" )
{
objectiveModule.SetObjectiveDuringFocusCombat( true );
}
else
{
objectiveModule.SetObjectiveDuringFocusCombat( false );
}
}
}
}
if (optionName == 'LeftStickSprint')
{
if ( optionValue == "true" )
thePlayer.SetLeftStickSprint(true);
else
thePlayer.SetLeftStickSprint(false);
}
if (optionName == 'AutoApplyBladeOils')
{
if ( optionValue == "true" )
thePlayer.SetAutoApplyOils(true);
else
thePlayer.SetAutoApplyOils(false);
}
if (optionName == 'HardwareCursor')
{
isValid = optionValue;
m_fxSetHardwareCursorOn.InvokeSelfOneArg(FlashArgBool(isValid));
}
if( optionName == 'ConsentTelemetry' )
{
if ( optionValue =="true" )
{
OnTelemetryConsentChanged(true);
}
else
{
OnTelemetryConsentChanged(false);
}
}
if (optionName == 'SwapAcceptCancel')
{
swapAcceptCancelChanged = true;
}
if (optionName == 'AlternativeRadialMenuInputMode')
{
alternativeRadialInputChanged = true;
}
if (optionName == 'EnableUberMovement')
{
if ( optionValue == "1" )
theGame.EnableUberMovement( true );
else
theGame.EnableUberMovement( false );
}
if (optionName == 'GwentDifficulty')
{
if ( optionValue == "0" )
FactsSet( 'gwent_difficulty' , 1 );
else if ( optionValue == "1" )
FactsSet( 'gwent_difficulty' , 2 );
else if ( optionValue == "2" )
FactsSet( 'gwent_difficulty' , 3 );
return true;
}
if (optionName == 'HardwareCursor')
{
updateInputDeviceRequired = true;
}
groupName = mInGameConfigWrapper.GetGroupName( groupId );
isBuffered =
( mInGameConfigWrapper.DoGroupHasTag( groupName, 'buffered' ) || mInGameConfigWrapper.DoVarHasTag( groupName, optionName, 'buffered' ) )
&& !mInGameConfigWrapper.DoVarHasTag( groupName, optionName, 'dropDown' )
&& !mInGameConfigWrapper.DoVarHasTag( groupName, optionName, 'nonbuffered' );
if ( groupName == 'Localization' &&
optionName == 'Virtual_Localization_speech' &&
theGame.GetVoiceLangDownloadStatus( mInGameConfigWrapper.GetVarOption( groupName, optionName, StringToInt( optionValue ) ) ) != STREAMABLE_LOADED
)
{
return true;
}
if( isBuffered == true )
{
inGameConfigBufferedWrapper.SetVarValue(groupName, optionName, optionValue);
}
else
{
mInGameConfigWrapper.SetVarValue(groupName, optionName, optionValue);
}
theGame.OnConfigValueChanged(optionName, optionValue);
if (groupName == 'Hud' || optionName == 'Subtitles')
{
hud = (CR4ScriptedHud)theGame.GetHud();
if (hud)
{
hud.UpdateHudConfig(optionName, true);
}
}
if (groupName == 'Localization')
{
if (optionName == 'Virtual_Localization_text')
{
currentLangValue = optionValue;
}
else if (optionName == 'Virtual_Localization_speech')
{
currentSpeechLang = optionValue;
}
}
if (groupName == 'Rendering' && !isMainMenu)
{
m_fxForceBackgroundVis.InvokeSelfOneArg(FlashArgBool(true));
}
if (groupName == 'Rendering' && optionName == 'PreserveSystemGamma')
{
theGame.GetGuiManager().DisplayRestartGameToApplyAllChanges();
}
if(optionName == 'EnableRT')
{
if( optionValue == "true" )
{
if(StringToInt(mInGameConfigWrapper.GetVarValue('PostProcess', 'Virtual_SSAOSolution')) != IGMOPT_AO_NRDRTAO)
{
mInGameConfigWrapper.SetVarValue('PostProcess', 'Virtual_SSAOSolution', IntToString(IGMOPT_AO_NRDRTAO));
}
}
if( optionValue == "false" )
{
if(StringToInt(mInGameConfigWrapper.GetVarValue('PostProcess', 'Virtual_SSAOSolution')) >= IGMOPT_AO_RTAO)
{
mInGameConfigWrapper.SetVarValue('PostProcess', 'Virtual_SSAOSolution', IntToString(IGMOPT_AO_SSAO));
}
}
UpdateAO2CorrespondRT(optionValue == "true", false);
UpdateOptions('PostProcess', false);
updateRTOptionEnabled(optionValue == "true");
updateRTAOOptionChanged();
updateRTROptionChanged();
}
if (optionName == 'AllowMotionBlur')
{
updateMotionBlurOptionChanged(optionValue == "true");
}
if ( optionName == 'Virtual_HairWorksLevel' )
{
updateHairWorksOptionChanged();
}
if( optionName == 'AAMode' )
{
UpdateOptions('PostProcess', true);
updateAAOptionChanged();
}
if (optionName == 'RTAOEnabled')
{
updateRTAOOptionChanged();
}
if (optionName == 'EnableRtRadiance')
{
updateRTROptionChanged();
}
if( optionName == 'DeveloperMode' )
{
ShowDeveloperOptions( optionValue == "true" );
}
if (optionName == 'GraphicsPreset')
{
setLocksOnPresetChanged();
}
if (optionName == 'Virtual_DLSSG')
{
updateDLSSGOptionChanged();
}
if (optionName == 'Virtual_Reflex')
{
updateReflexOptionChanged();
}
IngameMenu_AdditionalOptionValueChangeHandling( groupName, optionName, optionValue, m_flashValueStorage );
if ( optionName == 'CrossProgression' )
{
theGame.UpdateCrossProgressionValue( optionValue );
}
}
private function updateMotionBlurOptionChanged(enabled:bool):void
{
var dataObject : CScriptedFlashObject;
var dataArray : CScriptedFlashArray;
dataArray = m_flashValueStorage.CreateTempFlashArray();
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('MotionBlurIntensity') );
dataObject.SetMemberFlashBool( "disabled", !enabled);
dataArray.PushBackFlashObject(dataObject);
m_flashValueStorage.SetFlashArray( "options.update_disabled", dataArray );
theGame.GetGuiManager().ForceProcessFlashStorage();
}
private function setLocksOnPresetChanged():void
{
setLocksOnRTChange(theGame.GetRTEnabled());
updateHairWorksOptionChanged();
updateAAOptionChanged();
}
private function setLocksOnRTChange(enabled:bool):void
{
UpdateAO2CorrespondRT(enabled, false);
UpdateOptions('PostProcess', true);
updateRTOptionEnabled(enabled);
updateRTAOOptionChanged();
updateRTROptionChanged();
}
private function updateOptionsDisableState():void
{
updateRTOptionEnabled(theGame.GetRTEnabled());
updateAAOptionChanged();
updateHairWorksOptionChanged();
updateRTAOOptionChanged();
updateRTROptionChanged();
}
protected function updateRTOptionEnabled(enabled:bool):void
{
var dataObject : CScriptedFlashObject;
var dataArray : CScriptedFlashArray;
if ( !theGame.GetRTSupported() ) return;
dataArray = m_flashValueStorage.CreateTempFlashArray();
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('RTGIPreset') );
dataObject.SetMemberFlashBool( "disabled", !enabled);
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('EnableRtRadiance') );
dataObject.SetMemberFlashBool( "disabled", !enabled);
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('Shadows') );
dataObject.SetMemberFlashBool( "disabled", !enabled);
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('RTAOEnabled') );
dataObject.SetMemberFlashBool( "disabled", !enabled);
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('Virtual_GlobalIllumination') );
dataObject.SetMemberFlashBool( "disabled", !enabled);
dataArray.PushBackFlashObject(dataObject);
m_flashValueStorage.SetFlashArray( "options.update_disabled", dataArray );
theGame.GetGuiManager().ForceProcessFlashStorage();
}
protected function updateAAOptionChanged():void
{
var dataObject : CScriptedFlashObject;
var dataArray : CScriptedFlashArray;
dataArray = m_flashValueStorage.CreateTempFlashArray();
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('FSRQuality') );
dataObject.SetMemberFlashBool( "disabled", !theGame.GetFSREnabled());
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('DLSSQuality') );
dataObject.SetMemberFlashBool( "disabled", !theGame.GetDLSSEnabled());
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('XESSQuality') );
dataObject.SetMemberFlashBool( "disabled", !theGame.GetXESSEnabled());
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('DynamicResolutionScaling') );
dataObject.SetMemberFlashBool( "disabled", theGame.GetDLSSEnabled() || theGame.GetDLSSGEnabled() || theGame.GetXESSEnabled());
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('Virtual_SharpenAmount') );
dataObject.SetMemberFlashBool( "disabled", false );
dataArray.PushBackFlashObject(dataObject);
m_flashValueStorage.SetFlashArray( "options.update_disabled", dataArray );
theGame.GetGuiManager().ForceProcessFlashStorage();
}
protected function updateHairWorksOptionChanged():void
{
var dataObject : CScriptedFlashObject;
var dataArray : CScriptedFlashArray;
dataArray = m_flashValueStorage.CreateTempFlashArray();
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('Virtual_HairWorksAALevel') );
dataObject.SetMemberFlashBool( "disabled", !theGame.GetHairWorksEnabled());
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('Virtual_HairWorksQualityPreset') );
dataObject.SetMemberFlashBool( "disabled", !theGame.GetHairWorksEnabled());
dataArray.PushBackFlashObject(dataObject);
m_flashValueStorage.SetFlashArray( "options.update_disabled", dataArray );
theGame.GetGuiManager().ForceProcessFlashStorage();
}
protected function updateRTAOOptionChanged():void
{
var dataObject : CScriptedFlashObject;
var dataArray : CScriptedFlashArray;
dataArray = m_flashValueStorage.CreateTempFlashArray();
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('SSAOEnabled') );
dataObject.SetMemberFlashBool( "disabled", theGame.GetRTAOEnabled());
dataArray.PushBackFlashObject(dataObject);
m_flashValueStorage.SetFlashArray( "options.update_disabled", dataArray );
theGame.GetGuiManager().ForceProcessFlashStorage();
}
protected function updateDLSSGOptionChanged():void
{
var dataObject : CScriptedFlashObject;
var dataArray : CScriptedFlashArray;
var dlssEnabled : bool;
var dlssgEnabled : bool;
dlssEnabled = theGame.GetDLSSEnabled();
dlssgEnabled = theGame.GetDLSSGEnabled();
dataArray = m_flashValueStorage.CreateTempFlashArray();
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('Virtual_Reflex') );
dataObject.SetMemberFlashBool( "disabled", dlssgEnabled || !theGame.GetReflexSupported());
if (dlssgEnabled)
{
dataObject.SetMemberFlashString( "current", "1");
}
else
{
dataObject.SetMemberFlashBool( "resetToStartingValue", true);
}
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('VSync') );
dataObject.SetMemberFlashBool( "disabled", dlssgEnabled);
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('FPSLimit') );
dataObject.SetMemberFlashBool( "disabled", dlssgEnabled);
dataArray.PushBackFlashObject(dataObject);
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('DynamicResolutionScaling') );
dataObject.SetMemberFlashBool( "disabled", dlssEnabled || dlssgEnabled);
dataArray.PushBackFlashObject(dataObject);
m_flashValueStorage.SetFlashArray( "options.update_disabled", dataArray );
theGame.GetGuiManager().ForceProcessFlashStorage();
}
protected function updateReflexOptionChanged():void
{
var dataObject : CScriptedFlashObject;
var dataArray : CScriptedFlashArray;
dataArray = m_flashValueStorage.CreateTempFlashArray();
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('Virtual_Reflex') );
dataObject.SetMemberFlashBool( "disabled", theGame.GetDLSSGEnabled() || !theGame.GetReflexSupported());
if (!theGame.GetDLSSGEnabled())
{
dataObject.SetMemberFlashBool( "resetStartingValue", true);
}
dataArray.PushBackFlashObject(dataObject);
m_flashValueStorage.SetFlashArray( "options.update_disabled", dataArray );
theGame.GetGuiManager().ForceProcessFlashStorage();
}
protected function updateRTROptionChanged():void
{
var dataObject : CScriptedFlashObject;
var dataArray : CScriptedFlashArray;
dataArray = m_flashValueStorage.CreateTempFlashArray();
dataObject = m_flashValueStorage.CreateTempFlashObject();
dataObject.SetMemberFlashUInt( "tag", NameToFlashUInt('Virtual_SSREnabled') );
dataObject.SetMemberFlashBool( "disabled", theGame.GetRTREnabled());
dataArray.PushBackFlashObject(dataObject);
m_flashValueStorage.SetFlashArray( "options.update_disabled", dataArray );
theGame.GetGuiManager().ForceProcessFlashStorage();
}
event OnButtonClicked( optionName : name )
{
if ( optionName == 'MoreSpeechLanguages' )
{
theGame.DisplayStore();
}
}
event OnOptionSelectionChanged( optionName : name, value : bool)
{
if (!postprocessEntered && optionName == 'AAMode')
{
UpdateOptions('PostProcess', true);
postprocessEntered = true;
updateAAOptionChanged();
}
if ( optionName == 'EnableRT')
{
if (value && postprocessRtGreyed == true)
{
postprocessRtGreyed = false;
UpdateOptions('PostProcess', false);
}
}
else if (value)
{
if (postprocessRtGreyed == false)
{
postprocessRtGreyed = true;
UpdateOptions('PostProcess', true);
}
}
}
protected function HandleSpecialValueChanged(optionName:name, optionValue:string):void
{
var intValue : int;
if (optionName == 'GameDifficulty')
{
intValue = StringToInt(optionValue, 1);
lastSetDifficulty = intValue + 1;
}
}
public function OnGraphicsUpdated(keepChanges:bool):void
{
}
event OnOptionPanelNavigateBack()
{
var graphicChangesPending:bool;
var hud : CR4ScriptedHud;
if (inGameConfigBufferedWrapper.AnyBufferedVarHasTag('refreshViewport'))
{
inGameConfigBufferedWrapper.ApplyNewValues();
theGame.GetGuiManager().ShowProgressDialog(UMID_GraphicsRefreshing, "", "message_text_confirm_option_changes", true, UDB_OkCancel, 100, UMPT_GraphicsRefresh, '');
ReopenMenu();
return true;
}
hud = (CR4ScriptedHud)theGame.GetHud();
if (hud)
{
hud.RefreshHudConfiguration();
}
thePlayer.SetAutoCameraCenter( inGameConfigBufferedWrapper.GetVarValue( 'Gameplay', 'AutoCameraCenter' ) );
thePlayer.SetEnemyUpscaling( inGameConfigBufferedWrapper.GetVarValue( 'Gameplay', 'EnemyUpscaling' ) );
}
event OnNavigatedBack()
{
var lowestDifficultyUsed : EDifficultyMode;
var hud : CR4ScriptedHud;
var overlayPopupRef : CR4OverlayPopup;
var radialMenuModule : CR4HudModuleRadialMenu;
var confirmResult : int;
var flashObject : CScriptedFlashObject;
hud = (CR4ScriptedHud)(theGame.GetHud());
overlayPopupRef = (CR4OverlayPopup) theGame.GetGuiManager().GetPopup('OverlayPopup');
if( inGameConfigBufferedWrapper.IsEmpty() == false )
{
if (!inGameConfigBufferedWrapper.AnyBufferedVarHasTag('refreshViewport'))
{
inGameConfigBufferedWrapper.FlushBuffer();
}
hasChangedOption = true;
}
if ( theGame.GetVoiceLangDownloadStatus( mInGameConfigWrapper.GetVarOption( 'Localization', 'Virtual_Localization_speech', StringToInt( currentSpeechLang ) ) ) != STREAMABLE_LOADED )
{
currentSpeechLang = lastUsedSpeechLang;
mInGameConfigWrapper.SetVarValue( 'Localization', 'Virtual_Localization_speech', currentSpeechLang );
theGame.UpdateSpeechLanguageSlider( currentSpeechLang );
}
if (currentLangValue != lastUsedLangValue || lastUsedSpeechLang != currentSpeechLang)
{
lastUsedLangValue = currentLangValue;
lastUsedSpeechLang = currentSpeechLang;
theGame.ReloadLanguage();
flashObject = m_flashValueStorage.CreateTempFlashObject();
flashObject.SetMemberFlashUInt( "optionTag", NameToFlashUInt( 'Virtual_Localization_speech' ) );
flashObject.SetMemberFlashString( "optionSelectedId", currentSpeechLang );
m_flashValueStorage.SetFlashObject( "option.changedId", flashObject );
}
if (swapAcceptCancelChanged)
{
swapAcceptCancelChanged = false;
UpdateAcceptCancelSwaping();
if (hud)
{
hud.UpdateAcceptCancelSwaping();
}
if (overlayPopupRef)
{
overlayPopupRef.UpdateAcceptCancelSwaping();
}
}
if (alternativeRadialInputChanged)
{
alternativeRadialInputChanged = false;
if (hud)
{
radialMenuModule = (CR4HudModuleRadialMenu)hud.GetHudModule( "RadialMenuModule" );
if (radialMenuModule)
{
radialMenuModule.UpdateInputMode();
}
}
}
isShowingSaveList = false;
isShowingLoadList = false;
OnPlaySoundEvent( "gui_global_panel_close" );
lowestDifficultyUsed = theGame.GetLowestDifficultyUsed();
if (!isMainMenu && theGame.GetDifficultyLevel() != lastSetDifficulty && lowestDifficultyUsed > lastSetDifficulty && lowestDifficultyUsed > EDM_Medium)
{
diffChangeConfPopup = new W3DifficultyChangeConfirmation in this;
diffChangeConfPopup.SetMessageTitle("");
diffChangeConfPopup.SetMessageText( GetPlatformLocString( "difficulty_change_warning_message", "difficulty_change_warning_message_X1" ) );
diffChangeConfPopup.menuRef = this;
diffChangeConfPopup.targetDifficulty = lastSetDifficulty;
diffChangeConfPopup.BlurBackground = true;
RequestSubMenu('PopupMenu', diffChangeConfPopup);
}
else if (lastSetDifficulty != theGame.GetDifficultyLevel())
{
theGame.SetDifficultyLevel(lastSetDifficulty);
theGame.OnDifficultyChanged(lastSetDifficulty);
}
SaveChangedSettings();
if (overlayPopupRef && updateInputDeviceRequired)
{
updateInputDeviceRequired = false;
overlayPopupRef.UpdateInputDevice();
}
curMenuDepth -= 1;
if (curMenuDepth < depthOptions) {
curMenuDepth = 1;
}
theTelemetry.NoticeMenuDepth(curMenuDepth);
}
public function CancelDifficultyChange() : void
{
var difficultyIndex:int;
var difficultyIndexAsString:string;
lastSetDifficulty = theGame.GetDifficultyLevel();
difficultyIndex = lastSetDifficulty - 1;
difficultyIndexAsString = "" + difficultyIndex;
m_fxUpdateOptionValue.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('GameDifficulty')), FlashArgString(difficultyIndexAsString));
}
protected function SaveChangedSettings()
{
if (hasChangedOption)
{
hasChangedOption = false;
theGame.SaveUserSettings();
}
}
event OnProfileChange()
{
if( !disableAccountPicker )
{
SetIgnoreInput(true);
theGame.ChangeActiveUser();
}
}
event OnSaveGameCalled(type : ESaveGameType, saveArrayIndex : int)
{
var saves : array< SSavegameInfo >;
var currentSave : SSavegameInfo;
ignoreInput = true;
if ( theGame.AreSavesLocked() )
{
theGame.GetGuiManager().DisplayLockedSavePopup();
SetIgnoreInput(false);
return false;
}
if (saveArrayIndex >= 0)
{
if (saveConfPopup)
{
delete saveConfPopup;
}
theGame.GetRecentListSG( saves );
currentSave = saves[ saveArrayIndex ];
saveConfPopup = new W3SaveGameConfirmation in this;
saveConfPopup.SetMessageTitle("");
saveConfPopup.SetMessageText( GetPlatformLocString( "error_message_overwrite_save" ) );
saveConfPopup.menuRef = this;
saveConfPopup.type = currentSave.slotType;
saveConfPopup.slot = currentSave.slotIndex;
saveConfPopup.BlurBackground = true;
RequestSubMenu('PopupMenu', saveConfPopup);
}
else
{
executeSave(type, -1);
SetIgnoreInput(false);
}
}
public function executeSave(type : ESaveGameType, slot : int)
{
theGame.SaveGame(type, slot);
m_fxNavigateBack.InvokeSelf();
}
event OnLoadGameCalled(type : ESaveGameType, saveListIndex : int)
{
var saveGameRef : SSavegameInfo;
var saveGames : array< SSavegameInfo >;
if (ignoreInput)
{
return false;
}
disableAccountPicker = true;
if (loadConfPopup)
{
delete loadConfPopup;
}
theGame.ListSavedGames( saveGames );
saveGameRef = saveGames[saveListIndex];
if (panelMode || (isMainMenu && !hasValidAutosaveData()))
{
LoadSaveRequested(saveGameRef);
}
else
{
loadConfPopup = new W3ApplyLoadConfirmation in this;
loadConfPopup.SetMessageTitle( GetPlatformLocString( "panel_mainmenu_popup_load_title" ) );
if (isMainMenu)
{
loadConfPopup.SetMessageText( GetPlatformLocString("error_message_load_game_main_menu") );
}
else
{
loadConfPopup.SetMessageText( GetPlatformLocString( "error_message_load_game" ) );
}
loadConfPopup.menuRef = this;
loadConfPopup.saveSlotRef = saveGameRef;
loadConfPopup.BlurBackground = true;
SetIgnoreInput(true);
RequestSubMenu('PopupMenu', loadConfPopup);
}
}
public function LoadSaveRequested(saveSlotRef : SSavegameInfo) : void
{
var fromDeathScreen : bool;
if (theGame.GetGuiManager().GetPopup('MessagePopup') && theGame.GetGuiManager().lastMessageData.messageId == UMID_ControllerDisconnected)
{
SetIgnoreInput(false);
disableAccountPicker = false;
return;
}
SetIgnoreInput(true);
if (isMainMenu)
{
disableAccountPicker = true;
}
fromDeathScreen = (CR4DeathScreenMenu)m_parentMenu;
theGame.LoadGameInit( saveSlotRef , fromDeathScreen );
}
event OnImportGameCalled(menuTag:int):void
{
var savesToImport : array< SSavegameInfo >;
var difficulty:int;
var tutorialsEnabled:bool;
var simulateImport:bool;
var maskResult:int;
var progress : float;
if (!theGame.IsContentAvailable('launch0'))
{
progress = theGame.ProgressToContentAvailable('launch0');
theSound.SoundEvent("gui_global_denied");
theGame.GetGuiManager().ShowProgressDialog(0, "", "error_message_new_game_not_ready", true, UDB_Ok, progress, UMPT_Content, 'launch0');
}
else
{
theGame.ListW2SavedGames( savesToImport );
if ( menuTag < savesToImport.Size() )
{
disableAccountPicker = true;
theGame.ClearInitialFacts();
if (theGame.ImportSave( savesToImport[ menuTag ] ))
{
currentNewGameConfig.import_save_index = menuTag;
if ((lastSetTag & IGMC_New_game_plus) == IGMC_New_game_plus)
{
m_fxForceEnterCurEntry.InvokeSelf();
}
else
{
theGame.SetDifficultyLevel(currentNewGameConfig.difficulty);
TutorialMessagesEnable(currentNewGameConfig.tutorialsOn);
if ( theGame.RequestNewGame( theGame.GetNewGameDefinitionFilename() ) )
{
OnPlaySoundEvent("gui_global_game_start");
OnPlaySoundEvent("mus_intro_usm");
GetRootMenu().CloseMenu();
}
}
}
else
{
showNotification(GetLocStringByKeyExt("import_witcher_two_failed"));
OnPlaySoundEvent("gui_global_denied");
}
}
}
}
event OnNewGamePlusCalled(saveListIndex:int):void
{
var startGameStatus : ENewGamePlusStatus;
var saveGameRef : SSavegameInfo;
var saveGames : array< SSavegameInfo >;
var errorMessage : string;
var progress : float;
var requiredContent : name = 'content12';
ignoreInput = true;
if (!theGame.IsContentAvailable(requiredContent))
{
progress = theGame.ProgressToContentAvailable(requiredContent);
theSound.SoundEvent("gui_global_denied");
SetIgnoreInput(false);
theGame.GetGuiManager().ShowProgressDialog(0, "", "error_message_new_game_not_ready", true, UDB_Ok, progress, UMPT_Content, requiredContent);
}
else
{
disableAccountPicker = true;
theGame.ListSavedGames( saveGames );
saveGameRef = saveGames[saveListIndex];
if (currentNewGameConfig.import_save_index == -1 && currentNewGameConfig.simulate_import)
{
theGame.AddInitialFact("simulate_import_ingame");
}
theGame.SetDifficultyLevel(currentNewGameConfig.difficulty);
TutorialMessagesEnable(currentNewGameConfig.tutorialsOn);
startGameStatus = theGame.StartNewGamePlus(saveGameRef);
if (startGameStatus == NGP_Success)
{
theGame.GetGuiManager().RequestMouseCursor(false);
OnPlaySoundEvent("gui_global_game_start");
OnPlaySoundEvent("mus_intro_usm");
GetRootMenu().CloseMenu();
}
else
{
errorMessage = "";
SetIgnoreInput(false);
disableAccountPicker = false;
switch (startGameStatus)
{
case NGP_Invalid:
errorMessage = GetPlatformLocString("newgame_plus_error_invalid");
break;
case NGP_CantLoad:
errorMessage = GetLocStringByKeyExt("newgame_plus_error_cantload");
break;
case NGP_TooOld:
errorMessage = GetLocStringByKeyExt("newgame_plus_error_too_old");
break;
case NGP_RequirementsNotMet:
errorMessage = GetLocStringByKeyExt("newgame_plus_error_requirementnotmet");
break;
case NGP_InternalError:
errorMessage = GetPlatformLocString("newgame_plus_error_internalerror");
break;
case NGP_ContentRequired:
errorMessage = GetLocStringByKeyExt("newgame_plus_error_contentrequired");
break;
}
showNotification(errorMessage);
OnPlaySoundEvent("gui_global_denied");
}
}
}
event OnDeleteSaveCalled(type : ESaveGameType, saveListIndex : int, isSaveMode:bool)
{
if (ignoreInput)
{
return false;
}
SetIgnoreInput(true);
disableAccountPicker = true;
if (deleteConfPopup)
{
delete deleteConfPopup;
}
deleteConfPopup = new W3DeleteSaveConf in this;
deleteConfPopup.SetMessageTitle("");
if (theGame.GetPlatform() == Platform_PS5)
{
deleteConfPopup.SetMessageText( GetPlatformLocString( "error_message_delete_save_ps5" ) );
}
else
{
deleteConfPopup.SetMessageText( GetPlatformLocString( "panel_mainmenu_confirm_delete_text" ) );
}
deleteConfPopup.menuRef = this;
deleteConfPopup.type = type;
deleteConfPopup.slot = saveListIndex;
deleteConfPopup.saveMode = isSaveMode;
deleteConfPopup.BlurBackground = true;
RequestSubMenu('PopupMenu', deleteConfPopup);
}
event OnSyncSaveCalled(type : ESaveGameType, saveListIndex : int, isSaveMode:bool)
{
var manager : CR4GuiManager;
manager = (CR4GuiManager)theGame.GetGuiManager();
if (manager) {
manager.SyncGalaxySlot(saveListIndex);
}
}
event OnLoginCloudCalled()
{
var manager : CR4GuiManager;
if (!theGame.IsGalaxyUserSignedIn()) {
manager = (CR4GuiManager)theGame.GetGuiManager();
if (manager) {
manager.GalaxyQRSignInInitiate();
}
}
}
event OnShowCloudModalCalled()
{
var manager : CR4GuiManager;
if (!theGame.HasInternetConnection()) {
ShowErrorWindow( GOGNoInternetConnection );
} else if (theGame.IsGalaxyUserSignedIn()) {
manager = (CR4GuiManager)theGame.GetGuiManager();
if (manager) {
manager.ShowCloudModal();
}
}
}
public function DeleteSave(type : ESaveGameType, saveListIndex : int, isSaveMode:bool)
{
var saves : array< SSavegameInfo >;
var currentSave : SSavegameInfo;
var numSavesBeforeDelete : int;
theGame.GetRecentListSG( saves );
numSavesBeforeDelete = saves.Size();
if (saveListIndex < saves.Size())
{
currentSave = saves[ saveListIndex ];
theGame.DeleteSavedGame(currentSave);
}
if (numSavesBeforeDelete <= 1)
{
m_fxRemoveOption.InvokeSelfOneArg(FlashArgInt(NameToFlashUInt('Continue')));
m_fxRemoveOption.InvokeSelfOneArg(FlashArgInt(NameToFlashUInt('LoadGame')));
if (isInLoadselector)
{
m_fxNavigateBack.InvokeSelf();
}
else
{
SendSaveData();
}
}
else
{
if (isSaveMode)
{
SendSaveData();
}
else if (hasSaveDataToLoad())
{
SendLoadData();
}
}
}
protected function showOptionsPanel() : void
{
var l_DataFlashArray : CScriptedFlashArray;
if (theGame.GetPlatform() == Platform_PC)
{
m_fxSetHardwareCursorOn.InvokeSelfOneArg(FlashArgBool(mInGameConfigWrapper.GetVarValue('Rendering', 'HardwareCursor')));
}
l_DataFlashArray = IngameMenu_FillOptionsSubMenuData(m_flashValueStorage, isMainMenu);
m_initialSelectionsToIgnore = 1;
OnPlaySoundEvent( "gui_global_panel_open" );
m_flashValueStorage.SetFlashArray( "ingamemenu.options.entries", l_DataFlashArray );
curMenuDepth = depthOptions;
theTelemetry.NoticeMenuDepth(curMenuDepth);
}
public function ToggleRTEnabled() : void
{
theGame.ToggleRTEnabled();
RTEnabled();
m_fxUpdateOptionLabel.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('toggle_render')), FlashArgString(theGame.GetToggleButtonCaption()));
theGame.SaveUserSettings();
}
protected function showHelpPanel() : void
{
m_fxNavigateBack.InvokeSelf();
theGame.DisplaySystemHelp();
}
public function TryStartNewGame(optionsArray : int):void
{
var progress : float;
if (!theGame.IsContentAvailable('launch0'))
{
progress = theGame.ProgressToContentAvailable('launch0');
theSound.SoundEvent("gui_global_denied");
theGame.GetGuiManager().ShowProgressDialog(0, "", "error_message_new_game_not_ready", true, UDB_Ok, progress, UMPT_Content, 'launch0');
}
else
{
fetchNewGameConfigFromTag(optionsArray);
if ((optionsArray & IGMC_EP2_Save) == IGMC_EP2_Save)
{
theGame.InitStandaloneDLCLoading('bob_000_000', currentNewGameConfig.difficulty);
theGame.EnableUberMovement( true );
((CInGameConfigWrapper)theGame.GetInGameConfigWrapper()).SetVarValue( 'Gameplay', 'EnableUberMovement', 1 );
}
else if ((optionsArray & IGMC_EP1_Save) == IGMC_EP1_Save)
{
theGame.InitStandaloneDLCLoading('ep1', currentNewGameConfig.difficulty);
theGame.EnableUberMovement( true );
((CInGameConfigWrapper)theGame.GetInGameConfigWrapper()).SetVarValue( 'Gameplay', 'EnableUberMovement', 1 );
}
else
{
if (hasValidAutosaveData())
{
if (newGameConfPopup)
{
delete newGameConfPopup;
}
newGameConfPopup = new W3NewGameConfirmation in this;
newGameConfPopup.SetMessageTitle("");
newGameConfPopup.SetMessageText( GetPlatformLocString( "error_message_start_game" ) );
newGameConfPopup.menuRef = this;
newGameConfPopup.BlurBackground = true;
RequestSubMenu('PopupMenu', newGameConfPopup);
}
else
{
NewGameRequested();
}
}
}
}
protected function fetchNewGameConfigFromTag(optionsTag : int):void
{
var maskResult:int;
currentNewGameConfig.difficulty = optionsTag & IGMC_Difficulty_mask;
maskResult = optionsTag & IGMC_Tutorials_On;
currentNewGameConfig.tutorialsOn = (maskResult == IGMC_Tutorials_On);
maskResult = optionsTag & IGMC_Import_Save;
if (maskResult != IGMC_Import_Save)
{
currentNewGameConfig.import_save_index = -1;
}
maskResult = optionsTag & IGMC_Simulate_Import;
currentNewGameConfig.simulate_import = (maskResult == IGMC_Simulate_Import);
}
public function NewGameRequested():void
{
disableAccountPicker = true;
if (currentNewGameConfig.import_save_index == -1)
{
theGame.ClearInitialFacts();
}
if (currentNewGameConfig.import_save_index == -1 && currentNewGameConfig.simulate_import)
{
theGame.AddInitialFact("simulate_import_ingame");
}
theGame.SetDifficultyLevel(currentNewGameConfig.difficulty);
TutorialMessagesEnable(currentNewGameConfig.tutorialsOn);
StartNewGame();
}
event OnUpdateRescale(hScale : float, vScale : float)
{
var hud : CR4ScriptedHud;
var needRescale : bool;
hud = (CR4ScriptedHud)theGame.GetHud();
needRescale = false;
if( theGame.GetUIHorizontalFrameScale() != hScale )
{
theGame.SetUIHorizontalFrameScale(hScale);
mInGameConfigWrapper.SetVarValue('Hidden', 'uiHorizontalFrameScale', FloatToString(hScale));
needRescale = true;
hasChangedOption = true;
}
if( theGame.GetUIVerticalFrameScale() != vScale )
{
theGame.SetUIVerticalFrameScale(vScale);
mInGameConfigWrapper.SetVarValue('Hidden', 'uiVerticalFrameScale', FloatToString(vScale));
needRescale = true;
hasChangedOption = true;
}
if( needRescale && hud )
{
hud.RescaleModules();
}
}
public function ShowTutorialChosen(enabled:bool):void
{
TutorialMessagesEnable(enabled);
StartNewGame();
}
public function StartNewGame():void
{
if (theGame.GetGuiManager().GetPopup('MessagePopup') && theGame.GetGuiManager().lastMessageData.messageId == UMID_ControllerDisconnected)
{
return;
}
if ( theGame.RequestNewGame( theGame.GetNewGameDefinitionFilename() ) )
{
theGame.GetGuiManager().RequestMouseCursor(false);
OnPlaySoundEvent("gui_global_game_start");
OnPlaySoundEvent("mus_intro_usm");
GetRootMenu().CloseMenu();
}
}
function PopulateMenuData()
{
var l_DataFlashArray : CScriptedFlashArray;
var l_ChildMenuFlashArray : CScriptedFlashArray;
var l_DataFlashObject : CScriptedFlashObject;
var l_subDataFlashObject : CScriptedFlashObject;
l_DataFlashArray = m_structureCreator.PopulateMenuData();
m_flashValueStorage.SetFlashArray( "ingamemenu.entries", l_DataFlashArray );
}
protected function addInLoadOption():void
{
var l_DataFlashObject : CScriptedFlashObject;
var l_ChildMenuFlashArray : CScriptedFlashArray;
l_DataFlashObject = m_flashValueStorage.CreateTempFlashObject();
l_DataFlashObject.SetMemberFlashString( "id", "mainmenu_loadgame");
l_DataFlashObject.SetMemberFlashUInt( "tag", NameToFlashUInt('LoadGame') );
l_DataFlashObject.SetMemberFlashString( "label", GetLocStringByKeyExt("panel_mainmenu_loadgame") );
l_DataFlashObject.SetMemberFlashUInt( "type", IGMActionType_Load );
l_ChildMenuFlashArray = m_flashValueStorage.CreateTempFlashArray();
l_DataFlashObject.SetMemberFlashArray( "subElements", l_ChildMenuFlashArray );
m_flashValueStorage.SetFlashObject( "ingamemenu.addloading", l_DataFlashObject );
}
event OnBack()
{
CloseMenu();
}
public function HasSavesToImport() : bool
{
var savesToImport : array< SSavegameInfo >;
theGame.ListW2SavedGames( savesToImport );
return savesToImport.Size() != 0;
}
protected function SendImportSaveData()
{
var dataFlashArray : CScriptedFlashArray;
dataFlashArray = m_flashValueStorage.CreateTempFlashArray();
IngameMenu_PopulateImportSaveData(m_flashValueStorage, dataFlashArray);
m_initialSelectionsToIgnore = 1;
OnPlaySoundEvent( "gui_global_panel_open" );
isShowingSaveList = true;
m_flashValueStorage.SetFlashArray( "ingamemenu.importSlots", dataFlashArray );
}
protected function hasValidAutosaveData() : bool
{
var currentSave : SSavegameInfo;
var num : int;
var i : int;
num = theGame.GetNumSaveSlots( SGT_AutoSave );
for ( i = 0; i < num; i = i + 1 )
{
if ( theGame.GetSaveInSlot( SGT_AutoSave, i, currentSave ) )
{
return true;
}
}
num = theGame.GetNumSaveSlots( SGT_CheckPoint );
for ( i = 0; i < num; i = i + 1 )
{
if ( theGame.GetSaveInSlot( SGT_CheckPoint, i, currentSave ) )
{
return true;
}
}
return false;
}
public function HandleSaveListUpdate():void
{
if (isShowingSaveList)
{
SendSaveData();
}
else if (isShowingLoadList)
{
SendLoadData();
}
if (hasSaveDataToLoad())
{
addInLoadOption();
}
}
public function QRCodeReady(UrlAdres : String):void
{
m_fxQRCodeReadyToLoad.InvokeSelfOneArg(FlashArgString(UrlAdres));
}
public function CloudPersonaReady(namePersona : String):void
{
m_fxShowCloudModal.InvokeSelfOneArg(FlashArgString(namePersona));
}
public function CloseGalaxySignInModalWindow():void
{
m_fxCloseGalaxySignInModalWindow.InvokeSelf();
showNotification( GetLocStringByKeyExt("ui_cloud_gog_sign_in_success"),, true );
}
event OnVisitSignInPage()
{
var manager : CR4GuiManager;
manager = (CR4GuiManager)theGame.GetGuiManager();
if ( manager )
{
manager.VisitSignInPage();
}
}
event OnGalaxyQRSignInCancel()
{
var manager : CR4GuiManager;
manager = (CR4GuiManager)theGame.GetGuiManager();
if ( manager )
{
manager.GalaxyQRSignInCancel();
}
}
event OnGalaxyUnlinkAccounts()
{
var manager : CR4GuiManager;
manager = (CR4GuiManager)theGame.GetGuiManager();
if ( manager )
{
manager.GalaxyUnlinkAccounts();
}
}
public function CheckSaveAvailability(): void
{
if(!hasSaveDataToLoad())
{
m_fxRemoveOption.InvokeSelfOneArg(FlashArgInt(NameToFlashUInt('LoadGame')));
m_fxRemoveOption.InvokeSelfOneArg(FlashArgInt(NameToFlashUInt('Continue')));
}
else
{
PopulateMenuData();
}
}
protected function SendLoadData():void
{
var l_DataFlashObject : CScriptedFlashObject;
var dataFlashArray : CScriptedFlashArray;
l_DataFlashObject = m_flashValueStorage.CreateTempFlashObject();
l_DataFlashObject.SetMemberFlashBool( "isUserSignedIn", theGame.IsGalaxyUserSignedIn() && theGame.GetInGameConfigWrapper().GetVarValue( 'Gameplay', 'CrossProgression' ) == "true" );
m_flashValueStorage.SetFlashObject( "ingamemenu.gogCloudState", l_DataFlashObject );
dataFlashArray = m_flashValueStorage.CreateTempFlashArray();
PopulateSaveDataForSlotType(-1, dataFlashArray, false);
m_initialSelectionsToIgnore = 1;
OnPlaySoundEvent( "gui_global_panel_open" );
if (dataFlashArray.GetLength() == 0)
{
m_fxNavigateBack.InvokeSelf();
}
else
{
isShowingLoadList = true;
m_flashValueStorage.SetFlashArray( "ingamemenu.loadSlots", dataFlashArray );
}
}
protected function SendSaveData():void
{
var l_DataFlashObject : CScriptedFlashObject;
var dataFlashArray : CScriptedFlashArray;
l_DataFlashObject = m_flashValueStorage.CreateTempFlashObject();
l_DataFlashObject.SetMemberFlashBool( "isUserSignedIn", theGame.IsGalaxyUserSignedIn() && theGame.GetInGameConfigWrapper().GetVarValue( 'Gameplay', 'CrossProgression' ) == "true" );
m_flashValueStorage.SetFlashObject( "ingamemenu.gogCloudState", l_DataFlashObject );
dataFlashArray = m_flashValueStorage.CreateTempFlashArray();
PopulateSaveDataForSlotType(SGT_Manual, dataFlashArray, true);
m_initialSelectionsToIgnore = 1;
OnPlaySoundEvent( "gui_global_panel_open" );
isShowingSaveList = true;
m_flashValueStorage.SetFlashArray( "ingamemenu.saveSlots", dataFlashArray );
if ( theGame.ShouldShowSaveCompatibilityWarning() )
{
theGame.GetGuiManager().ShowUserDialog( UMID_SaveCompatWarning, "", "error_save_not_compatible", UDB_Ok );
}
}
protected function SendNewGamePlusSaves():void
{
var dataFlashArray : CScriptedFlashArray;
dataFlashArray = m_flashValueStorage.CreateTempFlashArray();
PopulateSaveDataForSlotType(-1, dataFlashArray, false);
theGame.GetGuiManager().ShowUserDialog(0, "", "message_new_game_plus_reminder", UDB_Ok);
if (dataFlashArray.GetLength() == 0)
{
OnPlaySoundEvent("gui_global_denied");
showNotification(GetLocStringByKeyExt("mainmenu_newgame_plus_no_saves"));
m_fxNavigateBack.InvokeSelf();
}
else
{
m_initialSelectionsToIgnore = 1;
OnPlaySoundEvent( "gui_global_panel_open" );
m_flashValueStorage.SetFlashArray( "ingamemenu.newGamePlusSlots", dataFlashArray );
}
}
protected function PopulateSaveDataForSlotType(saveType:int, parentObject:CScriptedFlashArray, allowEmptySlot:bool):void
{
IngameMenu_PopulateSaveDataForSlotType(m_flashValueStorage, saveType, parentObject, allowEmptySlot);
}
event OnLoadSaveImageCancelled():void
{
theGame.FreeScreenshotData();
}
event OnScreenshotDataRequested(saveIndex:int):void
{
var targetSaveInfo : SSavegameInfo;
var saveGames : array< SSavegameInfo >;
theGame.GetRecentListSG( saveGames );
UpdateSaveSlot();
if (saveIndex >= 0 && saveIndex < saveGames.Size())
{
targetSaveInfo = saveGames[saveIndex];
theGame.RequestScreenshotData(targetSaveInfo);
}
}
event OnCheckScreenshotDataReady():void
{
if (theGame.IsScreenshotDataReady())
{
m_fxOnSaveScreenshotRdy.InvokeSelf();
}
}
protected function SendInstalledDLCList():void
{
var currentData : CScriptedFlashObject;
var dataArray : CScriptedFlashArray;
var dlcManager : CDLCManager;
var i : int;
var dlcList : array<name>;
var currentName : string;
var currentDesc : string;
dataArray = m_flashValueStorage.CreateTempFlashArray();
dlcManager = theGame.GetDLCManager();
dlcManager.GetDLCs(dlcList);
for (i = 0; i < dlcList.Size(); i += 1)
{
currentData = m_flashValueStorage.CreateTempFlashObject();
currentName = GetLocStringByKeyExt( "content_name_" + NameToString(dlcList[i]) );
currentDesc = "";
if (currentName != "")
{
currentData.SetMemberFlashString("label", currentName);
currentData.SetMemberFlashString("desc", currentDesc);
dataArray.PushBackFlashObject(currentData);
}
}
m_flashValueStorage.SetFlashArray("ingamemenu.installedDLCs", dataArray);
}
protected function SendRescaleData():void
{
var currentData : CScriptedFlashObject;
currentData = m_flashValueStorage.CreateTempFlashObject();
currentData.SetMemberFlashNumber("initialHScale", theGame.GetUIHorizontalFrameScale() );
currentData.SetMemberFlashNumber("initialVScale", theGame.GetUIVerticalFrameScale() );
m_flashValueStorage.SetFlashObject("ingamemenu.uirescale", currentData);
}
protected function SendControllerData():void
{
var dataFlashArray : CScriptedFlashArray;
if ( (W3ReplacerCiri)thePlayer )
{
dataFlashArray = InGameMenu_CreateControllerDataCiri(m_flashValueStorage);
}
else
{
dataFlashArray = InGameMenu_CreateControllerData(m_flashValueStorage);
}
m_flashValueStorage.SetFlashArray( "ingamemenu.gamepad.mappings", dataFlashArray );
}
protected function SendKeybindData():void
{
var dataFlashArray : CScriptedFlashArray;
dataFlashArray = m_flashValueStorage.CreateTempFlashArray();
IngameMenu_GatherKeybindData(dataFlashArray, m_flashValueStorage);
m_flashValueStorage.SetFlashArray( "ingamemenu.keybindValues", dataFlashArray );
}
event OnClearKeybind(keybindTag:name):void
{
hasChangedOption = true;
mInGameConfigWrapper.SetVarValue('PCInput', keybindTag, "IK_None;IK_None");
SendKeybindData();
}
protected function GetKeybindGroupTag(keybindName : name) : name
{
if (mInGameConfigWrapper.DoVarHasTag('PCInput', keybindName, 'input_overlap1'))
{
return 'input_overlap1';
}
else if (mInGameConfigWrapper.DoVarHasTag('PCInput', keybindName, 'input_overlap2'))
{
return 'input_overlap2';
}
else if (mInGameConfigWrapper.DoVarHasTag('PCInput', keybindName, 'input_overlap3'))
{
return 'input_overlap3';
}
else if (mInGameConfigWrapper.DoVarHasTag('PCInput', keybindName, 'input_overlap4'))
{
return 'input_overlap4';
}
else if (mInGameConfigWrapper.DoVarHasTag('PCInput', keybindName, 'input_overlap5'))
{
return 'input_overlap5';
}
return '';
}
event OnChangeKeybind(keybindTag:name, newKeybindValue:EInputKey):void
{
var newSettingString : string;
var exisitingKeybind : name;
var groupIndex : int;
var keybindChangedMessage : string;
var numKeybinds : int;
var i : int;
var currentBindingTag : name;
var iterator_KeybindName : name;
var iterator_KeybindKey : string;
hasChangedOption = true;
newSettingString = newKeybindValue;
{
groupIndex = IngameMenu_GetPCInputGroupIndex();
if (groupIndex != -1)
{
numKeybinds = mInGameConfigWrapper.GetVarsNumByGroupName('PCInput');
currentBindingTag = GetKeybindGroupTag(keybindTag);
for (i = 0; i < numKeybinds; i += 1)
{
iterator_KeybindName = mInGameConfigWrapper.GetVarName(groupIndex, i);
iterator_KeybindKey = mInGameConfigWrapper.GetVarValue('PCInput', iterator_KeybindName);
iterator_KeybindKey = StrReplace(iterator_KeybindKey, ";IK_None", "");
iterator_KeybindKey = StrReplace(iterator_KeybindKey, "IK_None;", "");
if (iterator_KeybindKey == newSettingString && iterator_KeybindName != keybindTag &&
(currentBindingTag == '' || currentBindingTag != GetKeybindGroupTag(iterator_KeybindName)))
{
if (keybindChangedMessage != "")
{
keybindChangedMessage += ", ";
}
keybindChangedMessage += IngameMenu_GetLocalizedKeybindName(iterator_KeybindName);
OnClearKeybind(iterator_KeybindName);
}
}
}
if (keybindChangedMessage != "")
{
keybindChangedMessage += " </br>" + GetLocStringByKeyExt("key_unbound_message");
showNotification(keybindChangedMessage);
}
}
newSettingString = newKeybindValue + ";IK_None";
mInGameConfigWrapper.SetVarValue('PCInput', keybindTag, newSettingString);
SendKeybindData();
}
event OnSmartKeybindEnabledChanged(value:bool):void
{
smartKeybindingEnabled = value;
}
event OnInvalidKeybindTried(keyCode:EInputKey):void
{
showNotification(GetLocStringByKeyExt("menu_cannot_perform_action_now"));
OnPlaySoundEvent("gui_global_denied");
}
event OnLockedKeybindTried():void
{
showNotification(GetLocStringByKeyExt("menu_cannot_perform_action_now"));
OnPlaySoundEvent("gui_global_denied");
}
event OnResetKeybinds():void
{
mInGameConfigWrapper.ResetGroupToDefaults('PCInput');
SendKeybindData();
showNotification(inGameMenu_TryLocalize("menu_option_reset_successful"));
hasChangedOption = true;
}
event OnDownloadContentRequested( groupId:int, optionName:name, optionValue:string )
{
var groupName : name;
var locale : string;
groupName = mInGameConfigWrapper.GetGroupName(groupId);
if (groupName == 'Localization' && optionName == 'Virtual_Localization_speech')
{
locale = mInGameConfigWrapper.GetVarOption( groupName, optionName, StringToInt( optionValue ) );
theGame.RequestVoiceLangDownload( locale );
}
}
function PlayOpenSoundEvent()
{
}
private var isDeveloperModeEnabled : bool; default isDeveloperModeEnabled = false;
private var developerOptions : CScriptedFlashArray;
public function GetDeveloperOptionsContainer() : CScriptedFlashArray
{
return developerOptions;
}
private function ShowDeveloperMode( show : bool )
{
var optionObject : CScriptedFlashObject;
var optionFlashArray : CScriptedFlashArray;
var entriesArray : CScriptedFlashArray;
var entriesObject : CScriptedFlashObject;
var i : int;
if( show )
{
optionObject = m_flashValueStorage.CreateTempFlashObject();
optionObject.SetMemberFlashUInt( "tag", NameToFlashUInt( 'DeveloperMode' ) );
optionObject.SetMemberFlashInt( "groupID", theGame.GetInGameConfigWrapper().GetGroupIdx( 'Rendering' ) );
optionObject.SetMemberFlashUInt( "type", IGMActionType_ToggleStepper );
optionObject.SetMemberFlashString( "label", inGameMenu_TryLocalize( "DeveloperMode" ) );
optionObject.SetMemberFlashString( "current", theGame.GetInGameConfigWrapper().GetVarValue( 'Rendering', 'DeveloperMode' ) );
optionObject.SetMemberFlashString( "startingValue", "false" );
optionObject.SetMemberFlashBool( "checkHardwareCursor", false );
optionObject.SetMemberFlashBool( "streamable", false );
optionObject.SetMemberFlashBool( "isDropdownContent", false );
optionObject.SetMemberFlashBool( "isDeveloper", true );
entriesArray = m_flashValueStorage.CreateTempFlashArray();
entriesArray.PushBackFlashObject( optionObject );
entriesObject = m_flashValueStorage.CreateTempFlashObject();
entriesObject.SetMemberFlashArray( "list", entriesArray );
entriesObject.SetMemberFlashUInt( "masterTag", 0 );
m_flashValueStorage.SetFlashObject( "options.insert_entry", entriesObject );
}
else
{
optionObject = m_flashValueStorage.CreateTempFlashObject();
optionObject.SetMemberFlashUInt( "tag", NameToFlashUInt( 'DeveloperMode' ) );
entriesArray = m_flashValueStorage.CreateTempFlashArray();
entriesArray.PushBackFlashObject( optionObject );
entriesObject = m_flashValueStorage.CreateTempFlashObject();
entriesObject.SetMemberFlashArray( "list", entriesArray );
m_flashValueStorage.SetFlashObject( "options.remove_entry", entriesObject );
}
theGame.GetGuiManager().ForceProcessFlashStorage();
ShowDeveloperOptions( theGame.GetInGameConfigWrapper().GetVarValue( 'Rendering', 'DeveloperMode' ) == "true" );
}
public function ShowDeveloperOptions( show : bool )
{
var optionObject : CScriptedFlashObject;
var optionFlashArray : CScriptedFlashArray;
var entriesArray : CScriptedFlashArray;
var entriesObject : CScriptedFlashObject;
var i : int;
var masterTag : int;
if( show && isDeveloperModeEnabled )
{
for( i = 0; i < developerOptions.GetLength(); i = i + 1 )
{
entriesArray = m_flashValueStorage.CreateTempFlashArray();
entriesArray.PushBackFlashObject( developerOptions.GetElementFlashObject( i ) );
entriesObject = m_flashValueStorage.CreateTempFlashObject();
entriesObject.SetMemberFlashArray( "list", entriesArray );
masterTag = developerOptions.GetElementFlashObject( i ).GetMemberFlashUInt( "masterTag");
entriesObject.SetMemberFlashUInt( "masterTag", masterTag );
m_flashValueStorage.SetFlashObject( "options.insert_entry", entriesObject );
theGame.GetGuiManager().ForceProcessFlashStorage();
}
}
else
{
for( i = 0; i < developerOptions.GetLength(); i = i + 1 )
{
entriesArray = m_flashValueStorage.CreateTempFlashArray();
entriesArray.PushBackFlashObject( developerOptions.GetElementFlashObject( i ) );
entriesObject = m_flashValueStorage.CreateTempFlashObject();
entriesObject.SetMemberFlashArray( "list", entriesArray );
m_flashValueStorage.SetFlashObject( "options.remove_entry", entriesObject );
theGame.GetGuiManager().ForceProcessFlashStorage();
}
}
}
event OnShowDeveloperMode( action : SInputAction )
{
if( !IsPressed(action) || !theInput.IsActionPressed( 'ShowDeveloperModeAlt' ) )
return false;
isDeveloperModeEnabled = !isDeveloperModeEnabled;
ShowDeveloperMode( isDeveloperModeEnabled );
}
}
exec function ddd()
{
LogChannel('asd', "[" + GetLocStringByKey( "menu_goty_starting_message_content" ) + "]" );
LogChannel('asd', "[" + GetLocStringById( 1217650 ) + "]" );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment