Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Copyright © CD Projekt RED 2015
- */
- class CR4MeditationClockMenu extends CR4MenuBase
- {
- private var m_fxSetBlockMeditation : CScriptedFlashFunction;
- private var m_fxSetCanMeditate : CScriptedFlashFunction;
- private var m_fxSetGeraltBackgroundVisible : CScriptedFlashFunction;
- private var canMeditateWait : bool;
- private var m_fxSet24HRFormat : CScriptedFlashFunction;
- //modFriendlyMeditation begin
- //private var isGameTimePaused : bool;
- //
- //private var BONUS_MEDITATION_TIME : int;
- //default BONUS_MEDITATION_TIME = 1;
- private var BONUS_MEDITATION_TIME : int;
- default BONUS_MEDITATION_TIME = 1;
- private var isPlayerMeditatingInBed : bool;
- default isPlayerMeditatingInBed = false;
- private var meditationPressed : bool;
- default meditationPressed = false;
- private var witcher : W3PlayerWitcher;
- //modFriendlyMeditation end
- event OnConfigUI()
- {
- //modFriendlyMeditation begin
- //var commonMenu : CR4CommonMenu;
- var locCode : string;
- var initData : W3SingleMenuInitData;
- var initData : W3SingleMenuInitData;
- var l_bed : W3WitcherBed;
- witcher = GetWitcherPlayer();
- super.OnConfigUI();
- //witcher.MeditationClockStart(this);
- SendCurrentTimeToAS();
- if( witcher.GetMeditationStartedByClock() && witcher.IsSkippingTime() )
- {
- m_flashValueStorage.SetFlashInt( "meditation.clock.hours.update", GameTimeHours(theGame.GetGameTime()) );
- m_flashValueStorage.SetFlashInt( "meditation.clock.hours", CeilF(witcher.GetMeditationTargetTime()) );
- }
- m_fxSetBlockMeditation = m_flashModule.GetMemberFlashFunction( "SetBlockMeditation" );
- m_fxSet24HRFormat = m_flashModule.GetMemberFlashFunction( "Set24HRFormat" );
- m_fxSetGeraltBackgroundVisible = m_flashModule.GetMemberFlashFunction( "setGeraltBackgroundVisible" );
- m_fxSetBonusMeditationTime.InvokeSelfOneArg( FlashArgInt( BONUS_MEDITATION_TIME ) );
- m_fxSetBonusMeditationTime.InvokeSelfOneArg( FlashArgInt( witcher.fmedWitcherHouseBuffsHours ) );
- if(GetWitcherPlayer().CanMeditate() && GetWitcherPlayer().CanMeditateWait(true))
- if( initData && initData.isBonusMeditationAvailable )
- if( FactsQuerySum( "PlayerInsideInnerWitcherHouse" ) > 0 )
- {
- l_bed = (W3WitcherBed)theGame.GetEntityByTag( 'witcherBed' );
- if( l_bed.GetWasUsed() )
- isPlayerMeditatingInBed = true;
- SetMeditationBonuses();
- }
- SetMeditationBonuses();
- }
- }
- // PN
- if (PNGetHunger() >= 50)
- canMeditateWait = false;
- // PN
- //initData = (W3SingleMenuInitData)GetMenuInitData();
- if(GameplayFactsQuerySum("GamePausedNotByUI") > 0 && !thePlayer.IsInCombat())
- {
- canMeditateWait = false;
- witcher.MeditationRestoring(0);
- }
- else
- {
- theGame.Unpause("menus");
- canMeditateWait = witcher.ModCanMeditate(isPlayerMeditatingInBed);
- theGame.Pause("menus");
- }
- m_fxSetGeraltBackgroundVisible.InvokeSelfOneArg(FlashArgBool(false));
- //if (canMeditateWait)
- //{
- // m_fxSetGeraltBackgroundVisible.InvokeSelfOneArg( FlashArgBool(true) );
- //}
- m_fxSetBlockMeditation.InvokeSelfOneArg(FlashArgBool(!canMeditateWait));
- locCode = GetCurrentTextLocCode();
- m_fxSet24HRFormat.InvokeSelfOneArg(FlashArgBool(locCode != "EN"));
- RegisterActions();
- //modFriendlyMeditation end
- if (!canMeditateWait)
- {
- }
- event OnClosingMenu()
- {
- //modFriendlyMeditation begin
- //var commonMenu : CR4CommonMenu;
- theGame.GetGuiManager().SendCustomUIEvent( 'ClosedMeditationClockMenu' );
- //commonMenu = (CR4CommonMenu)m_parentMenu;
- //if (commonMenu)
- //{
- // commonMenu.SetMeditationMode(false);
- if( commonMenu.GetIsPlayerMeditatingInBed() )
- {
- GetWitcherPlayer().ManageSleeping();
- }
- //
- // if( commonMenu.GetIsPlayerMeditatingInBed() )
- // {
- // GetWitcherPlayer().ManageSleeping();
- // }
- //}
- GetWitcherPlayer().MeditationClockStop();
- //
- //GetWitcherPlayer().MeditationClockStop();
- UnregisterActions();
- //modFriendlyMeditation end
- }
- event OnCloseMenu()
- {
- //modFriendlyMeditation begin
- //if(thePlayer.GetCurrentStateName() == 'MeditationWaiting')
- //{
- // MeditatingEnd();
- //}
- //
- //if (!theGame.IsPaused())
- //{
- // theGame.Pause("menus");
- //}
- if( !meditationPressed && isPlayerMeditatingInBed )
- {
- if( !witcher.IsMeditating() && !witcher.IsSkippingTime() )
- witcher.ManageSleeping();
- }
- GetWitcherPlayer().MeditationClockStop();
- UnregisterActions();
- //modFriendlyMeditation end
- CloseMenu();
- if( m_parentMenu )
- {
- m_parentMenu.ChildRequestCloseMenu();
- }
- }
- function SetButtons()
- {
- AddInputBinding("panel_button_common_exit", "escape-gamepad_B", -1);
- //modFriendlyMeditation begin
- if( witcher.IsMeditating() || witcher.IsSkippingTime() )
- AddInputBinding("panel_button_meditation_stop", "gamepad_Y", IK_C);
- //modFriendlyMeditation end
- super.SetButtons();
- }
- //modFriendlyMeditation begin
- function RegisterActions()
- {
- theInput.StoreContext( 'MEDITATION_CLOCK_CONTEXT' );
- theInput.RegisterListener( this, 'OnMeditationStop', 'MeditationStop' );
- }
- function UnregisterActions()
- {
- theInput.UnregisterListener( this, 'OnMeditationStop' );
- theInput.RestoreContext( 'MEDITATION_CLOCK_CONTEXT', false );
- }
- event OnMeditationStop( action : SInputAction )
- {
- if( IsPressed(action) )
- {
- witcher.ModEndMeditation();
- }
- }
- //modFriendlyMeditation end
- public function UpdateCurrentHours( ):void
- {
- var timeHours : int = GetCurrentDayTime( "hours" );
- var timeMinutes : int = GetCurrentDayTime( "minutes" );
- m_flashValueStorage.SetFlashInt( "meditation.clock.hours.update", timeHours );
- m_flashValueStorage.SetFlashInt( "meditation.clock.minutes", timeMinutes );
- }
- public function SendCurrentTimeToAS():void
- {
- var timeHours : int = GetCurrentDayTime( "hours" );
- var timeMinutes : int = GetCurrentDayTime( "minutes" );
- m_flashValueStorage.SetFlashInt( "meditation.clock.hours", timeHours );
- m_flashValueStorage.SetFlashInt( "meditation.clock.minutes", timeMinutes );
- }
- event OnMeditate( dayTime : float )
- {
- var medd : W3PlayerWitcherStateMeditation;
- if (!canMeditateWait)
- {
- ShowDisallowedNotification();
- }
- else
- {
- if (theGame.IsPaused())
- {
- theGame.Unpause("menus");
- }
- if( GetWitcherPlayer().Meditate() )
- GetWitcherPlayer().Meditate();
- //modFriendlyMeditation begin
- meditationPressed = true;
- UnregisterActions();
- if( witcher.ModStartMeditation( isPlayerMeditatingInBed, true, CeilF(dayTime) ) )
- OnPlaySoundEvent( "gui_meditation_start" );
- LogChannel('CLOCK'," ** OnMeditate ** ");
- if(dayTime == GameTimeHours(theGame.GetGameTime()))
- return false;
- medd = (W3PlayerWitcherStateMeditation)thePlayer.GetCurrentState();
- medd.MeditationWait(CeilF(dayTime));
- // PN
- PNSetMeditationFlag();
- // PN
- StartWaiting();
- LogChannel('CLOCK'," ** OnMeditate ** ");
- if(dayTime == GameTimeHours(theGame.GetGameTime()))
- return false;
- medd = (W3PlayerWitcherStateMeditation)thePlayer.GetCurrentState();
- medd.MeditationWait(CeilF(dayTime));
- StartWaiting();
- //LogChannel('CLOCK'," ** OnMeditate ** ");
- //if(dayTime == GameTimeHours(theGame.GetGameTime()))
- // return false;
- //
- //medd = (W3PlayerWitcherStateMeditation)thePlayer.GetCurrentState();
- //medd.MeditationWait(CeilF(dayTime));
- //
- //
- //StartWaiting();
- }
- //modFriendlyMeditation end
- }
- event OnMeditateBlocked()
- {
- ShowDisallowedNotification();
- }
- event OnStopMeditate()
- {
- //modFriendlyMeditation begin
- //var waitt : W3PlayerWitcherStateMeditationWaiting;
- //
- //if(thePlayer.GetCurrentStateName() == 'MeditationWaiting')
- //{
- // waitt = (W3PlayerWitcherStateMeditationWaiting)thePlayer.GetCurrentState();
- // if(waitt)
- // waitt.RequestWaitStop();
- //}
- //
- //MeditatingEnd();
- witcher.ModEndMeditation();
- //modFriendlyMeditation end
- }
- function GetCurrentDayTime( type : string ) : int
- {
- var gameTime : GameTime = theGame.GetGameTime();
- var currentDays : int;
- var currentHours : int;
- var currentMinutes : int;
- var currentTime : int;
- switch( type )
- {
- case "days" :
- {
- currentTime = GameTimeDays( gameTime );
- break;
- }
- case "hours" :
- {
- currentDays = GameTimeDays( gameTime );
- currentHours = GameTimeHours( gameTime );
- currentTime = currentHours ;
- break;
- }
- case "minutes" :
- {
- currentDays = GameTimeDays( gameTime );
- currentHours = GameTimeHours( gameTime );
- currentMinutes = GameTimeMinutes( gameTime );
- currentTime = currentMinutes;
- break;
- }
- }
- return currentTime;
- }
- //modFriendlyMeditation begin
- //public function StartWaiting():void
- //{
- // theGame.GetCityLightManager().SetUpdateEnabled( false );
- // m_flashValueStorage.SetFlashBool( "meditation.clock.blocked", true );
- // SetMenuNavigationEnabled(false);
- //}
- //
- //public function StopWaiting():void
- //{
- // m_flashValueStorage.SetFlashBool( "meditation.clock.blocked", false );
- // SetMenuNavigationEnabled(true);
- //}
- //
- //function MeditatingEnd()
- //{
- // theGame.GetCityLightManager().ForceUpdate();
- // theGame.GetCityLightManager().SetUpdateEnabled( true );
- // m_flashValueStorage.SetFlashBool( "meditation.clock.blocked", false );
- // SetMenuNavigationEnabled(true);
- //}
- //modFriendlyMeditation end
- function PlayOpenSoundEvent()
- {
- }
- private final function ShowDisallowedNotification()
- {
- if(thePlayer.IsInCombat())
- {
- showNotification(GetLocStringByKeyExt("menu_cannot_perform_action_combat"));
- }
- else
- {
- showNotification(GetLocStringByKeyExt( "menu_cannot_perform_action_now" ));
- }
- OnPlaySoundEvent("gui_global_denied");
- }
- }
Add Comment
Please, Sign In to add comment