Advertisement
Guest User

Untitled

a guest
May 26th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 57.74 KB | None | 0 0
  1. /***********************************************************************/
  2. /** © 2015 CD PROJEKT S.A. All rights reserved.
  3. /** THE WITCHER® is a trademark of CD PROJEKT S. A.
  4. /** The Witcher game is based on the prose of Andrzej Sapkowski.
  5. /***********************************************************************/
  6. struct SMenuTab
  7. {
  8. var MenuName : name;
  9. var MenuLabel : string;
  10. var Visible : bool;
  11. var Enabled : bool;
  12. var Restricted : bool;
  13. var ParentMenu : name;
  14. var MenuState : name;
  15. };
  16.  
  17. class CR4CommonMenu extends CR4MenuBase
  18. {
  19. private var m_menuData : array< SMenuTab >;
  20. private var m_subMenuData : array< SMenuTab >;
  21. private var m_lastMenuName : name;
  22.  
  23. public var m_hubEnabled : bool;
  24.  
  25. private var m_lockedInHub : bool; default m_lockedInHub = false;
  26. private var m_lockedInMenu : bool; default m_lockedInMenu = false;
  27.  
  28. public var m_contextInputBlocked : bool; default m_contextInputBlocked = false;
  29.  
  30. private var m_fxSubMenuClosed : CScriptedFlashFunction;
  31. private var m_fxUpdateLevel : CScriptedFlashFunction;
  32. private var m_fxUpdateMoney : CScriptedFlashFunction;
  33. private var m_fxUpdateWeight : CScriptedFlashFunction;
  34. private var m_fxNavigateNext : CScriptedFlashFunction;
  35. private var m_fxNavigatePrior : CScriptedFlashFunction;
  36. private var m_fxSelectSubMenuTab : CScriptedFlashFunction;
  37. private var m_fxSetShopInventory : CScriptedFlashFunction;
  38. private var m_fxUpdateTabEnabled : CScriptedFlashFunction;
  39. private var m_fxLockOpenTabNavigation : CScriptedFlashFunction;
  40. private var m_fxBlockMenuClosing : CScriptedFlashFunction;
  41. private var m_fxBlockHubClosing : CScriptedFlashFunction;
  42. private var m_fxSetInputFeedbackVisibility : CScriptedFlashFunction;
  43. private var m_fxSetPlayerDefailsVis : CScriptedFlashFunction;
  44. private var m_fxSetMeditationBackgroundMode : CScriptedFlashFunction;
  45. private var m_fxOnChildMenuConfigured : CScriptedFlashFunction;
  46. private var m_fxUpdateMenuBackgroundImage : CScriptedFlashFunction;
  47. private var m_fxBlockBackNavigation : CScriptedFlashFunction;
  48.  
  49.  
  50. private var m_fxSelectTab : CScriptedFlashFunction;
  51. private var m_fxEnterCurrentTab : CScriptedFlashFunction;
  52.  
  53. protected var m_defaultBindings : array<SKeyBinding>;
  54. protected var m_contextBindings : array<SKeyBinding>;
  55. protected var m_GFxBindings : array<SKeyBinding>;
  56.  
  57. public var m_contextManager : W3ContextManager;
  58. //---=== modFriendlyMeditation ===---
  59. //public var m_mode_meditation : bool; default m_mode_meditation = false;
  60. //public var m_had_meditation : bool; default m_had_meditation = false;
  61. //---=== modFriendlyMeditation ===---
  62. private var noSaveLock : int;
  63.  
  64. private var isCiri : bool;
  65.  
  66. protected var inventoryHotkey:EInputKey;
  67. protected var characterHotkey:EInputKey;
  68. protected var mapHotkey:EInputKey;
  69. protected var journalHotkey:EInputKey;
  70. protected var alchemyHotkey:EInputKey;
  71. protected var bestiaryHotkey:EInputKey;
  72. protected var glossaryHotkey:EInputKey;
  73. protected var meditationHotkey:EInputKey;
  74. protected var craftingHotkey:EInputKey;
  75.  
  76.  
  77. protected var isInNpcContext:bool;
  78. protected var isEnchantingAvailable:bool;
  79. protected var isShopAvailable:bool;
  80. protected var isRepairAvailable:bool;
  81. protected var isCraftingAvailable:bool;
  82. protected var isAlchemyAvailable:bool;
  83.  
  84. protected var isPlayerMeditatingInBed:bool;
  85.  
  86. event OnConfigUI()
  87. {
  88. var stateName : name;
  89. var menuName : name;
  90. var shouldSkipHub : bool;
  91. var lootPopup : CR4LootPopup;
  92.  
  93. var initData : W3MenuInitData;
  94. var initMapData : W3MapInitData;
  95. var initSingleData : W3SingleMenuInitData;
  96. var selectionPopupRef : CR4ItemSelectionPopup;
  97.  
  98. if (!thePlayer.IsAlive() || theGame.HasBlackscreenRequested() || theGame.IsFading())
  99. {
  100. CloseMenu();
  101. return true;
  102. }
  103.  
  104. theGame.CreateNoSaveLock( "fullscreen_ui_panels", noSaveLock, false, false );
  105. theGame.GameplayFactsRemove("closingHubMenu");
  106. theSound.SoundEvent("system_pause");
  107.  
  108. fetchCurrentHotkeys();
  109.  
  110. m_initialSelectionsToIgnore = 2;
  111. m_hideTutorial = true;
  112. m_forceHideTutorial = false;
  113.  
  114. menuName = theGame.GetMenuToOpen();
  115. shouldSkipHub = menuName != '';
  116.  
  117. CheckNpcTags();
  118.  
  119. if( isInNpcContext )
  120. {
  121. theGame.GameplayFactsAdd("shopMode", 1);
  122. }
  123. else
  124. {
  125. theGame.GameplayFactsRemove("shopMode");
  126. }
  127.  
  128. lootPopup = (CR4LootPopup)theGame.GetGuiManager().GetPopup('LootPopup');
  129.  
  130. if (lootPopup)
  131. {
  132. lootPopup.ClosePopup();
  133. }
  134.  
  135. super.OnConfigUI();
  136.  
  137. if ((W3ReplacerCiri)thePlayer)
  138. {
  139. isCiri = true;
  140. }
  141. else
  142. {
  143. isCiri = false;
  144. }
  145.  
  146. m_hubEnabled = true;
  147.  
  148. GameplayFactsSet("GamePausedNotByUI", (int)theGame.IsGameTimePaused());
  149. theGame.Pause("menus");
  150.  
  151. m_flashModule = GetMenuFlash();
  152. m_fxSubMenuClosed = m_flashModule.GetMemberFlashFunction( "onSubMenuClosed" );
  153. m_fxUpdateLevel = m_flashModule.GetMemberFlashFunction( "updatePlayerLevel" );
  154. m_fxUpdateMoney = m_flashModule.GetMemberFlashFunction( "updateMoney" );
  155. m_fxUpdateWeight = m_flashModule.GetMemberFlashFunction( "updateWeight" );
  156. m_fxNavigateNext = m_flashModule.GetMemberFlashFunction( "handleForceNextTab" );
  157. m_fxNavigatePrior = m_flashModule.GetMemberFlashFunction( "handleForcePriorTab" );
  158. m_fxSelectSubMenuTab = m_flashModule.GetMemberFlashFunction( "enterCurrentlySelectedTab" );
  159. m_fxSetShopInventory = m_flashModule.GetMemberFlashFunction( "setShopInventory" );
  160. m_fxUpdateTabEnabled = m_flashModule.GetMemberFlashFunction( "updateTabEnabled" );
  161. m_fxLockOpenTabNavigation = m_flashModule.GetMemberFlashFunction( "lockOpenTabNavigation" );
  162. m_fxBlockMenuClosing = m_flashModule.GetMemberFlashFunction( "blockMenuClosing" );
  163. m_fxBlockHubClosing = m_flashModule.GetMemberFlashFunction( "blockHubClosing" );
  164. m_fxSetInputFeedbackVisibility = m_flashModule.GetMemberFlashFunction( "SetInputFeedbackVisibility" );
  165. m_fxSetPlayerDefailsVis = m_flashModule.GetMemberFlashFunction( "setPlayerDetailsVisible" );
  166. m_fxSetMeditationBackgroundMode = m_flashModule.GetMemberFlashFunction( "setMeditationBackgroundMode" );
  167. m_fxSelectTab = m_flashModule.GetMemberFlashFunction( "setSelectedTab" );
  168. m_fxEnterCurrentTab = m_flashModule.GetMemberFlashFunction( "enterCurrentlySelectedTab" );
  169. m_fxOnChildMenuConfigured = m_flashModule.GetMemberFlashFunction( "onChildMenuConfigured" );
  170. m_fxUpdateMenuBackgroundImage = m_flashModule.GetMemberFlashFunction( "updateMenuBackgroundImage" );
  171. m_fxBlockBackNavigation = m_flashModule.GetMemberFlashFunction( "blockBackNavigation" );
  172.  
  173. stateName = '';
  174. initData = (W3MenuInitData)GetMenuInitData();
  175. if (initData)
  176. {
  177. stateName = initData.getDefaultState();
  178. }
  179.  
  180. if (theGame.GameplayFactsQuerySum("stashMode") == 1)
  181. {
  182. m_hubEnabled = false;
  183. shouldSkipHub = true;
  184. DefineMenuItem('InventoryMenu', "panel_title_stash");
  185. }
  186. else if( isInNpcContext )
  187. {
  188. AddMerchantTagIfMissing_HACK();
  189.  
  190. DefineSceneMenuStructure();
  191. }
  192. else
  193. {
  194. DefineMenuStructure();
  195.  
  196. initMapData = (W3MapInitData)initData;
  197. initSingleData = (W3SingleMenuInitData)initData;
  198.  
  199. SetMenuTabeEnable( 'InventoryMenu', false, 'HorseInventory');
  200.  
  201. if (menuName == 'MapMenu' && initMapData && ( initMapData.GetTriggeredExitEntity() || initMapData.GetUsedFastTravelEntity() ) )
  202. {
  203.  
  204. m_menuData.Clear();
  205. DefineMenuItem('MapMenu', "panel_title_fullmap", '', 'FastTravel');
  206.  
  207. SetSingleMenuTabEnabled( 'MapMenu' );
  208. m_hubEnabled = false;
  209. }
  210.  
  211. if( initSingleData )
  212. {
  213. if( initSingleData.GetBlockOtherPanels() )
  214. {
  215. m_menuData.Clear();
  216.  
  217. if (menuName == 'MeditationClockMenu')
  218. {
  219. DefineMenuItem('MeditationClockMenu', "panel_name_sleep", '');
  220. }
  221. else
  222. if (menuName == 'GlossaryBooksMenu')
  223. {
  224. DefineMenuItem('GlossaryBooksMenu', "books_panel_title", '');
  225. }
  226.  
  227. shouldSkipHub = true;
  228. m_hubEnabled = false;
  229.  
  230. SetSingleMenuTabEnabled( initSingleData.fixedMenuName );
  231. }
  232.  
  233. if( initSingleData.ignoreMeditationCheck )
  234. {
  235. isPlayerMeditatingInBed = true;
  236. }
  237.  
  238. if( initSingleData.unlockCraftingMenu )
  239. {
  240. m_menuData.Clear();
  241. DefineMenuItem( 'CraftingParent', "panel_title_crafting" );
  242. DefineMenuItem( 'BlacksmithMenu', "panel_title_blacksmith_disassamble", 'CraftingParent', 'Disassemble' );
  243. }
  244. }
  245. }
  246.  
  247. DisableNotAllowedTabs();
  248. UpdateTabs();
  249. SetMenuBackground();
  250.  
  251. if( menuName == '')
  252. {
  253. if (stateName != '')
  254. {
  255. menuName = GetMenuParentName(stateName);
  256. }
  257. else
  258. {
  259. menuName = 'MapMenu';
  260. stateName = 'GlobalMap';
  261.  
  262. }
  263. }
  264. //---=== modFriendlyMeditation ===---
  265. //else if (menuName == 'MeditationClockMenu')
  266. //{
  267. // SetMeditationMode(true);
  268. //}
  269. //---=== modFriendlyMeditation ===---
  270.  
  271. if( m_menuData.Size() < 1 )
  272. {
  273. m_hubEnabled = false;
  274. shouldSkipHub = true;
  275.  
  276.  
  277. if (menuName == 'InventoryMenu')
  278. {
  279. DefineMenuItem('InventoryMenu', "panel_inventory", '');
  280. }
  281. }
  282.  
  283. SetupMenu();
  284.  
  285. if (isCiri)
  286. {
  287. m_hubEnabled = false;
  288. m_fxSetPlayerDefailsVis.InvokeSelfOneArg(FlashArgBool(false));
  289.  
  290.  
  291.  
  292.  
  293. shouldSkipHub = true;
  294. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('MapMenu')), FlashArgString('GlobalMap'));
  295.  
  296. }
  297. else
  298. {
  299. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt(menuName)), FlashArgString(stateName));
  300. }
  301.  
  302. if( shouldSkipHub )
  303. {
  304. m_fxEnterCurrentTab.InvokeSelf();
  305. }
  306.  
  307. theInput.StoreContext( 'EMPTY_CONTEXT' );
  308.  
  309. m_contextManager = new W3ContextManager in this;
  310. m_contextManager.Init(this);
  311.  
  312. m_guiManager.RequestMouseCursor(true);
  313.  
  314. if (theInput.LastUsedPCInput())
  315. {
  316. theGame.MoveMouseTo(0.475, 0.48);
  317. }
  318.  
  319. theSound.SoundLoadBank( "gui_ep2.bnk", true );
  320.  
  321. selectionPopupRef = (CR4ItemSelectionPopup)theGame.GetGuiManager().GetPopup('ItemSelectionPopup');
  322. if (selectionPopupRef)
  323. {
  324. theGame.ClosePopup('ItemSelectionPopup');
  325. }
  326.  
  327. if( !m_hubEnabled )
  328. {
  329. m_fxBlockBackNavigation.InvokeSelf();
  330. }
  331. }
  332.  
  333. //---=== modFriendlyMeditation ===---
  334. //public function GetIsPlayerMeditatingInBed() : bool
  335. //{
  336. // return isPlayerMeditatingInBed;
  337. //}
  338. //---=== modFriendlyMeditation ===---
  339.  
  340. protected function GetSavedDataMenuName() : name
  341. {
  342. return theGame.GetMenuToOpen();
  343. }
  344.  
  345. function SaveStateData()
  346. {
  347. m_guiManager.UpdateUISavedData( GetMenuName(), UISavedData.openedCategories, '', UISavedData.selectedModule );
  348. }
  349.  
  350. protected function GetFirstChildMenuName( parentName : name ) : name
  351. {
  352. var i : int;
  353.  
  354. for ( i = 0; i < m_menuData.Size(); i += 1 )
  355. {
  356. if( m_menuData[i].ParentMenu == parentName )
  357. {
  358. return m_menuData[i].MenuName;
  359. }
  360. }
  361. return parentName;
  362. }
  363.  
  364. protected function GetMenuParentName( menuName : name ) : name
  365. {
  366. var i : int;
  367.  
  368. for ( i = 0; i < m_menuData.Size(); i += 1 )
  369. {
  370. if( m_menuData[i].MenuName == menuName )
  371. {
  372. if( m_menuData[i].ParentMenu != '' )
  373. {
  374. return m_menuData[i].ParentMenu;
  375. }
  376. }
  377. else if( m_menuData[i].MenuState == menuName )
  378. {
  379. if( m_menuData[i].ParentMenu != '' )
  380. {
  381. return m_menuData[i].ParentMenu;
  382. }
  383. }
  384. }
  385. return menuName;
  386. }
  387.  
  388. protected function HasMenuDefined( menuName : name ) : bool
  389. {
  390. var i : int;
  391.  
  392. for ( i = 0; i < m_menuData.Size(); i += 1 )
  393. {
  394. if ( m_menuData[i].MenuName == menuName )
  395. {
  396. return true;
  397. }
  398. }
  399.  
  400. return false;
  401. }
  402.  
  403. protected function HasMenuWithStateDefined( menuName : name, stateName : name ) : bool
  404. {
  405. var i : int;
  406.  
  407. for ( i = 0; i < m_menuData.Size(); i += 1 )
  408. {
  409. if ( m_menuData[i].MenuName == menuName && m_menuData[i].MenuState == stateName )
  410. {
  411. return true;
  412. }
  413. }
  414.  
  415. return false;
  416. }
  417.  
  418. protected function GetSavedMenuFromParentName( parentMenuName : name ) : name
  419. {
  420. UISavedData = m_guiManager.GetUISavedData( parentMenuName );
  421. if( UISavedData.selectedTag != '' && HasMenuDefined(UISavedData.selectedTag) )
  422. {
  423. return UISavedData.selectedTag;
  424. }
  425. return parentMenuName;
  426. }
  427.  
  428. event OnClosingMenu()
  429. {
  430. var menuInitData : W3MenuInitData;
  431. //---=== modFriendlyMeditation ===---
  432. //var fastForward : CGameFastForwardSystem;
  433. //var waitt : W3PlayerWitcherStateMeditationWaiting;
  434. //---=== modFriendlyMeditation ===---
  435.  
  436. theSound.SoundEvent("system_resume");
  437. OnPlaySoundEvent( "gui_global_panel_close" );
  438.  
  439. theGame.GameplayFactsRemove("stashMode");
  440.  
  441. //---=== modFriendlyMeditation ===---
  442. //if(thePlayer.GetCurrentStateName() == 'MeditationWaiting')
  443. //{
  444. // waitt = (W3PlayerWitcherStateMeditationWaiting)thePlayer.GetCurrentState();
  445. // if(waitt)
  446. // waitt.RequestWaitStop();
  447. //}
  448. //---=== modFriendlyMeditation ===---
  449.  
  450.  
  451. menuInitData = (W3MenuInitData)GetMenuInitData();
  452. if (menuInitData)
  453. {
  454.  
  455. delete menuInitData;
  456. }
  457. if (m_contextManager)
  458. {
  459. delete m_contextManager;
  460. }
  461.  
  462. //---=== modFriendlyMeditation ===---
  463. //StopMeditation();
  464. //
  465. //
  466. //fastForward = theGame.GetFastForwardSystem();
  467. //fastForward.RequestFastForwardShutdown( true );
  468. //---=== modFriendlyMeditation ===---
  469.  
  470. theGame.Unpause("menus");
  471.  
  472. if (m_configUICalled)
  473. {
  474. theInput.RestoreContext( 'EMPTY_CONTEXT', true );
  475. }
  476.  
  477. theGame.SetMenuToOpen( '' );
  478.  
  479. theGame.ReleaseNoSaveLock(noSaveLock);
  480.  
  481.  
  482. theGame.GameplayFactsAdd("closingHubMenu",1);
  483.  
  484. m_guiManager.RequestMouseCursor(false);
  485. m_guiManager.ClearNotificationsQueue();
  486.  
  487. theSound.SoundUnloadBank( "gui_ep2.bnk" );
  488.  
  489. super.OnClosingMenu();
  490.  
  491.  
  492. theGame.FadeOutAsync( 0 );
  493. theGame.FadeInAsync( 0.2 );
  494. }
  495.  
  496. public function SetInputFeedbackVisibility( value : bool ):void
  497. {
  498. m_fxSetInputFeedbackVisibility.InvokeSelfOneArg( FlashArgBool(value) );
  499. }
  500.  
  501. public function SwitchToSubMenu( MenuName : name, MenuState : string)
  502. {
  503. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt(MenuName)), FlashArgString(MenuState));
  504. m_fxEnterCurrentTab.InvokeSelf();
  505. }
  506.  
  507. event OnHideChildMenu()
  508. {
  509. var childMenu : CR4MenuBase;
  510.  
  511. childMenu = GetLastChild();
  512. if (childMenu)
  513. {
  514. childMenu.CloseMenu();
  515. }
  516.  
  517. if (!m_hubEnabled)
  518. {
  519. CloseMenu();
  520. return true;
  521. }
  522.  
  523. m_fxSubMenuClosed.InvokeSelf();
  524. m_GFxBindings.Clear();
  525. m_defaultBindings.Clear();
  526. m_contextBindings.Clear();
  527. UpdateInputFeedback();
  528. }
  529.  
  530. event OnRequestMenu( MenuName : name, MenuState : string)
  531. {
  532. var menuInitData : W3MenuInitData;
  533. var currentSubMenu : CR4MenuBase;
  534. var parentMenuName : name;
  535. var ignoreSaveData : bool;
  536.  
  537. currentSubMenu = (CR4MenuBase)GetSubMenu();
  538. menuInitData = (W3MenuInitData)GetMenuInitData();
  539.  
  540. if (menuInitData)
  541. {
  542. ignoreSaveData = menuInitData.ignoreSaveSystem;
  543.  
  544. menuInitData.ignoreSaveSystem = false;
  545. }
  546. if( currentSubMenu && currentSubMenu.GetMenuName() == MenuName )
  547. {
  548. parentMenuName = GetMenuParentName(MenuName);
  549. if ( MenuState != NameToString( GetSavedMenuFromParentName( parentMenuName ) ) )
  550. {
  551. MenuName = GetSavedMenuFromParentName( parentMenuName );
  552. }
  553.  
  554. UISavedData.openedCategories.Clear();
  555. if( MenuState != "" )
  556. {
  557. UISavedData.openedCategories.PushBack( HaxGetPanelStateName(MenuState) );
  558. }
  559. m_guiManager.UpdateUISavedData( parentMenuName, UISavedData.openedCategories, MenuName, UISavedData.selectedModule );
  560.  
  561. if( MenuState != "" )
  562. {
  563. currentSubMenu.SetMenuState(HaxGetPanelStateName(MenuState));
  564. OnPlaySoundEvent( "gui_global_submenu_whoosh" );
  565. }
  566. }
  567. else
  568. {
  569. if (currentSubMenu)
  570. {
  571. OnPlaySoundEvent( "gui_global_submenu_whoosh" );
  572. }
  573. else
  574. {
  575. OnPlaySoundEvent( "gui_global_panel_open" );
  576. }
  577.  
  578. parentMenuName = GetMenuParentName(MenuName);
  579.  
  580. if( MenuName == parentMenuName)
  581. {
  582. if (!ignoreSaveData)
  583. {
  584. MenuName = GetSavedMenuFromParentName( parentMenuName );
  585. }
  586. if( MenuName == parentMenuName )
  587. {
  588. MenuName = GetFirstChildMenuName( parentMenuName );
  589. }
  590. }
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597. if( menuInitData )
  598. {
  599. menuInitData.setDefaultState(HaxGetPanelStateName(MenuState));
  600. m_lastMenuName = MenuName;
  601. RequestSubMenu( MenuName, menuInitData );
  602. }
  603. else
  604. {
  605. if( !GetMenuInitData() && MenuState != "" && MenuState != "None" )
  606. {
  607. menuInitData = new W3MenuInitData in this;
  608. menuInitData.setDefaultState(HaxGetPanelStateName(MenuState));
  609. m_lastMenuName = MenuName;
  610. RequestSubMenu( MenuName, menuInitData );
  611. }
  612. else
  613. {
  614. m_lastMenuName = MenuName;
  615. RequestSubMenu( MenuName, GetMenuInitData());
  616. }
  617. }
  618.  
  619. m_fxLockOpenTabNavigation.InvokeSelfOneArg(FlashArgBool(true));
  620.  
  621. theGame.GetTutorialSystem().uiHandler.OnClosingMenu(GetMenuName());
  622.  
  623. UISavedData.openedCategories.Clear();
  624. if( MenuState != "" && MenuState != "None" )
  625. {
  626. UISavedData.openedCategories.PushBack( HaxGetPanelStateName(MenuState) );
  627. }
  628.  
  629. if( MenuName != parentMenuName )
  630. {
  631. m_fxSelectSubMenuTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt(MenuName)), FlashArgString(MenuState));
  632. }
  633.  
  634. m_guiManager.UpdateUISavedData( GetMenuParentName(parentMenuName), UISavedData.openedCategories, MenuName, UISavedData.selectedModule );
  635. }
  636. m_GFxBindings.Clear();
  637. }
  638.  
  639. public function ChildMenuConfigured() : void
  640. {
  641. m_fxLockOpenTabNavigation.InvokeSelfOneArg(FlashArgBool(false));
  642. m_fxOnChildMenuConfigured.InvokeSelf();
  643. }
  644.  
  645. public function SetMenuBackground()
  646. {
  647. var worldPath : string;
  648. var imagePath: string;
  649.  
  650. worldPath = theGame.GetWorld().GetDepotPath();
  651. switch( worldPath )
  652. {
  653. case "levels\novigrad\novigrad.w2w":
  654. imagePath = "img://icons/menubackground/panorama_novigrad.png";
  655. break;
  656. case "levels\skellige\skellige.w2w":
  657. imagePath = "img://icons/menubackground/panorama_skellige.png";
  658. break;
  659. case "levels\kaer_morhen\kaer_morhen.w2w":
  660. imagePath = "img://icons/menubackground/panorama_kaer_morhen.png";
  661. break;
  662. case "levels\prolog_village\prolog_village.w2w":
  663. imagePath = "img://icons/menubackground/panorama_prolog_village.png";
  664. break;
  665. case "levels\wyzima_castle\wyzima_castle.w2w":
  666. imagePath = "img://icons/menubackground/panorama_wyzima_castle.png";
  667. break;
  668. case "levels\island_of_mist\island_of_mist.w2w":
  669. imagePath = "img://icons/menubackground/panorama_island_of_mist.png";
  670. break;
  671. case "levels\the_spiral\spiral.w2w":
  672. imagePath = "img://icons/menubackground/panorama_spiral.png";
  673. break;
  674. case "levels\prolog_village_winter\prolog_village.w2w":
  675. imagePath = "img://icons/menubackground/panorama_prologue_snow.png";
  676. break;
  677. case "dlc\bob\data\levels\bob\bob.w2w":
  678. imagePath = "img://icons/menubackground/panorama_toussaint.png";
  679. break;
  680. }
  681. if( imagePath != "" )
  682. {
  683. m_fxUpdateMenuBackgroundImage.InvokeSelfOneArg( FlashArgString( imagePath ) );
  684. }
  685. }
  686.  
  687. function HaxGetPanelStateName( stateName : string ) : name
  688. {
  689. switch(stateName)
  690. {
  691. case "CharacterInventory" :
  692. return 'CharacterInventory';
  693. case "HorseInventory" :
  694. return 'HorseInventory';
  695. case "GlobalMap" :
  696. return 'GlobalMap';
  697. case "FastTravel" :
  698. return 'FastTravel';
  699. case "Objectives" :
  700. return 'Objectives';
  701. case "Sockets" :
  702. return 'Sockets';
  703. case "Repair" :
  704. return 'Repair';
  705. case "Disassemble" :
  706. return 'Disassemble';
  707. case "AddSockets":
  708. return 'AddSockets';
  709. }
  710. return '';
  711. }
  712.  
  713.  
  714.  
  715. event OnSwipe( swipe : int )
  716. {
  717. var subMenu : CR4MenuBase;
  718.  
  719. LogChannel( 'Gui', "CR4CommonMenu::OnSwipe " + swipe );
  720.  
  721. if ( swipe == 0 )
  722. {
  723.  
  724. GoPriorMenu();
  725. }
  726. else if ( swipe == 1 )
  727. {
  728.  
  729. GoNextMenu();
  730. }
  731. else if ( swipe == 3 )
  732. {
  733.  
  734.  
  735. subMenu = (CR4MenuBase)GetSubMenu();
  736. if ( subMenu )
  737. {
  738. subMenu.OnCloseMenu();
  739. }
  740. }
  741. }
  742.  
  743. event OnInputHandled(NavCode:string, KeyCode:int, ActionId:int)
  744. {
  745. LogChannel('GFX', "OnInputHandled, NavCode: "+NavCode+"; actionId: "+ActionId);
  746. if (m_contextManager && !m_contextInputBlocked)
  747. {
  748. m_contextManager.HandleUserInput(NavCode, ActionId);
  749. }
  750. }
  751.  
  752. public function SetMenuNavigationEnabled(enabled:bool) : void
  753. {
  754. m_flashValueStorage.SetFlashBool( "common.input.navigation.enabled", enabled );
  755. }
  756.  
  757. public function UpdateTutorialRestruction():void
  758. {
  759. CheckTutorialRestrictions();
  760. SetupMenu();
  761. }
  762.  
  763.  
  764. private function DefineMenuStructure() : void
  765. {
  766. var curMenuItem : SMenuTab;
  767. var curMenuSubItems : SMenuTab;
  768.  
  769. m_menuData.Clear();
  770. if (!isCiri)
  771. {
  772. DefineMenuItem('GlossaryParent', "panel_title_glossary");
  773. DefineMenuItem('GlossaryBestiaryMenu', "panel_title_glossary_bestiary",'GlossaryParent');
  774.  
  775.  
  776. DefineMenuItem('GlossaryTutorialsMenu', "panel_title_glossary_tutorials",'GlossaryParent');
  777. DefineMenuItem('GlossaryEncyclopediaMenu', "panel_title_glossary_dictionary",'GlossaryParent');
  778. DefineMenuItem('GlossaryBooksMenu', "books_panel_title",'GlossaryParent');
  779. DefineMenuItem('CraftingMenu', "panel_title_crafting", 'GlossaryParent');
  780.  
  781. DefineMenuItem('AlchemyMenu', "panel_title_alchemy", '');
  782.  
  783.  
  784. DefineMenuItem('InventoryMenu', "panel_inventory", '', 'CharacterInventory');
  785. }
  786.  
  787.  
  788. DefineMenuItem('MapMenu', "panel_title_fullmap", '', 'GlobalMap');
  789.  
  790.  
  791.  
  792. if (!isCiri)
  793. {
  794. DefineMenuItem('JournalQuestMenu', "panel_title_journal_quest", '');
  795.  
  796.  
  797. DefineMenuItem('CharacterMenu', "panel_title_character", '');
  798.  
  799. DefineMenuItem('MeditationClockMenu', "panel_title_meditation", '');
  800.  
  801.  
  802.  
  803.  
  804.  
  805. }
  806.  
  807.  
  808. CheckTutorialRestrictions();
  809. }
  810.  
  811. private function DisableNotAllowedTabs()
  812. {
  813. if( !thePlayer.IsActionAllowed( EIAB_OpenGlossary ))
  814. {
  815. SetMenuTabeEnable( 'GlossaryParent', false );
  816. }
  817. if( !thePlayer.IsActionAllowed( EIAB_OpenJournal ))
  818. {
  819. SetMenuTabeEnable( 'JournalQuestMenu', false );
  820. }
  821. if( !thePlayer.IsActionAllowed( EIAB_OpenMap ) && !isCiri)
  822. {
  823. SetMenuTabeEnable( 'MapMenu', false, 'GlobalMap' );
  824. }
  825. if( !thePlayer.IsActionAllowed( EIAB_OpenInventory ))
  826. {
  827. SetMenuTabeEnable( 'InventoryMenu', false, 'CharacterInventory' );
  828. }
  829. if( !thePlayer.IsActionAllowed( EIAB_OpenAlchemy ))
  830. {
  831. SetMenuTabeEnable( 'AlchemyMenu', false );
  832. }
  833. if( !thePlayer.IsActionAllowed( EIAB_OpenCharacterPanel ))
  834. {
  835. SetMenuTabeEnable( 'CharacterMenu', false );
  836. }
  837. if( !thePlayer.IsActionAllowed( EIAB_OpenPreparation ))
  838. {
  839. SetMenuTabeEnable( 'PreparationMenu', false );
  840. }
  841. //---=== modFriendlyMeditation ===---
  842. if( !thePlayer.IsActionAllowed( EIAB_OpenMeditation ) /*&& !isPlayerMeditatingInBed*/ )
  843. //---=== modFriendlyMeditation ===---
  844. {
  845. SetMenuTabeEnable( 'MeditationClockMenu', false );
  846. }
  847.  
  848. }
  849.  
  850. public function ActionBlockStateChange(action:EInputActionBlock, blocked:bool) : void
  851. {
  852. var tabName:name;
  853. var subTabName:name;
  854.  
  855. if( action == EIAB_OpenGlossary )
  856. {
  857. SetMenuTabeEnable( 'GlossaryParent', blocked );
  858. tabName = 'GlossaryParent';
  859. subTabName = '';
  860. }
  861. if( action == EIAB_OpenJournal )
  862. {
  863. SetMenuTabeEnable( 'JournalQuestMenu', blocked );
  864. tabName = 'JournalQuestMenu';
  865. subTabName = '';
  866. }
  867. if( action == EIAB_OpenMap )
  868. {
  869. SetMenuTabeEnable( 'MapMenu', blocked, 'GlobalMap' );
  870. tabName = 'MapMenu';
  871. subTabName = 'GlobalMap';
  872. }
  873. if( action == EIAB_OpenInventory )
  874. {
  875. SetMenuTabeEnable( 'InventoryMenu', blocked, 'CharacterInventory' );
  876. tabName = 'InventoryMenu';
  877. subTabName = 'CharacterInventory';
  878. }
  879. if( action == EIAB_OpenAlchemy )
  880. {
  881. SetMenuTabeEnable( 'AlchemyMenu', blocked );
  882. tabName = 'AlchemyMenu';
  883. subTabName = '';
  884. }
  885. if( action == EIAB_OpenCharacterPanel )
  886. {
  887. SetMenuTabeEnable( 'CharacterMenu', blocked );
  888. tabName = 'CharacterMenu';
  889. subTabName = '';
  890. }
  891. if( action == EIAB_OpenPreparation )
  892. {
  893. SetMenuTabeEnable( 'PreparationMenu', blocked );
  894. tabName = 'PreparationMenu';
  895. subTabName = '';
  896. }
  897. if( action == EIAB_OpenMeditation )
  898. {
  899. SetMenuTabeEnable( 'MeditationClockMenu', blocked );
  900. tabName = 'MeditationClockMenu';
  901. subTabName = '';
  902. }
  903.  
  904. m_fxUpdateTabEnabled.InvokeSelfThreeArgs(FlashArgUInt(NameToFlashUInt(tabName)), FlashArgString(subTabName), FlashArgBool(!blocked));
  905. }
  906.  
  907. private function CheckTutorialRestrictions():void
  908. {
  909. var allowedMenus:array<name>;
  910. var tutorialMgr : CR4TutorialSystem;
  911. var restrictionEnabled:bool;
  912. var curRestriction:bool;
  913. var i, len:int;
  914.  
  915. tutorialMgr = theGame.GetTutorialSystem();
  916. if(tutorialMgr && tutorialMgr.IsRunning())
  917. {
  918. restrictionEnabled = tutorialMgr.IsMenuRestrictionsEnable();
  919. allowedMenus = tutorialMgr.GetAllowedMenuList();
  920. len = m_menuData.Size();
  921. for (i = 0; i < len; i+=1)
  922. {
  923. curRestriction = restrictionEnabled && !allowedMenus.Contains(m_menuData[i].MenuName);
  924. m_menuData[i].Restricted = curRestriction;
  925. }
  926. }
  927. }
  928.  
  929. private function DefineSceneMenuStructure() : void
  930. {
  931. var curMenuItem : SMenuTab;
  932. var curMenuSubItems : SMenuTab;
  933.  
  934. m_menuData.Clear();
  935. if( isShopAvailable )
  936. {
  937. DefineMenuItem('InventoryMenu', "panel_title_shop");
  938. }
  939. if ( isAlchemyAvailable )
  940. {
  941. DefineMenuItem('AlchemyMenu', "panel_title_alchemy", '');
  942. }
  943. if( isCraftingAvailable )
  944. {
  945. DefineMenuItem('CraftingParent', "panel_title_crafting");
  946. DefineMenuItem('CraftingMenu', "panel_title_crafting", 'CraftingParent');
  947.  
  948. DefineMenuItem('BlacksmithMenu', "panel_title_blacksmith_repair", 'CraftingParent', 'Repair');
  949. DefineMenuItem('BlacksmithMenu', "panel_title_blacksmith_sockets", 'CraftingParent', 'Sockets');
  950. DefineMenuItem('BlacksmithMenu', "panel_title_blacksmith_disassamble", 'CraftingParent', 'Disassemble');
  951. }
  952. if ( isEnchantingAvailable )
  953. {
  954. DefineMenuItem('EnchantingParent', "panel_title_enchanting");
  955. DefineMenuItem('EnchantingMenu', "panel_title_enchanting" ,'EnchantingParent');
  956. DefineMenuItem('BlacksmithMenu', "panel_title_blacksmith_add_sockets", 'EnchantingParent', 'AddSockets');
  957. }
  958. }
  959.  
  960. private function GetInitGameplayEntity():IScriptable
  961. {
  962. var l_obj : IScriptable;
  963. var l_entity : IScriptable;
  964. var l_initData : W3InventoryInitData;
  965.  
  966. l_obj = GetMenuInitData();
  967. l_initData = (W3InventoryInitData)l_obj;
  968. if (l_initData)
  969. {
  970. l_entity = (IScriptable)l_initData.containerNPC;
  971. }
  972. else
  973. {
  974. l_entity = l_obj;
  975. }
  976. return l_entity;
  977. }
  978.  
  979. private function AddMerchantTagIfMissing_HACK():void
  980. {
  981. var l_entity : W3MerchantNPC;
  982. var shopInventory : CInventoryComponent;
  983.  
  984. l_entity = (W3MerchantNPC)GetInitGameplayEntity();
  985.  
  986. if (l_entity && !l_entity.HasTag('Merchant'))
  987. {
  988. shopInventory = l_entity.GetInventory();
  989. if (shopInventory && !shopInventory.IsEmpty())
  990. {
  991. l_entity.AddTag('Merchant');
  992. }
  993. }
  994. }
  995.  
  996. private function CheckNpcTags():void
  997. {
  998. var l_npc : W3MerchantNPC;
  999. var l_entity : CGameplayEntity;
  1000. var l_component : W3CraftsmanComponent;
  1001. var invComponent : CInventoryComponent;
  1002.  
  1003. l_entity = (CGameplayEntity)GetInitGameplayEntity();
  1004.  
  1005. if( l_entity )
  1006. {
  1007. isInNpcContext = true;
  1008.  
  1009. isCraftingAvailable = false;
  1010.  
  1011. l_npc = (W3MerchantNPC)l_entity;
  1012. if (l_npc && !l_npc.IsCraftingDisabled() )
  1013. {
  1014. l_component = (W3CraftsmanComponent)l_npc.GetComponentByClassName('W3CraftsmanComponent');
  1015. if ( l_component)
  1016. {
  1017. isCraftingAvailable = true;
  1018. }
  1019. }
  1020.  
  1021. isRepairAvailable = l_entity.HasTag('Armorer') || l_entity.HasTag('Blacksmith');
  1022. isEnchantingAvailable = l_entity.HasTag('type_enchanter');
  1023.  
  1024. invComponent = l_entity.GetInventory();
  1025.  
  1026. if (invComponent)
  1027. {
  1028. isShopAvailable = isShopAvailable || invComponent.HasTag('Merchant');
  1029. isAlchemyAvailable = isAlchemyAvailable || invComponent.HasTag('type_herbalist') || invComponent.HasTag('type_alchemist');
  1030. isEnchantingAvailable = isEnchantingAvailable || invComponent.HasTag('type_enchanter');
  1031. }
  1032.  
  1033. isShopAvailable = isShopAvailable || l_entity.HasTag('Merchant') || isRepairAvailable || isEnchantingAvailable;
  1034.  
  1035.  
  1036.  
  1037. }
  1038. else
  1039. {
  1040. isInNpcContext = false;
  1041. }
  1042. }
  1043.  
  1044. private function DefineMenuItem(itemName:name, itemLabel:string, optional parentMenuItem:name, optional menuState:name) : void
  1045. {
  1046. var newMenuItem : SMenuTab;
  1047.  
  1048. newMenuItem.MenuName = itemName;
  1049. newMenuItem.MenuLabel = itemLabel;
  1050. newMenuItem.Enabled = true;
  1051. newMenuItem.Visible = true;
  1052. newMenuItem.MenuState = menuState;
  1053.  
  1054. newMenuItem.ParentMenu = parentMenuItem;
  1055. m_menuData.PushBack(newMenuItem);
  1056. }
  1057.  
  1058. private function SetupMenu() : void
  1059. {
  1060. var l_flashSubArray : CScriptedFlashArray;
  1061.  
  1062. l_flashSubArray = m_flashValueStorage.CreateTempFlashArray();
  1063. GetGFxMenuStruct(l_flashSubArray);
  1064.  
  1065. m_flashValueStorage.SetFlashArray( "panel.main.setup", l_flashSubArray);
  1066. OnRefreshHubInfo(false);
  1067. }
  1068.  
  1069. private function GetGFxMenuStruct(out StructGFx : CScriptedFlashArray) : void
  1070. {
  1071. var i, j : int;
  1072. var subLen : int;
  1073. var l_flashObject : CScriptedFlashObject;
  1074. var l_flashSubObject : CScriptedFlashObject;
  1075. var l_flashSubArray : CScriptedFlashArray;
  1076. var CurDataItem : SMenuTab;
  1077. var CurSubDataItem : SMenuTab;
  1078.  
  1079. for ( i = 0; i < m_menuData.Size(); i += 1 )
  1080. {
  1081. CurDataItem = m_menuData[i];
  1082.  
  1083. if (CurDataItem.ParentMenu == '')
  1084. {
  1085. l_flashObject = m_flashValueStorage.CreateTempFlashObject();
  1086. GetGFxMenuItem(CurDataItem, l_flashObject);
  1087.  
  1088.  
  1089. l_flashSubArray = m_flashValueStorage.CreateTempFlashArray();
  1090. for (j = 0; j < m_menuData.Size(); j+=1)
  1091. {
  1092. CurSubDataItem = m_menuData[j];
  1093. if (CurSubDataItem.ParentMenu == CurDataItem.MenuName)
  1094. {
  1095. l_flashSubObject = m_flashValueStorage.CreateTempFlashObject();
  1096. GetGFxMenuItem(CurSubDataItem, l_flashSubObject);
  1097. l_flashSubArray.PushBackFlashObject(l_flashSubObject);
  1098. }
  1099. }
  1100. subLen = l_flashSubArray.GetLength();
  1101. l_flashObject.SetMemberFlashArray("subItems", l_flashSubArray);
  1102. StructGFx.PushBackFlashObject(l_flashObject);
  1103. }
  1104. }
  1105. }
  1106.  
  1107. private function GetGFxMenuItem(MenuItemData:SMenuTab, out GFxObjectData:CScriptedFlashObject):void
  1108. {
  1109. GFxObjectData.SetMemberFlashUInt("id", NameToFlashUInt(MenuItemData.MenuName));
  1110. GFxObjectData.SetMemberFlashString("name", NameToString(MenuItemData.MenuName));
  1111. GFxObjectData.SetMemberFlashString("icon", NameToString(MenuItemData.MenuName));
  1112. GFxObjectData.SetMemberFlashString("label", GetLocStringByKeyExt(MenuItemData.MenuLabel));
  1113. GFxObjectData.SetMemberFlashString("tabDesc", GetLocStringByKeyExt(MenuItemData.MenuLabel + "_desc"));
  1114. GFxObjectData.SetMemberFlashString("tabNewDesc", "Nothing New");
  1115. GFxObjectData.SetMemberFlashBool("visible", MenuItemData.Visible);
  1116. GFxObjectData.SetMemberFlashBool("enabled", MenuItemData.Enabled && !MenuItemData.Restricted);
  1117. GFxObjectData.SetMemberFlashString("state", MenuItemData.MenuState);
  1118. }
  1119.  
  1120.  
  1121. private function UpdateTabs()
  1122. {
  1123. UpdatePlayerOrens();
  1124. UpdatePlayerLevel();
  1125. UpdateItemsCounter();
  1126. }
  1127.  
  1128. public function SetMenuTabVisible(tabName:name, value:bool) : void
  1129. {
  1130. var j : int;
  1131.  
  1132. for (j = 0; j < m_menuData.Size(); j+=1)
  1133. {
  1134. if (m_menuData[j].MenuName == tabName)
  1135. {
  1136. m_menuData[j].Visible = value;
  1137. }
  1138. }
  1139. }
  1140.  
  1141. public function SetMenuTabeEnable(tabName:name, value:bool, optional stateName:name) : void
  1142. {
  1143. var j : int;
  1144.  
  1145. for (j = 0; j < m_menuData.Size(); j+=1)
  1146. {
  1147. if (m_menuData[j].MenuName == tabName && m_menuData[j].MenuState == stateName)
  1148. {
  1149. m_menuData[j].Enabled = value;
  1150. }
  1151. }
  1152. }
  1153.  
  1154. public function SetSingleMenuTabEnabled( tabName:name ) : void
  1155. {
  1156. var j : int;
  1157. var curTab : SMenuTab;
  1158. var curParent : name;
  1159. var menuCount : int;
  1160.  
  1161. curParent = '';
  1162. menuCount = m_menuData.Size();
  1163.  
  1164. for( j = 0; j < menuCount; j+=1 )
  1165. {
  1166. curTab = m_menuData[j];
  1167.  
  1168. if( curTab.MenuName == tabName )
  1169. {
  1170. curTab.Enabled = true;
  1171.  
  1172. if (curTab.ParentMenu != '')
  1173. {
  1174.  
  1175. curParent = curTab.ParentMenu;
  1176. }
  1177. }
  1178. else
  1179. {
  1180. if( curTab.ParentMenu != curParent )
  1181. {
  1182. curTab.Enabled = false;
  1183. }
  1184. else
  1185. {
  1186. curParent = '';
  1187. }
  1188. }
  1189. }
  1190.  
  1191. if( curParent != '')
  1192. {
  1193. for( j = 0; j < menuCount; j+=1 )
  1194. {
  1195. curTab = m_menuData[j];
  1196.  
  1197. if( curTab.MenuName == curParent )
  1198. {
  1199. curTab.Enabled = true;
  1200. break;
  1201. }
  1202. }
  1203. }
  1204. }
  1205.  
  1206. public function GoNextMenu() : void
  1207. {
  1208. m_fxNavigateNext.InvokeSelf();
  1209. }
  1210.  
  1211. public function GoPriorMenu() : void
  1212. {
  1213. m_fxNavigatePrior.InvokeSelf();
  1214. }
  1215.  
  1216. public function ShowBackground(value:bool) : void
  1217. {
  1218. m_flashValueStorage.SetFlashBool( "panel.main.background.shows", value);
  1219. }
  1220.  
  1221. public function UpdatePlayerOrens()
  1222. {
  1223. var orens:int;
  1224. orens = thePlayer.GetMoney();
  1225.  
  1226. m_fxUpdateMoney.InvokeSelfOneArg(FlashArgNumber(orens));
  1227. }
  1228.  
  1229. public function UpdatePlayerLevel()
  1230. {
  1231. var curLevel:int;
  1232. var curExp:float;
  1233. var levelExp:float;
  1234. var targetExp:float;
  1235.  
  1236. curLevel = GetCurrentLevel();
  1237. curExp = GetCurrentExperience();
  1238. levelExp = GetLevelExperience();
  1239. targetExp = GetTargetExperience();
  1240.  
  1241. m_fxUpdateLevel.InvokeSelfThreeArgs( FlashArgUInt( curLevel ), FlashArgNumber( curExp - levelExp ), FlashArgNumber( targetExp - levelExp ) );
  1242. }
  1243.  
  1244. public function UpdateItemsCounter() : int
  1245. {
  1246. var encumbrance : int;
  1247. var encumbranceMax : int;
  1248. var _inv : CInventoryComponent;
  1249. var hasHorseUpgrade : bool;
  1250.  
  1251. _inv = thePlayer.GetInventory();
  1252.  
  1253. encumbrance = (int)GetWitcherPlayer().GetEncumbrance();
  1254. encumbranceMax = (int)GetWitcherPlayer().GetMaxRunEncumbrance(hasHorseUpgrade);
  1255.  
  1256. m_fxUpdateWeight.InvokeSelfTwoArgs( FlashArgUInt(encumbrance), FlashArgUInt(encumbranceMax) );
  1257.  
  1258. return encumbrance;
  1259. }
  1260.  
  1261. private function GetCurrentLevel() : int
  1262. {
  1263. var levelManager : W3LevelManager;
  1264.  
  1265. levelManager = GetWitcherPlayer().levelManager;
  1266.  
  1267. return levelManager.GetLevel();
  1268. }
  1269.  
  1270. private function GetCurrentExperience() : float
  1271. {
  1272. var levelManager : W3LevelManager;
  1273.  
  1274. levelManager = GetWitcherPlayer().levelManager;
  1275.  
  1276. return levelManager.GetPointsTotal(EExperiencePoint);;
  1277. }
  1278.  
  1279. private function GetLevelExperience() : float
  1280. {
  1281. var levelManager : W3LevelManager;
  1282.  
  1283. levelManager = GetWitcherPlayer().levelManager;
  1284. return levelManager.GetTotalExpForCurrLevel();
  1285. }
  1286.  
  1287. private function GetTargetExperience() : float
  1288. {
  1289. var levelManager : W3LevelManager;
  1290.  
  1291. levelManager = GetWitcherPlayer().levelManager;
  1292. return levelManager.GetTotalExpForNextLevel();
  1293. }
  1294.  
  1295. public function SetMenuAlpha( value : int ) : void
  1296. {
  1297. m_flashModule.SetAlpha(value);
  1298. }
  1299.  
  1300. function CloseMenuRequest():void
  1301. {
  1302. var menu : CR4MenuBase;
  1303.  
  1304. menu = (CR4MenuBase)GetSubMenu();
  1305. if( !menu )
  1306. {
  1307. CloseMenu();
  1308. }
  1309. }
  1310.  
  1311. event OnFailedCreateMenu()
  1312. {
  1313.  
  1314.  
  1315. m_fxSubMenuClosed.InvokeSelf();
  1316. m_GFxBindings.Clear();
  1317. m_defaultBindings.Clear();
  1318. m_contextBindings.Clear();
  1319. UpdateInputFeedback();
  1320.  
  1321. }
  1322.  
  1323. function ChildRequestCloseMenu()
  1324. {
  1325. if (!m_hubEnabled)
  1326. {
  1327. CloseMenu();
  1328. }
  1329. else
  1330. {
  1331. theGame.GetTutorialSystem().uiHandler.OnOpeningMenu(GetMenuName());
  1332. }
  1333.  
  1334. m_fxSubMenuClosed.InvokeSelf();
  1335. m_GFxBindings.Clear();
  1336. m_defaultBindings.Clear();
  1337. m_contextBindings.Clear();
  1338. UpdateInputFeedback();
  1339.  
  1340. if( m_parentMenu )
  1341. {
  1342. m_parentMenu.ChildRequestCloseMenu();
  1343. }
  1344. OnPlaySoundEvent("gui_global_panel_close");
  1345. }
  1346.  
  1347. public function UpdateGFxButtons(gfxButtonsList : array<SKeyBinding>, optional populateData:bool):void
  1348. {
  1349. m_GFxBindings = gfxButtonsList;
  1350. if (populateData)
  1351. {
  1352. UpdateInputFeedback();
  1353. }
  1354. }
  1355.  
  1356. public function UpdateDefaultButtons(defaultButtonsList : array<SKeyBinding>, optional populateData:bool):void
  1357. {
  1358. m_defaultBindings = defaultButtonsList;
  1359. if (populateData)
  1360. {
  1361. UpdateInputFeedback();
  1362. }
  1363. }
  1364.  
  1365. public function UpdateContextButtons(contextButtonsList : array<SKeyBinding>, optional populateData:bool):void
  1366. {
  1367. m_contextBindings = contextButtonsList;
  1368. if (populateData)
  1369. {
  1370. UpdateInputFeedback();
  1371. }
  1372. }
  1373.  
  1374. protected function GatherBindersArray(out resultArray : CScriptedFlashArray, bindersList : array<SKeyBinding>, optional level:int, optional isContextBinding:bool)
  1375. {
  1376. var tempFlashObject : CScriptedFlashObject;
  1377. var bindingGFxData : CScriptedFlashObject;
  1378. var curBinding : SKeyBinding;
  1379. var bindingsCount : int;
  1380. var i : int;
  1381.  
  1382. bindingsCount = bindersList.Size();
  1383. for( i =0; i < bindingsCount; i += 1 )
  1384. {
  1385. curBinding = bindersList[i];
  1386. tempFlashObject = m_flashValueStorage.CreateTempFlashObject();
  1387.  
  1388. bindingGFxData = tempFlashObject.CreateFlashObject("red.game.witcher3.data.KeyBindingData");
  1389. bindingGFxData.SetMemberFlashString("gamepad_navEquivalent", curBinding.Gamepad_NavCode );
  1390. bindingGFxData.SetMemberFlashInt("keyboard_keyCode", curBinding.Keyboard_KeyCode );
  1391. bindingGFxData.SetMemberFlashBool( "hasHoldPrefix", curBinding.IsHold );
  1392. if (curBinding.IsLocalized)
  1393. {
  1394. bindingGFxData.SetMemberFlashString("label", curBinding.LocalizationKey );
  1395. }
  1396. else
  1397. {
  1398. bindingGFxData.SetMemberFlashString("label", GetLocStringByKeyExt(curBinding.LocalizationKey) );
  1399. }
  1400. bindingGFxData.SetMemberFlashString("isContextBinding", isContextBinding);
  1401. bindingGFxData.SetMemberFlashInt("level", level);
  1402.  
  1403. resultArray.PushBackFlashObject(bindingGFxData);
  1404. }
  1405. }
  1406.  
  1407. public function UpdateInputFeedback():void
  1408. {
  1409. var gfxDataList : CScriptedFlashArray;
  1410. gfxDataList = m_flashValueStorage.CreateTempFlashArray();
  1411. GatherBindersArray(gfxDataList, m_contextBindings, 2, true);
  1412. GatherBindersArray(gfxDataList, m_GFxBindings, 1);
  1413. GatherBindersArray(gfxDataList, m_defaultBindings, 0);
  1414. m_flashValueStorage.SetFlashArray("common.input.feedback.setup", gfxDataList);
  1415. }
  1416.  
  1417. function PlayOpenSoundEvent()
  1418. {
  1419. if (theGame.GetMenuToOpen() == '')
  1420. {
  1421. OnPlaySoundEvent( "gui_global_panel_open" );
  1422. }
  1423. }
  1424.  
  1425. event OnPlaySoundEvent( soundName : string )
  1426. {
  1427. var currentSubMenu : CR4MenuBase;
  1428.  
  1429. currentSubMenu = (CR4MenuBase)GetSubMenu();
  1430.  
  1431.  
  1432. if (soundName != "gui_global_highlight" || !currentSubMenu)
  1433. {
  1434. super.OnPlaySoundEvent( soundName );
  1435. }
  1436. }
  1437.  
  1438. event OnOpenSubPanel(menuName:name)
  1439. {
  1440.  
  1441. if(theGame.GetTutorialSystem() && theGame.GetTutorialSystem().IsRunning())
  1442. {
  1443. theGame.GetTutorialSystem().uiHandler.OnClosingMenu(GetMenuName());
  1444. theGame.GetTutorialSystem().uiHandler.OnOpeningMenu(menuName);
  1445. }
  1446.  
  1447. LogChannel( 'Gui', "OnOpenSubPanel " + menuName );
  1448. }
  1449.  
  1450. event OnCloseSubPanel(menuName:name)
  1451. {
  1452.  
  1453. if(theGame.GetTutorialSystem() && theGame.GetTutorialSystem().IsRunning())
  1454. {
  1455. theGame.GetTutorialSystem().uiHandler.OnClosingMenu(menuName);
  1456. theGame.GetTutorialSystem().uiHandler.OnOpeningMenu(GetMenuName());
  1457. }
  1458.  
  1459. LogChannel( 'Gui', "OnCloseSubPanel");
  1460. }
  1461.  
  1462. event OnControllerChanged(isGamepad:bool)
  1463. {
  1464.  
  1465. }
  1466.  
  1467.  
  1468. //---=== modFriendlyMeditation ===---
  1469. //public function SetMeditationMode(value:bool):void
  1470. //{
  1471. // if (m_mode_meditation != value)
  1472. // {
  1473. // m_mode_meditation = value;
  1474. //
  1475. //
  1476. //
  1477. //
  1478. //
  1479. // if (m_mode_meditation)
  1480. // {
  1481. // m_had_meditation = true;
  1482. // }
  1483. // }
  1484. //}
  1485. //
  1486. //private function StopMeditation()
  1487. //{
  1488. // var medd : W3PlayerWitcherStateMeditation;
  1489. // var waitt : W3PlayerWitcherStateMeditationWaiting;
  1490. //
  1491. // if (m_had_meditation)
  1492. // {
  1493. // SetMeditationMode(false);
  1494. // if(thePlayer.GetCurrentStateName() == 'MeditationWaiting')
  1495. // {
  1496. // waitt = (W3PlayerWitcherStateMeditationWaiting)thePlayer.GetCurrentState();
  1497. // if(waitt)
  1498. // {
  1499. // waitt.StopRequested();
  1500. // }
  1501. // }
  1502. // else
  1503. // {
  1504. // medd = (W3PlayerWitcherStateMeditation)GetWitcherPlayer().GetCurrentState();
  1505. // if(medd)
  1506. // {
  1507. // medd.StopRequested();
  1508. // }
  1509. // }
  1510. // }
  1511. //}
  1512. //---=== modFriendlyMeditation ===---
  1513.  
  1514.  
  1515.  
  1516. private function SendLastItemInfoData() : void
  1517. {
  1518. var l_flashSubArray : CScriptedFlashArray;
  1519.  
  1520. l_flashSubArray = m_flashValueStorage.CreateTempFlashArray();
  1521. GetNewItemsGFxMenuStruct(l_flashSubArray);
  1522.  
  1523. m_flashValueStorage.SetFlashArray( "panel.main.panelinfo.newestitems", l_flashSubArray);
  1524. }
  1525.  
  1526. private function SendQuestsInfoData() : void
  1527. {
  1528. var l_flashSubArray : CScriptedFlashArray;
  1529.  
  1530. l_flashSubArray = m_flashValueStorage.CreateTempFlashArray();
  1531. GetTrackedQuestGFxMenuStruct(l_flashSubArray);
  1532.  
  1533. m_flashValueStorage.SetFlashArray( "panel.main.panelinfo.quests", l_flashSubArray);
  1534. }
  1535.  
  1536. private function SendGlossaryInfoData() : void
  1537. {
  1538. var l_flashSubArray : CScriptedFlashArray;
  1539.  
  1540. l_flashSubArray = m_flashValueStorage.CreateTempFlashArray();
  1541. GetGlossaryGFxMenuStruct(l_flashSubArray);
  1542.  
  1543. m_flashValueStorage.SetFlashArray( "panel.main.panelinfo.glossary", l_flashSubArray);
  1544. }
  1545.  
  1546. private function SendAlchemyInfoData() : void
  1547. {
  1548. var l_flashSubArray : CScriptedFlashArray;
  1549.  
  1550. l_flashSubArray = m_flashValueStorage.CreateTempFlashArray();
  1551. GetAlchemyGFxMenuStruct(l_flashSubArray);
  1552.  
  1553. m_flashValueStorage.SetFlashArray( "panel.main.panelinfo.alchemy", l_flashSubArray);
  1554. }
  1555.  
  1556. private function SendSkillsInfoData() : void
  1557. {
  1558. var l_flashSubArray : CScriptedFlashArray;
  1559.  
  1560. l_flashSubArray = m_flashValueStorage.CreateTempFlashArray();
  1561. GetSkillGFxMenuStruct(l_flashSubArray);
  1562.  
  1563. m_flashValueStorage.SetFlashArray( "panel.main.panelinfo.skills", l_flashSubArray);
  1564. }
  1565.  
  1566. private function SendMappinInfoData() : void
  1567. {
  1568. var l_flashSubArray : CScriptedFlashArray;
  1569.  
  1570. l_flashSubArray = m_flashValueStorage.CreateTempFlashArray();
  1571. GetMappinGFxMenuStruct(l_flashSubArray);
  1572.  
  1573. m_flashValueStorage.SetFlashArray( "panel.main.panelinfo.map", l_flashSubArray);
  1574. }
  1575.  
  1576. private function GetNewItemsGFxMenuStruct( out StructGFx : CScriptedFlashArray ) : void
  1577. {
  1578. var i : int;
  1579. var l_flashObject : CScriptedFlashObject;
  1580. var newestItems : array < SItemUniqueId >;
  1581. var _inv : CInventoryComponent;
  1582. var item : SItemUniqueId;
  1583. var iconPath : string;
  1584. var itemsDisplayed : int;
  1585. var m_guiManager : CR4GuiManager;
  1586.  
  1587. _inv = thePlayer.GetInventory();
  1588. m_guiManager = theGame.GetGuiManager();
  1589.  
  1590. if( !isCraftingAvailable && !isRepairAvailable && !isShopAvailable )
  1591. {
  1592. newestItems = m_guiManager.GetNewestItems();
  1593. }
  1594. for ( i = 0; i < newestItems.Size(); i += 1 )
  1595. {
  1596. item = newestItems[i];
  1597. if( _inv.IsIdValid(item) && !( _inv.ItemHasTag( item, 'NoShow' )) )
  1598. {
  1599. l_flashObject = m_flashValueStorage.CreateTempFlashObject();
  1600.  
  1601. iconPath = _inv.GetItemIconPathByUniqueID( item );
  1602. l_flashObject.SetMemberFlashString( "iconName", iconPath );
  1603. l_flashObject.SetMemberFlashString( "category", GetLocStringByKeyExt( "item_category_" + _inv.GetItemCategory( item ) ) + " " + GetItemRarityDescriptionFromInt( _inv.GetItemQuality(item) ) );
  1604. l_flashObject.SetMemberFlashString( "itemName", GetLocStringByKeyExt( _inv.GetItemLocalizedNameByUniqueID( item ) ) );
  1605. StructGFx.PushBackFlashObject(l_flashObject);
  1606. }
  1607. }
  1608. m_fxSetShopInventory.InvokeSelfOneArg(FlashArgBool( isShopAvailable || isCraftingAvailable ));
  1609. }
  1610.  
  1611. private function GetTrackedQuestGFxMenuStruct( out StructGFx : CScriptedFlashArray ) : void
  1612. {
  1613. var l_flashObject : CScriptedFlashObject;
  1614. var curTrackedQuest : CJournalQuest;
  1615. var curHighlightedObjective : CJournalQuestObjective;
  1616.  
  1617. curTrackedQuest = theGame.GetJournalManager().GetTrackedQuest();
  1618. curHighlightedObjective = theGame.GetJournalManager().GetHighlightedObjective();
  1619.  
  1620. l_flashObject = m_flashValueStorage.CreateTempFlashObject();
  1621. if( curTrackedQuest )
  1622. {
  1623. l_flashObject.SetMemberFlashString( "questName", GetLocStringById( curTrackedQuest.GetTitleStringId() ));
  1624. l_flashObject.SetMemberFlashString( "objectiveName", GetLocStringById( curHighlightedObjective.GetTitleStringId()));
  1625. }
  1626. else
  1627. {
  1628. l_flashObject.SetMemberFlashString( "questName", "");
  1629. l_flashObject.SetMemberFlashString( "objectiveName", "");
  1630. }
  1631. StructGFx.PushBackFlashObject(l_flashObject);
  1632. }
  1633.  
  1634. private function GetGlossaryGFxMenuStruct( out StructGFx : CScriptedFlashArray ) : void
  1635. {
  1636. var l_flashObject : CScriptedFlashObject;
  1637. var m_guiManager : CR4GuiManager;
  1638. var glossaryEntries : array < SGlossaryEntry >;
  1639. var i : int;
  1640. var m_definitionsManager : CDefinitionsManagerAccessor;
  1641.  
  1642. m_guiManager = theGame.GetGuiManager();
  1643. glossaryEntries = m_guiManager.GetNewGlossaryEntries();
  1644. for( i = 0; i < glossaryEntries.Size(); i += 1 )
  1645. {
  1646. l_flashObject = m_flashValueStorage.CreateTempFlashObject();
  1647. l_flashObject.SetMemberFlashString( "topText", GetLocStringByKeyExt( glossaryEntries[i].panelName ));
  1648. if( glossaryEntries[i].newEntry )
  1649. {
  1650. l_flashObject.SetMemberFlashString( "bottomText", GetEntryTitle( glossaryEntries[i].newEntry ));
  1651. }
  1652. else
  1653. {
  1654. m_definitionsManager = theGame.GetDefinitionsManager();
  1655. l_flashObject.SetMemberFlashString( "bottomText", GetLocStringByKeyExt( m_definitionsManager.GetItemLocalisationKeyName( glossaryEntries[i].tag ) ));
  1656. }
  1657. StructGFx.PushBackFlashObject(l_flashObject);
  1658. }
  1659. }
  1660.  
  1661. private function GetAlchemyGFxMenuStruct( out StructGFx : CScriptedFlashArray ) : void
  1662. {
  1663. var l_flashObject : CScriptedFlashObject;
  1664. var m_guiManager : CR4GuiManager;
  1665. var alchemyEntries : array < SGlossaryEntry >;
  1666. var i : int;
  1667. var m_definitionsManager : CDefinitionsManagerAccessor;
  1668.  
  1669. m_guiManager = theGame.GetGuiManager();
  1670. alchemyEntries = m_guiManager.GetNewAlchemyEntries();
  1671. for( i = 0; i < alchemyEntries.Size(); i += 1 )
  1672. {
  1673. l_flashObject = m_flashValueStorage.CreateTempFlashObject();
  1674. l_flashObject.SetMemberFlashString( "topText", GetLocStringByKeyExt( alchemyEntries[i].panelName ));
  1675. m_definitionsManager = theGame.GetDefinitionsManager();
  1676. l_flashObject.SetMemberFlashString( "bottomText", GetLocStringByKeyExt( m_definitionsManager.GetItemLocalisationKeyName( alchemyEntries[i].tag ) ));
  1677. StructGFx.PushBackFlashObject(l_flashObject);
  1678. }
  1679. }
  1680.  
  1681. function GetEntryTitle( journalBase : CJournalBase ) : string
  1682. {
  1683. var journalCreature : CJournalCreature;
  1684. var journalCharacter : CJournalCharacter;
  1685. var journalGlossary : CJournalGlossary;
  1686.  
  1687. journalCreature = (CJournalCreature)journalBase;
  1688. if( journalCreature )
  1689. {
  1690. return GetLocStringById( journalCreature.GetNameStringId() );
  1691. }
  1692.  
  1693. journalCharacter = (CJournalCharacter)journalBase;
  1694. if( journalCharacter )
  1695. {
  1696. return GetLocStringById( journalCharacter.GetNameStringId() );
  1697. }
  1698.  
  1699. journalGlossary = (CJournalGlossary)journalBase;
  1700. if( journalGlossary )
  1701. {
  1702. return GetLocStringById( journalGlossary.GetTitleStringId() );
  1703. }
  1704. return "";
  1705. }
  1706.  
  1707. private function GetSkillGFxMenuStruct( out StructGFx : CScriptedFlashArray ) : void
  1708. {
  1709. var l_flashObject : CScriptedFlashObject;
  1710. var m_guiManager : CR4GuiManager;
  1711. var skillEntries : array < ESkill >;
  1712. var skillStruct : SSkill;
  1713. var i : int;
  1714. var m_definitionsManager : CDefinitionsManagerAccessor;
  1715.  
  1716. m_guiManager = theGame.GetGuiManager();
  1717. skillEntries = m_guiManager.GetNewSkillsEntries();
  1718. for( i = 0; i < skillEntries.Size(); i += 1 )
  1719. {
  1720. l_flashObject = m_flashValueStorage.CreateTempFlashObject();
  1721. skillStruct = thePlayer.GetPlayerSkill( skillEntries[i] );
  1722. l_flashObject.SetMemberFlashString( "topText", GetLocStringByKeyExt( skillStruct.localisationNameKey ));
  1723.  
  1724. l_flashObject.SetMemberFlashString( "bottomText", GetLocStringByKeyExt( SkillPathTypeToLocalisationKey(skillStruct.skillPath)));
  1725. StructGFx.PushBackFlashObject(l_flashObject);
  1726. }
  1727. }
  1728.  
  1729. private function GetMappinGFxMenuStruct( out StructGFx : CScriptedFlashArray ) : void
  1730. {
  1731. var l_flashObject : CScriptedFlashObject;
  1732. var m_guiManager : CR4GuiManager;
  1733. var mappinEntries : array < SMappinEntry >;
  1734. var i : int;
  1735. var m_definitionsManager : CDefinitionsManagerAccessor;
  1736.  
  1737. m_guiManager = theGame.GetGuiManager();
  1738. mappinEntries = m_guiManager.GetNewMappinEntries();
  1739. for( i = 0; i < mappinEntries.Size(); i += 1 )
  1740. {
  1741. l_flashObject = m_flashValueStorage.CreateTempFlashObject();
  1742.  
  1743. l_flashObject.SetMemberFlashString( "topText", GetLocStringByKeyExt( StrLower("map_location_"+mappinEntries[i].newMappin) ));
  1744. if( mappinEntries[i].newMappinType != '' )
  1745. {
  1746. l_flashObject.SetMemberFlashString( "bottomText", GetLocStringByKeyExt( StrLower("map_location_"+mappinEntries[i].newMappinType) ) );
  1747. l_flashObject.SetMemberFlashString( "type", mappinEntries[i].newMappinType );
  1748. }
  1749. else
  1750. {
  1751. l_flashObject.SetMemberFlashString( "bottomText", "" );
  1752. l_flashObject.SetMemberFlashString( "type", mappinEntries[i].newMappin );
  1753. }
  1754. StructGFx.PushBackFlashObject(l_flashObject);
  1755. }
  1756. }
  1757.  
  1758. event OnRefreshHubInfo( fromAs : bool )
  1759. {
  1760. SendQuestsInfoData();
  1761. SendSkillsInfoData();
  1762. SendLastItemInfoData();
  1763. if( !fromAs )
  1764. {
  1765. SendGlossaryInfoData();
  1766. SendAlchemyInfoData();
  1767. SendMappinInfoData();
  1768. }
  1769. }
  1770.  
  1771. event OnVideoStopped()
  1772. {
  1773. var menuSprite : CScriptedFlashSprite;
  1774. var menuSprite2 : CScriptedFlashSprite;
  1775. var menuStorybook : CR4GlossaryStorybookMenu;
  1776. menuStorybook = (CR4GlossaryStorybookMenu)GetSubMenu();
  1777. if( menuStorybook.bMovieIsPlaying )
  1778. {
  1779. menuSprite2 = this.GetMenuFlash();
  1780. menuSprite2.SetVisible(true);
  1781. menuStorybook.SetMovieIsPlaying( false );
  1782. menuStorybook.ShowMenuAgain();
  1783. }
  1784. }
  1785.  
  1786. public function SetLockedInHub(value:bool) : void
  1787. {
  1788. m_lockedInHub = value;
  1789.  
  1790. m_fxBlockHubClosing.InvokeSelfOneArg( FlashArgBool(value) );
  1791. }
  1792.  
  1793. public function SetLockedInMenu(value:bool)
  1794. {
  1795. var childMenu : CR4MenuBase;
  1796.  
  1797. m_lockedInMenu = value;
  1798.  
  1799. childMenu = GetLastChild();
  1800.  
  1801. if (childMenu)
  1802. {
  1803. childMenu.UpdateRestrictDirectClosing(value);
  1804. }
  1805.  
  1806. m_fxBlockMenuClosing.InvokeSelfOneArg( FlashArgBool(value) );
  1807. }
  1808.  
  1809. public function IsLockedInHub() : bool
  1810. {
  1811. return m_lockedInHub;
  1812. }
  1813.  
  1814. public function IsLockedInMenu() : bool
  1815. {
  1816. return m_lockedInMenu;
  1817. }
  1818.  
  1819. protected function fetchCurrentHotkeys() : void
  1820. {
  1821. var outKeys : array< EInputKey >;
  1822.  
  1823. outKeys.Clear();
  1824. theInput.GetPCKeysForAction('PanelInv', outKeys);
  1825. if (outKeys.Size() > 0)
  1826. {
  1827. inventoryHotkey = outKeys[0];
  1828. }
  1829. else
  1830. {
  1831. inventoryHotkey = IK_None;
  1832. }
  1833.  
  1834. outKeys.Clear();
  1835. theInput.GetPCKeysForAction('PanelChar', outKeys);
  1836. if (outKeys.Size() > 0)
  1837. {
  1838. characterHotkey = outKeys[0];
  1839. }
  1840. else
  1841. {
  1842. characterHotkey = IK_None;
  1843. }
  1844.  
  1845. outKeys.Clear();
  1846. theInput.GetPCKeysForAction('PanelMapPC', outKeys);
  1847. if (outKeys.Size() > 0)
  1848. {
  1849. mapHotkey = outKeys[0];
  1850. }
  1851. else
  1852. {
  1853. mapHotkey = IK_None;
  1854. }
  1855.  
  1856. outKeys.Clear();
  1857. theInput.GetPCKeysForAction('PanelJour', outKeys);
  1858. if (outKeys.Size() > 0)
  1859. {
  1860. journalHotkey = outKeys[0];
  1861. }
  1862. else
  1863. {
  1864. journalHotkey = IK_None;
  1865. }
  1866.  
  1867. outKeys.Clear();
  1868. theInput.GetPCKeysForAction('PanelAlch', outKeys);
  1869. if (outKeys.Size() > 0)
  1870. {
  1871. alchemyHotkey = outKeys[0];
  1872. }
  1873. else
  1874. {
  1875. alchemyHotkey = IK_None;
  1876. }
  1877.  
  1878. outKeys.Clear();
  1879. theInput.GetPCKeysForAction('PanelBestiary', outKeys);
  1880. if (outKeys.Size() > 0)
  1881. {
  1882. bestiaryHotkey = outKeys[0];
  1883. }
  1884. else
  1885. {
  1886. bestiaryHotkey = IK_None;
  1887. }
  1888.  
  1889. outKeys.Clear();
  1890. theInput.GetPCKeysForAction('PanelGlossary', outKeys);
  1891. if (outKeys.Size() > 0)
  1892. {
  1893. glossaryHotkey = outKeys[0];
  1894. }
  1895. else
  1896. {
  1897. glossaryHotkey = IK_None;
  1898. }
  1899.  
  1900. outKeys.Clear();
  1901. theInput.GetPCKeysForAction('PanelMeditation', outKeys);
  1902. if (outKeys.Size() > 0)
  1903. {
  1904. meditationHotkey = outKeys[0];
  1905. }
  1906. else
  1907. {
  1908. meditationHotkey = IK_None;
  1909. }
  1910.  
  1911. outKeys.Clear();
  1912. theInput.GetPCKeysForAction('PanelCrafting', outKeys);
  1913. if (outKeys.Size() > 0)
  1914. {
  1915. craftingHotkey = outKeys[0];
  1916. }
  1917. else
  1918. {
  1919. craftingHotkey = IK_None;
  1920. }
  1921. }
  1922.  
  1923.  
  1924.  
  1925. event OnHotkeyTriggered(keyCode:EInputKey)
  1926. {
  1927. var childMenu : CR4MenuBase;
  1928. var invMenu : CR4InventoryMenu;
  1929. var charMenu : CR4CharacterMenu;
  1930. var mapMenu : CR4MapMenu;
  1931. var jourMenu : CR4JournalQuestMenu;
  1932. var alchMenu : CR4AlchemyMenu;
  1933. var bestMenu : CR4GlossaryBestiaryMenu;
  1934. var glossMenu : CR4GlossaryEncyclopediaMenu;
  1935. var medMenu : CR4MeditationClockMenu;
  1936. var craftMenu : CR4CraftingMenu;
  1937.  
  1938. childMenu = GetLastChild();
  1939.  
  1940. if (childMenu && !IsLockedInHub() && !IsLockedInMenu())
  1941. {
  1942. if (keyCode == inventoryHotkey && theGame.GameplayFactsQuerySum("shopMode") == 0)
  1943. {
  1944. invMenu = (CR4InventoryMenu)childMenu;
  1945. if (invMenu)
  1946. {
  1947. invMenu.CloseMenu();
  1948. CloseMenu();
  1949. }
  1950. else if (HasMenuWithStateDefined('InventoryMenu', 'CharacterInventory') && thePlayer.IsActionAllowed( EIAB_OpenInventory ))
  1951. {
  1952. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('InventoryMenu')), FlashArgString('CharacterInventory'));
  1953. m_fxEnterCurrentTab.InvokeSelf();
  1954. }
  1955. }
  1956. else if (keyCode == characterHotkey)
  1957. {
  1958. charMenu = (CR4CharacterMenu)childMenu;
  1959.  
  1960. if (charMenu)
  1961. {
  1962. charMenu.CloseMenu();
  1963. CloseMenu();
  1964. }
  1965. else if (HasMenuDefined('CharacterMenu') && thePlayer.IsActionAllowed( EIAB_OpenCharacterPanel ))
  1966. {
  1967. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('CharacterMenu')), FlashArgString(''));
  1968. m_fxEnterCurrentTab.InvokeSelf();
  1969. }
  1970. }
  1971. else if (keyCode == mapHotkey)
  1972. {
  1973. mapMenu = (CR4MapMenu)childMenu;
  1974.  
  1975. if (mapMenu)
  1976. {
  1977. mapMenu.CloseMenu();
  1978. CloseMenu();
  1979. }
  1980. else if (HasMenuWithStateDefined('MapMenu', 'GlobalMap') && thePlayer.IsActionAllowed( EIAB_OpenMap ))
  1981. {
  1982. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('MapMenu')), FlashArgString('GlobalMap'));
  1983. m_fxEnterCurrentTab.InvokeSelf();
  1984. }
  1985. }
  1986. else if (keyCode == journalHotkey)
  1987. {
  1988. jourMenu = (CR4JournalQuestMenu)childMenu;
  1989.  
  1990. if (jourMenu)
  1991. {
  1992. jourMenu.CloseMenu();
  1993. CloseMenu();
  1994. }
  1995. else if (HasMenuDefined('JournalQuestMenu') && thePlayer.IsActionAllowed( EIAB_OpenJournal ))
  1996. {
  1997. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('JournalQuestMenu')), FlashArgString(''));
  1998. m_fxEnterCurrentTab.InvokeSelf();
  1999. }
  2000. }
  2001. else if (keyCode == alchemyHotkey)
  2002. {
  2003. alchMenu = (CR4AlchemyMenu)childMenu;
  2004.  
  2005. if (alchMenu)
  2006. {
  2007. alchMenu.CloseMenu();
  2008. CloseMenu();
  2009. }
  2010. else if (HasMenuDefined('AlchemyMenu') && thePlayer.IsActionAllowed( EIAB_OpenAlchemy ))
  2011. {
  2012. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('AlchemyMenu')), FlashArgString(''));
  2013. m_fxEnterCurrentTab.InvokeSelf();
  2014. }
  2015. }
  2016. else if (keyCode == bestiaryHotkey)
  2017. {
  2018. bestMenu = (CR4GlossaryBestiaryMenu)childMenu;
  2019.  
  2020. if (bestMenu)
  2021. {
  2022. bestMenu.CloseMenu();
  2023. CloseMenu();
  2024. }
  2025. else if (HasMenuDefined('GlossaryBestiaryMenu') && thePlayer.IsActionAllowed( EIAB_OpenGlossary ))
  2026. {
  2027. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('GlossaryBestiaryMenu')), FlashArgString(''));
  2028. m_fxEnterCurrentTab.InvokeSelf();
  2029. }
  2030. }
  2031. else if (keyCode == glossaryHotkey)
  2032. {
  2033. glossMenu = (CR4GlossaryEncyclopediaMenu)childMenu;
  2034.  
  2035. if (glossMenu)
  2036. {
  2037. glossMenu.CloseMenu();
  2038. CloseMenu();
  2039. }
  2040. else if (HasMenuDefined('GlossaryEncyclopediaMenu') && thePlayer.IsActionAllowed( EIAB_OpenGlossary ))
  2041. {
  2042. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('GlossaryEncyclopediaMenu')), FlashArgString(''));
  2043. m_fxEnterCurrentTab.InvokeSelf();
  2044. }
  2045. }
  2046. else if (keyCode == meditationHotkey)
  2047. {
  2048. medMenu = (CR4MeditationClockMenu)childMenu;
  2049.  
  2050. if (medMenu)
  2051. {
  2052. medMenu.CloseMenu();
  2053. CloseMenu();
  2054. }
  2055. else if (HasMenuDefined('MeditationClockMenu') && thePlayer.IsActionAllowed( EIAB_OpenMeditation ))
  2056. {
  2057. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('MeditationClockMenu')), FlashArgString(''));
  2058. m_fxEnterCurrentTab.InvokeSelf();
  2059. }
  2060. }
  2061. else if (keyCode == craftingHotkey && theGame.GameplayFactsQuerySum("shopMode") == 0)
  2062. {
  2063. craftMenu = (CR4CraftingMenu)childMenu;
  2064.  
  2065. if (craftMenu)
  2066. {
  2067. craftMenu.CloseMenu();
  2068. CloseMenu();
  2069. }
  2070. else if (HasMenuDefined('CraftingMenu') && thePlayer.IsActionAllowed( EIAB_OpenGlossary ))
  2071. {
  2072. m_fxSelectTab.InvokeSelfTwoArgs(FlashArgUInt(NameToFlashUInt('CraftingMenu')), FlashArgString(''));
  2073. m_fxEnterCurrentTab.InvokeSelf();
  2074. }
  2075. }
  2076. // -= WMK:modQuickSlots =-
  2077. else if ((CR4InventoryMenu)childMenu) {
  2078. WmkGetQuickSlotsInstance().OnInventoryMenuHotkeyTriggered((CR4InventoryMenu)childMenu, keyCode);
  2079. }
  2080. // -= WMK:modQuickSlots =-
  2081. }
  2082. }
  2083.  
  2084. event OnCloseMenu()
  2085. {
  2086. if (!m_lockedInHub)
  2087. {
  2088. CloseMenu();
  2089. }
  2090. }
  2091. }
  2092.  
  2093. exec function testLockInHub(locked:bool)
  2094. {
  2095. var guiManager : CR4GuiManager;
  2096. var rootMenu : CR4CommonMenu;
  2097.  
  2098. guiManager = theGame.GetGuiManager();
  2099.  
  2100. if (guiManager && guiManager.IsAnyMenu())
  2101. {
  2102. rootMenu = (CR4CommonMenu)guiManager.GetRootMenu();
  2103.  
  2104. if (rootMenu)
  2105. {
  2106. rootMenu.SetLockedInHub(locked);
  2107. }
  2108. }
  2109. }
  2110.  
  2111. exec function testLockInMenu(locked:bool)
  2112. {
  2113. var guiManager : CR4GuiManager;
  2114. var rootMenu : CR4CommonMenu;
  2115.  
  2116. guiManager = theGame.GetGuiManager();
  2117.  
  2118. if (guiManager && guiManager.IsAnyMenu())
  2119. {
  2120. rootMenu = (CR4CommonMenu)guiManager.GetRootMenu();
  2121.  
  2122. if (rootMenu)
  2123. {
  2124. rootMenu.SetLockedInMenu(locked);
  2125. }
  2126. }
  2127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement