NierDia

Untitled

Apr 30th, 2024
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 48.01 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.  
  7.  
  8. class CR4MapMenu extends CR4MenuBase
  9. {
  10. private var m_shownArea : EAreaName;
  11. private var m_currentArea : EAreaName;
  12.  
  13. private var m_fxRemoveUserMapPin : CScriptedFlashFunction;
  14. private var m_fxSetMapZooms : CScriptedFlashFunction;
  15. private var m_fxSetMapVisibilityBoundaries : CScriptedFlashFunction;
  16. private var m_fxSetMapScrollingBoundaries : CScriptedFlashFunction;
  17. private var m_fxSetMapSettings : CScriptedFlashFunction;
  18. private var m_fxReinitializeMap : CScriptedFlashFunction;
  19. private var m_fxEnableDebugMode : CScriptedFlashFunction;
  20. private var m_fxEnableUnlimitedZoom : CScriptedFlashFunction;
  21. private var m_fxEnableManualLod : CScriptedFlashFunction;
  22. private var m_fxShowBorders : CScriptedFlashFunction;
  23. private var m_fxSetDefaultPosition : CScriptedFlashFunction;
  24. private var m_fxShowToussaint : CScriptedFlashFunction;
  25. private var m_fxSetHighlightedMapPin : CScriptedFlashFunction;
  26.  
  27. // ---=== VladimirHUD ===--- Lim3zer0 eNoodles
  28. private var m_fxUpdateMenuBackgroundImage : CScriptedFlashFunction;
  29. private var m_fxEnableCategoryPanel : CScriptedFlashFunction;
  30. private var m_fxSetWideScreen : CScriptedFlashFunction;
  31. // ---=== VladimirHUD ===---
  32.  
  33. private var m_userPinNames : array< name >;
  34.  
  35. var currentTag : name;
  36.  
  37. event OnConfigUI()
  38. {
  39. var initData : W3MapInitData;
  40. var manager : CCommonMapManager;
  41. var waypointPinLimit, otherPinLimit : int;
  42. // ---=== VladimirHUD ===--- Lim3zer0 eNoodles
  43. var width, height : int;
  44.  
  45. m_flashModule = GetMenuFlash();
  46.  
  47. m_fxUpdateMenuBackgroundImage = m_flashModule.GetMemberFlashFunction( "updateMenuBackgroundImage" );
  48. m_fxEnableCategoryPanel = m_flashModule.GetMemberFlashFunction( "enableCategoryPanel" );
  49. m_fxSetWideScreen = m_flashModule.GetMemberFlashFunction( "setWideScreen" );
  50.  
  51. theGame.GetCurrentViewportResolution( width, height );
  52. m_fxSetWideScreen.InvokeSelfOneArg( FlashArgBool( (float)width/(float)height >= 2.33 ) );
  53. // ---=== VladimirHUD ===---
  54.  
  55. manager = theGame.GetCommonMapManager();
  56. if ( manager )
  57. {
  58. manager.GetUserPinNames( m_userPinNames );
  59.  
  60. waypointPinLimit = 5;
  61. otherPinLimit = 10;
  62. manager.GetUserMapPinLimits( waypointPinLimit, otherPinLimit );
  63. }
  64.  
  65. m_menuState = 'GlobalMap';
  66.  
  67.  
  68.  
  69. initData = (W3MapInitData)GetMenuInitData();
  70. if ( initData )
  71. {
  72. if(ShouldProcessTutorial('TutorialFastTravelHighlight'))
  73. {
  74.  
  75. if(initData.GetTriggeredExitEntity() || initData.GetUsedFastTravelEntity() || thePlayer.IsOnBoat())
  76. {
  77. GameplayFactsAdd("tutorial_fast_travel_open", 1, 1);
  78. }
  79. }
  80. }
  81.  
  82. super.OnConfigUI();
  83.  
  84. // ---=== VladimirHUD ===--- eNoodles
  85. //m_flashModule = GetMenuFlash();
  86.  
  87. m_fxRemoveUserMapPin = m_flashModule.GetMemberFlashFunction( "RemoveUserMapPin" );
  88. m_fxSetMapZooms = m_flashModule.GetMemberFlashFunction( "SetMapZooms" );
  89. m_fxSetMapVisibilityBoundaries = m_flashModule.GetMemberFlashFunction( "SetMapVisibilityBoundaries" );
  90. m_fxSetMapScrollingBoundaries = m_flashModule.GetMemberFlashFunction( "SetMapScrollingBoundaries" );
  91. m_fxSetMapSettings = m_flashModule.GetMemberFlashFunction( "SetMapSettings" );
  92. m_fxReinitializeMap = m_flashModule.GetMemberFlashFunction( "ReinitializeMap" );
  93. m_fxEnableDebugMode = m_flashModule.GetMemberFlashFunction( "EnableDebugMode" );
  94. m_fxEnableUnlimitedZoom = m_flashModule.GetMemberFlashFunction( "EnableUnlimitedZoom" );
  95. m_fxEnableManualLod = m_flashModule.GetMemberFlashFunction( "EnableManualLod" );
  96. m_fxShowBorders = m_flashModule.GetMemberFlashFunction( "ShowBorders" );
  97. m_fxSetDefaultPosition = m_flashModule.GetMemberFlashFunction( "setDefaultMapPostion" );
  98. m_fxShowToussaint = m_flashModule.GetMemberFlashFunction( "ShowToussaint" );
  99. m_fxSetHighlightedMapPin = m_flashModule.GetMemberFlashFunction( "SetHighlightedMapPin" );
  100.  
  101.  
  102. Initialize();
  103.  
  104. UpdateActiveAreas();
  105. SelectCurrentModule();
  106.  
  107. UpdateCurrentQuestData( false );
  108.  
  109.  
  110. if (!((W3MenuInitData)GetMenuInitData()))
  111. {
  112. SetMenuState('GlobalMap');
  113. }
  114.  
  115.  
  116. m_fxShowToussaint.InvokeSelfOneArg( FlashArgBool( theGame.GetDLCManager().IsEP2Available() ) );
  117. UpdatePlayerLevel();
  118. }
  119.  
  120. // ---=== VladimirHUD ===--- Lim3zer0 PaulScottt eNoodles
  121. event OnShowAnimComplete()
  122. {
  123. var width, height : int;
  124.  
  125. theGame.GetCurrentViewportResolution( width, height );
  126.  
  127. if ( (float)width/(float)height >= 2.33 )
  128. m_fxUpdateMenuBackgroundImage.InvokeSelfTwoArgs( FlashArgString( "img://icons/menubackground/21by9mappanel6.png" ), FlashArgInt(1) );
  129. else
  130. m_fxUpdateMenuBackgroundImage.InvokeSelfTwoArgs( FlashArgString( "img://icons/menubackground/mappanel6.png" ), FlashArgInt(1) );
  131. }
  132.  
  133. event OnLegendUsed( show : bool )
  134. {
  135. m_fxEnableCategoryPanel.InvokeSelfOneArg( FlashArgBool( show ) );
  136. }
  137. // ---=== VladimirHUD ===---
  138.  
  139. protected function GetSavedDataMenuName() : name
  140. {
  141. return m_menuState;
  142. }
  143.  
  144. function Initialize()
  145. {
  146. var manager: CCommonMapManager;
  147. var worldPath : String;
  148. var currentJournalArea : int;
  149. var currentJournalAreaName : string;
  150.  
  151. manager = theGame.GetCommonMapManager();
  152. worldPath = theGame.GetWorld().GetDepotPath();
  153. m_currentArea = manager.GetAreaFromWorldPath( worldPath );
  154. currentJournalArea = manager.GetCurrentJournalArea();
  155. currentJournalAreaName = AreaTypeToName( currentJournalArea );
  156.  
  157. GetMenuFlashValueStorage().SetFlashString( "worldmap.global.universe.area", currentJournalAreaName );
  158.  
  159. UpdateQuestAreas();
  160.  
  161. SwitchToHubMap( currentJournalArea, true );
  162. }
  163.  
  164. private function UpdatePlayerLevel()
  165. {
  166. var playerLevel : int;
  167. playerLevel = thePlayer.GetLevel();
  168.  
  169. m_flashValueStorage.SetFlashInt( "worldmap.global.universe.playerLevel", playerLevel );
  170. }
  171. private function UpdateQuestAreas()
  172. {
  173. var manager: CWitcherJournalManager = theGame.GetJournalManager();
  174. var areasWithQuests : array< int >;
  175.  
  176. var i : int;
  177. var flashObject : CScriptedFlashObject;
  178. var flashArray : CScriptedFlashArray;
  179.  
  180. areasWithQuests = manager.GetJournalAreasWithQuests();
  181.  
  182. flashArray = m_flashValueStorage.CreateTempFlashArray();
  183. for ( i = 0; i < areasWithQuests.Size(); i += 1 )
  184. {
  185.  
  186. flashObject = m_flashValueStorage.CreateTempFlashObject();
  187. flashObject.SetMemberFlashString( "area", AreaTypeToName( areasWithQuests[ i ] ) );
  188. flashArray.PushBackFlashObject( flashObject );
  189. }
  190. m_flashValueStorage.SetFlashArray( "worldmap.global.universe.questareas", flashArray );
  191. }
  192.  
  193. public function SetMenuState(newState : name) : void
  194. {
  195. SaveStateData();
  196. super.SetMenuState(newState);
  197. LogChannel('MAP_STATE',"state "+newState);
  198. GetSavedData();
  199. currentTag = UISavedData.selectedTag;
  200. SelectCurrentModule();
  201. UpdateInputFeedback();
  202. }
  203.  
  204.  
  205. private function UpdateInputFeedback():void
  206. {
  207. m_defaultInputBindings.Clear();
  208. super.SetButtons();
  209. }
  210.  
  211. protected function SetMapTitle(mapTitle:string):void
  212. {
  213. GetMenuFlashValueStorage().SetFlashString( "map.name.set", mapTitle );
  214. }
  215.  
  216. protected function SetCurrentAreaId(areaId:EAreaName, onStartup : bool):void
  217. {
  218. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  219.  
  220. GetMenuFlashValueStorage().SetFlashInt( "map.current.area.id", areaId );
  221. if ( onStartup )
  222. {
  223. GetMenuFlashValueStorage().SetFlashString( "map.current.area.name", manager.GetMapName( areaId ) );
  224. }
  225. }
  226.  
  227. event OnDebugEvent( id : int )
  228. {
  229. LogChannel( 'MapTimer', "Flash " + id );
  230. }
  231.  
  232. function UpdateData( optional ignoreSelectionChange : bool )
  233. {
  234. var l_flashArray : CScriptedFlashArray;
  235.  
  236. LogChannel( 'MapTimer', "UpdateData START" );
  237.  
  238. UpdateDisabledMapPins();
  239.  
  240. LogChannel( 'MapTimer', "UpdateData MIDDLE1" );
  241.  
  242. l_flashArray = GetMenuFlashValueStorage().CreateTempFlashArray();
  243. UpdateEntityPins( l_flashArray );
  244. if ( IsCurrentAreaShown() )
  245. {
  246. UpdatePlayerPin( l_flashArray );
  247. }
  248.  
  249. UpdateUserMapPins( l_flashArray, -1 );
  250.  
  251. LogChannel( 'MapTimer', "UpdateData MIDDLE2" );
  252.  
  253. if (!ignoreSelectionChange)
  254. {
  255. GetMenuFlashValueStorage().SetFlashArray( "worldmap.global.pins.static", l_flashArray );
  256. }
  257. else
  258. {
  259. GetMenuFlashValueStorage().SetFlashArray( "worldmap.global.pins.static.update", l_flashArray );
  260. }
  261.  
  262. LogChannel( 'MapTimer', "UpdateData END" );
  263. }
  264.  
  265. event OnTickEvent( delta : int )
  266. {
  267. LogChannel( 'VHUD', "OnTickEvent: " + delta );
  268. }
  269.  
  270. private function UpdateDisabledMapPins()
  271. {
  272. var l_flashArray : CScriptedFlashArray;
  273. var l_flashObject : CScriptedFlashObject;
  274. var commonMapManager : CCommonMapManager = theGame.GetCommonMapManager();
  275. var i : int;
  276. var disabledPins : array< string >;
  277.  
  278. disabledPins = commonMapManager.GetDisabledMapPins();
  279.  
  280. l_flashArray = GetMenuFlashValueStorage().CreateTempFlashArray();
  281. for ( i = 0; i < disabledPins.Size(); i += 1)
  282. {
  283. l_flashObject = GetMenuFlashValueStorage().CreateTempFlashObject();
  284. l_flashObject.SetMemberFlashString( "pinType", disabledPins[ i ] );
  285. l_flashArray.PushBackFlashObject(l_flashObject);
  286. }
  287. GetMenuFlashValueStorage().SetFlashArray( "worldmap.global.pins.disabled", l_flashArray );
  288. }
  289.  
  290. public function UpdateCurrentQuestData( onHighlight : bool ) : void // -= WMK:modAQOOM - VladimirHUD =-
  291. {
  292. var flashQuest : CScriptedFlashObject;
  293. var flashObjective : CScriptedFlashObject;
  294. var flashArray : CScriptedFlashArray;
  295.  
  296. var currentQuest : CJournalQuest;
  297. var highlightedObjective : CJournalQuestObjective;
  298. var objectives : array< SJournalQuestObjectiveData >;
  299. var i : int;
  300.  
  301. currentQuest = theGame.GetJournalManager().GetTrackedQuest();
  302. if ( currentQuest )
  303. {
  304. flashQuest = m_flashValueStorage.CreateTempFlashObject();
  305. flashQuest.SetMemberFlashString( "questName", GetLocStringById( currentQuest.GetTitleStringId() ) );
  306. flashQuest.SetMemberFlashInt( "questType", (int)currentQuest.GetType() );
  307. flashQuest.SetMemberFlashInt( "contentType", (int)currentQuest.GetContentType() );
  308. flashQuest.SetMemberFlashBool( "onHighlight", onHighlight );
  309. m_flashValueStorage.SetFlashObject( "map.quest.name", flashQuest );
  310. }
  311.  
  312. theGame.GetJournalManager().GetTrackedQuestObjectivesData( objectives );
  313. highlightedObjective = theGame.GetJournalManager().GetHighlightedObjective();
  314.  
  315. flashArray = GetMenuFlashValueStorage().CreateTempFlashArray();
  316. for ( i = 0; i < objectives.Size(); i += 1 )
  317. {
  318. if ( objectives[ i ].status == JS_Active )
  319. {
  320. if ( objectives[ i ].objectiveEntry == highlightedObjective )
  321. {
  322. flashObjective = GetMenuFlashValueStorage().CreateTempFlashObject();
  323. flashObjective.SetMemberFlashString( "objectiveName", GetLocStringById( objectives[ i ].objectiveEntry.GetTitleStringId() ) + GetQuestObjectiveCounterText( objectives[ i ].objectiveEntry ) );
  324. flashObjective.SetMemberFlashInt( "objectiveScriptName", NameToFlashUInt( objectives[ i ].objectiveEntry.GetUniqueScriptTag() ) );
  325. flashObjective.SetMemberFlashBool( "highlighted", true );
  326. flashArray.PushBackFlashObject( flashObjective );
  327. }
  328. }
  329. }
  330. for ( i = 0; i < objectives.Size(); i += 1 )
  331. {
  332. if ( objectives[ i ].status == JS_Active )
  333. {
  334. if ( objectives[ i ].objectiveEntry != highlightedObjective )
  335. {
  336. flashObjective = GetMenuFlashValueStorage().CreateTempFlashObject();
  337. flashObjective.SetMemberFlashString( "objectiveName", GetLocStringById( objectives[ i ].objectiveEntry.GetTitleStringId() ) + GetQuestObjectiveCounterText( objectives[ i ].objectiveEntry ) );
  338. flashObjective.SetMemberFlashInt( "objectiveScriptName", NameToFlashUInt( objectives[ i ].objectiveEntry.GetUniqueScriptTag() ) );
  339. flashObjective.SetMemberFlashBool( "highlighted", false );
  340. flashArray.PushBackFlashObject( flashObjective );
  341. }
  342. }
  343. }
  344.  
  345.  
  346.  
  347.  
  348.  
  349. m_flashValueStorage.SetFlashArray( "map.objectives", flashArray );
  350.  
  351.  
  352. }
  353.  
  354. private function UpdateDataWithSingleUserMapPin( indexToUpdate : int )
  355. {
  356. var l_flashArray : CScriptedFlashArray;
  357.  
  358. if ( indexToUpdate < 0 )
  359. {
  360. return;
  361. }
  362.  
  363. l_flashArray = GetMenuFlashValueStorage().CreateTempFlashArray();
  364.  
  365. UpdateUserMapPins( l_flashArray, indexToUpdate );
  366.  
  367. GetMenuFlashValueStorage().SetFlashArray( "worldmap.global.pins.dynamic", l_flashArray );
  368. }
  369.  
  370. private function UpdatePlayerPin( out flashArray : CScriptedFlashArray ) : void
  371. {
  372. var l_flashObject : CScriptedFlashObject;
  373. var position : Vector;
  374. var playerRotation : EulerAngles;
  375. var playerAngle : float;
  376. var cameraAngle : float;
  377. var commonMapManager : CCommonMapManager = theGame.GetCommonMapManager();
  378.  
  379. position = thePlayer.GetWorldPosition();
  380. cameraAngle = theCamera.GetCameraHeading();
  381. playerRotation = thePlayer.GetWorldRotation();
  382. playerAngle = -playerRotation.Yaw;
  383.  
  384. if ( playerAngle < 0 )
  385. {
  386. playerAngle += 360.0;
  387. }
  388.  
  389. l_flashObject = GetMenuFlashValueStorage().CreateTempFlashObject("red.game.witcher3.data.StaticMapPinData");
  390.  
  391. l_flashObject.SetMemberFlashUInt( "id", NameToFlashUInt( 'Player' ) );
  392. l_flashObject.SetMemberFlashInt( "areaId", m_shownArea );
  393. l_flashObject.SetMemberFlashInt( "journalAreaId", commonMapManager.GetJournalAreaByPosition( m_shownArea, position ) );
  394. l_flashObject.SetMemberFlashNumber( "posX", position.X );
  395. l_flashObject.SetMemberFlashNumber( "posY", position.Y );
  396. if ( (W3ReplacerCiri)thePlayer )
  397. {
  398. l_flashObject.SetMemberFlashString( "description", GetLocStringByKeyExt( "map_description_player_ciri"));
  399. l_flashObject.SetMemberFlashString( "label", GetLocStringByKeyExt( "map_location_player_ciri"));
  400. }
  401. else
  402. {
  403. l_flashObject.SetMemberFlashString( "description", GetLocStringByKeyExt( "map_description_player"));
  404. l_flashObject.SetMemberFlashString( "label", GetLocStringByKeyExt( "map_location_player"));
  405. }
  406. l_flashObject.SetMemberFlashString( "type", NameToString( 'Player' ) );
  407. l_flashObject.SetMemberFlashString( "filteredType", NameToString( 'Player' ) );
  408. l_flashObject.SetMemberFlashNumber( "radius", 0 );
  409. l_flashObject.SetMemberFlashBool( "isFastTravel", false );
  410. l_flashObject.SetMemberFlashBool( "isQuest", false );
  411. l_flashObject.SetMemberFlashBool( "isPlayer", true );
  412. l_flashObject.SetMemberFlashBool( "isUserPin",false );
  413. l_flashObject.SetMemberFlashNumber( "distance", 0 );
  414. l_flashObject.SetMemberFlashNumber( "rotation", playerAngle );
  415.  
  416. flashArray.PushBackFlashObject(l_flashObject);
  417. }
  418.  
  419. private function UpdateUserMapPins( out flashArray : CScriptedFlashArray, indexToUpdate : int ) : void
  420. {
  421. var manager : CCommonMapManager;
  422. var i, pinCount : int;
  423.  
  424. if ( indexToUpdate > -1 )
  425. {
  426. UpdateUserMapPin( indexToUpdate, flashArray );
  427. }
  428. else
  429. {
  430. manager = theGame.GetCommonMapManager();
  431. pinCount = manager.GetUserMapPinCount();
  432. for ( i = 0; i < pinCount; i += 1 )
  433. {
  434. UpdateUserMapPin( i, flashArray );
  435. }
  436. }
  437. }
  438.  
  439. private function UpdateUserMapPin( index : int, out flashArray : CScriptedFlashArray ) : void
  440. {
  441. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  442. var l_flashObject : CScriptedFlashObject;
  443. var id, area, type : int;
  444. var position : Vector;
  445. var playerPosition : Vector = thePlayer.GetWorldPosition();
  446. var distanceFromPlayer : float = 0;
  447.  
  448. if ( !manager.GetUserMapPinByIndex( index, id, area, position.X, position.Y, type ) )
  449. {
  450. return;
  451. }
  452.  
  453. if ( area == AN_Prologue_Village_Winter )
  454. {
  455. area = AN_Prologue_Village;
  456. }
  457. if ( area != (int)m_shownArea )
  458. {
  459. return;
  460. }
  461.  
  462. if ( IsCurrentAreaShown() )
  463. {
  464. distanceFromPlayer = VecDistanceSquared2D( playerPosition, position );
  465. }
  466.  
  467. l_flashObject = GetMenuFlashValueStorage().CreateTempFlashObject("red.game.witcher3.data.StaticMapPinData");
  468.  
  469. position.Z = 0;
  470.  
  471. l_flashObject.SetMemberFlashUInt( "id", id );
  472. l_flashObject.SetMemberFlashNumber( "posX", position.X );
  473. l_flashObject.SetMemberFlashNumber( "posY", position.Y );
  474. l_flashObject.SetMemberFlashString( "description", GetLocStringByKeyExt( "map_description_user"));
  475. l_flashObject.SetMemberFlashString( "label", GetLocStringByKeyExt( "map_location_user"));
  476. l_flashObject.SetMemberFlashString( "type", NameToString( GetUserMapPinTypeByType( type ) ) );
  477. l_flashObject.SetMemberFlashString( "filteredType", NameToString( GetUserMapPinTypeByType( type ) ) );
  478. l_flashObject.SetMemberFlashNumber( "radius", 0 );
  479. l_flashObject.SetMemberFlashBool( "isFastTravel", false );
  480. l_flashObject.SetMemberFlashBool( "isQuest", false );
  481. l_flashObject.SetMemberFlashBool( "isPlayer", false );
  482. l_flashObject.SetMemberFlashBool( "isUserPin", true );
  483. l_flashObject.SetMemberFlashNumber( "distance", distanceFromPlayer );
  484. l_flashObject.SetMemberFlashNumber( "rotation", 0 );
  485.  
  486. flashArray.PushBackFlashObject(l_flashObject);
  487. }
  488.  
  489. function GetUserMapPinTypeByType( type : int ) : name
  490. {
  491. if ( type < 0 || type >= m_userPinNames.Size() )
  492. {
  493. return '';
  494. }
  495. return m_userPinNames[ type ];
  496. }
  497.  
  498. function ReinitializeMap()
  499. {
  500. m_fxReinitializeMap.InvokeSelf();
  501. }
  502.  
  503. function UpdateActiveAreas() : void
  504. {
  505. var pinsList : array< SAvailableFastTravelMapPin >;
  506. var curPin : SAvailableFastTravelMapPin;
  507. var availableAreas : array< bool >;
  508. var i : int;
  509.  
  510. for ( i = 0; i < EnumGetMax( 'EAreaName' ) + 1; i += 1 )
  511. {
  512. availableAreas.PushBack(false);
  513. }
  514.  
  515. pinsList = theGame.GetCommonMapManager().GetFastTravelPoints(true, true);
  516.  
  517. for ( i = 0; i < pinsList.Size(); i += 1 )
  518. {
  519. curPin = pinsList[i];
  520.  
  521. availableAreas[curPin.area] = true;
  522. }
  523.  
  524. m_flashValueStorage.SetFlashBool("universearea.kaermorhen.active", availableAreas[AN_Kaer_Morhen]);
  525. m_flashValueStorage.SetFlashBool("universearea.novigrad.active", availableAreas[AN_NMLandNovigrad]);
  526. m_flashValueStorage.SetFlashBool("universearea.nomansland.active", availableAreas[AN_NMLandNovigrad]);
  527. m_flashValueStorage.SetFlashBool("universearea.wyzima.active", availableAreas[AN_Wyzima]);
  528. m_flashValueStorage.SetFlashBool("universearea.prologvillage.active", availableAreas[AN_Prologue_Village]);
  529. m_flashValueStorage.SetFlashBool("universearea.skellige.active", availableAreas[AN_Skellige_ArdSkellig]);
  530. m_flashValueStorage.SetFlashBool("universearea.toussaint.active", availableAreas[AN_Dlc_Bob]);
  531. }
  532.  
  533. function UpdateEntityPins( out flashArray : CScriptedFlashArray ) : void
  534. {
  535. var worldPath : string;
  536. var mapPinInstances : array< SCommonMapPinInstance >;
  537. var mapPinInstancesCount : int;
  538. var pin : SCommonMapPinInstance;
  539. var i : int;
  540. var l_flashObject : CScriptedFlashObject;
  541. var canShowKnownEntities : bool;
  542. var canShowDisabledEntities : bool;
  543. var commonMapManager : CCommonMapManager = theGame.GetCommonMapManager();
  544. var playerPosition : Vector = thePlayer.GetWorldPosition();
  545. var distanceFromPlayer : float = 0;
  546.  
  547. worldPath = commonMapManager.GetWorldPathFromAreaType( m_shownArea );
  548.  
  549. mapPinInstances = commonMapManager.GetMapPinInstances( worldPath );
  550. mapPinInstancesCount = mapPinInstances.Size();
  551.  
  552. canShowKnownEntities = commonMapManager.CanShowKnownEntities();
  553. canShowDisabledEntities = commonMapManager.CanShowDisabledEntities();
  554.  
  555. for ( i = 0; i < mapPinInstancesCount; i += 1 )
  556. {
  557. pin = mapPinInstances[ i ];
  558.  
  559. if ( !pin.isDiscovered && !pin.isKnown )
  560. {
  561. continue;
  562. }
  563.  
  564. if ( pin.type == 'NPC' ||
  565. pin.type == 'Enemy' ||
  566. pin.type == 'EnemyDead' ||
  567. pin.type == 'GenericFocus' ||
  568. pin.type == 'Rift' ||
  569. pin.type == 'PointOfInterestMappin' ||
  570. pin.type == 'Teleport' ||
  571. pin.type == 'HorseRaceTarget' ||
  572. pin.type == 'HorseRaceDummy' )
  573. {
  574. continue;
  575. }
  576. if ( commonMapManager.IsUserPinType( pin.type ) )
  577. {
  578.  
  579. continue;
  580. }
  581.  
  582. if ( thePlayer.IsSailing() )
  583. {
  584. if ( pin.type == 'RoadSign' )
  585. {
  586. continue;
  587. }
  588. }
  589. else
  590. {
  591. if ( pin.type == 'Harbor' )
  592. {
  593. continue;
  594. }
  595. }
  596.  
  597. if ( pin.visibleType == 'NotDiscoveredPOI' && !canShowKnownEntities )
  598. {
  599. continue;
  600. }
  601. if ( pin.visibleType != 'PlaceOfPowerDisabled' && pin.isDisabled && !canShowDisabledEntities )
  602. {
  603. continue;
  604. }
  605.  
  606. if ( m_shownArea == (EAreaName)AN_Dlc_Bob )
  607. {
  608.  
  609. if ( pin.position.X > 1200 &&
  610. pin.position.Y > 800 &&
  611. pin.type != 'User1' &&
  612. pin.type != 'User2' &&
  613. pin.type != 'User3' &&
  614. pin.type != 'User4' )
  615. {
  616. continue;
  617. }
  618.  
  619. if ( pin.tag == 'mq7024_mutagen_dismantling_table' ||
  620. pin.tag == 'mq7024_alchemy_table' ||
  621. pin.tag == 'corvo_bianvo_bookshelf_poor' ||
  622. pin.tag == 'witcherBed' ||
  623. pin.tag == 'corvo_bianco_stables' ||
  624. pin.tag == 'mq7024_whetstone' ||
  625. pin.tag == 'mq7024_armor_table' )
  626. {
  627. continue;
  628. }
  629. }
  630.  
  631. if ( IsCurrentAreaShown() )
  632. {
  633. distanceFromPlayer = VecDistanceSquared2D( playerPosition, pin.position );
  634. }
  635.  
  636. l_flashObject = GetMenuFlashValueStorage().CreateTempFlashObject( "red.game.witcher3.data.StaticMapPinData" );
  637. l_flashObject.SetMemberFlashUInt( "id", NameToFlashUInt( pin.tag ) );
  638. l_flashObject.SetMemberFlashUInt( "areaId", m_shownArea);
  639. l_flashObject.SetMemberFlashInt( "journalAreaId", commonMapManager.GetJournalAreaByPosition( m_shownArea, pin.position ) );
  640. l_flashObject.SetMemberFlashNumber( "posX", pin.position.X );
  641. l_flashObject.SetMemberFlashNumber( "posY", pin.position.Y );
  642.  
  643. l_flashObject.SetMemberFlashString( "type", NameToString( pin.visibleType ) + GetPinTypePostfix( pin ) );
  644. l_flashObject.SetMemberFlashString( "filteredType", NameToString( pin.visibleType ) );
  645. l_flashObject.SetMemberFlashNumber( "radius", pin.visibleRadius );
  646. l_flashObject.SetMemberFlashBool( "isFastTravel", pin.type == 'RoadSign' || pin.type == 'Harbor' );
  647. // ---=== VladimirHUD ===--- eNoodles
  648. l_flashObject.SetMemberFlashBool( "showFTLabel", theGame.GetInGameConfigWrapper().GetVarValue('vlad', 'ftlabel') );
  649. // ---=== VladimirHUD ===---
  650. l_flashObject.SetMemberFlashBool( "isQuest", commonMapManager.IsQuestPinType( pin.type ) );
  651. l_flashObject.SetMemberFlashBool( "isPlayer", false );
  652. l_flashObject.SetMemberFlashBool( "isUserPin",false );
  653. l_flashObject.SetMemberFlashNumber( "distance", distanceFromPlayer );
  654. AddPinTypeData(l_flashObject, pin);
  655. flashArray.PushBackFlashObject(l_flashObject);
  656. }
  657. // -= WMK:modAQOOM =-
  658. if (WmkGetMapMenuInstance()) {
  659. WmkGetMapMenuInstance().UpdateEntityPins(this, m_shownArea, mapPinInstances, flashArray);
  660. }
  661. // -= WMK:modAQOOM =-
  662. }
  663.  
  664. // -= WMK:modAQOOM =-
  665. public var ALL_QUEST_OBJECTIVES_ON_MAP___ANOTHER_MOD_CHANGES_MAPMENU_WS_FILE___USE_SCRIPT_MERGER_TO_DETECT_AND_FIX_THE_CONFLICT : int;
  666.  
  667. event OnWmkMapPinUsed(id : name, wmkTag : name, wmkData : int, areaId : int, isFastTravel : bool)
  668. {
  669. if (!isFastTravel) {
  670. if (WmkGetMapMenuInstance()) {
  671. return WmkGetMapMenuInstance().OnMapPinUsed(this, id, wmkTag, wmkData, areaId);
  672. } else {
  673. return false;
  674. }
  675. } else {
  676. return OnStaticMapPinUsed(id, areaId);
  677. }
  678. }
  679. // -= WMK:modAQOOM =-
  680. }
  681.  
  682. // -= WMK:modAQOOM =-
  683. public var ALL_QUEST_OBJECTIVES_ON_MAP___ANOTHER_MOD_CHANGES_MAPMENU_WS_FILE___USE_SCRIPT_MERGER_TO_DETECT_AND_FIX_THE_CONFLICT : int;
  684.  
  685. event OnWmkMapPinUsed(id : name, wmkTag : name, wmkData : int, areaId : int, isFastTravel : bool)
  686. {
  687. if (!isFastTravel) {
  688. if (WmkGetMapMenuInstance()) {
  689. return WmkGetMapMenuInstance().OnMapPinUsed(this, id, wmkTag, wmkData, areaId);
  690. } else {
  691. return false;
  692. }
  693. } else {
  694. return OnStaticMapPinUsed(id, areaId);
  695. }
  696. }
  697. // -= WMK:modAQOOM =-
  698.  
  699. private function GetPinTypePostfix( pin : SCommonMapPinInstance ) : string
  700. {
  701. if ( pin.alternateVersion > 0 && !pin.isDisabled )
  702. {
  703. return "_" + pin.alternateVersion;
  704. }
  705. return "";
  706. }
  707.  
  708. private function AddPinTypeData(out dataObject : CScriptedFlashObject, targetPin: SCommonMapPinInstance) : void
  709. {
  710. var definitionManager : CDefinitionsManagerAccessor = theGame.GetDefinitionsManager();
  711. var journalManager:CWitcherJournalManager;
  712. var questMappins:array<CJournalBase>;
  713. var questObjectives:array<CJournalBase>;
  714. var curQuestMappin:CJournalQuestMapPin;
  715. var curObjective:CJournalQuestObjective;
  716. var curQuest:CJournalQuest;
  717.  
  718. var isTracked:bool;
  719. var label:string;
  720. var description:string;
  721.  
  722. label = "";
  723. description = "";
  724. switch (targetPin.visibleType)
  725. {
  726.  
  727.  
  728.  
  729.  
  730. case 'StoryQuest':
  731. case 'ChapterQuest':
  732. case 'SideQuest':
  733. case 'MonsterQuest':
  734. case 'TreasureQuest':
  735.  
  736. case 'QuestReturn':
  737. case 'HorseRace':
  738. case 'BoatRace':
  739. case 'QuestBelgard':
  740. case 'QuestCoronata':
  741. case 'QuestVermentino':
  742. journalManager = theGame.GetJournalManager();
  743. curObjective = (CJournalQuestObjective)journalManager.GetEntryByGuid( targetPin.guid );
  744. if ( curObjective )
  745. {
  746. curQuest = curObjective.GetParentQuest();
  747.  
  748. label = GetLocStringById( curQuest.GetTitleStringId() );
  749. description = GetLocStringById( curObjective.GetTitleStringId() ) + GetQuestObjectiveCounterText( curObjective );
  750. isTracked = journalManager.GetTrackedQuest().guid == curQuest.guid;
  751.  
  752. dataObject.SetMemberFlashBool( "tracked", isTracked );
  753. dataObject.SetMemberFlashBool( "highlighted", targetPin.isHighlighted );
  754.  
  755. }
  756. break;
  757.  
  758. case 'Horse':
  759. case 'Rift':
  760. case 'Teleport':
  761. case 'QuestAvailable':
  762. case 'QuestAvailableHoS':
  763. case 'QuestAvailableBaW':
  764. case 'MagicLamp':
  765. case 'Whetstone':
  766. case 'Entrance':
  767.  
  768. case 'NotDiscoveredPOI':
  769. label = GetLocStringByKeyExt( StrLower("map_location_" + targetPin.visibleType) );
  770. description = GetLocStringByKeyExt( StrLower("map_description_" + targetPin.visibleType) );
  771. break;
  772.  
  773.  
  774. case 'MonsterNest':
  775. case 'MonsterNestDisabled':
  776. case 'InfestedVineyard':
  777. case 'InfestedVineyardDisabled':
  778. case 'PlaceOfPower':
  779. case 'PlaceOfPowerDisabled':
  780. case 'TreasureHuntMappin':
  781. case 'TreasureHuntMappinDisabled':
  782. case 'SpoilsOfWar':
  783. case 'SpoilsOfWarDisabled':
  784. case 'BanditCamp':
  785. case 'BanditCampDisabled':
  786. case 'BanditCampfire':
  787. case 'BanditCampfireDisabled':
  788. case 'BossAndTreasure':
  789. case 'BossAndTreasureDisabled':
  790. case 'Contraband':
  791. case 'ContrabandDisabled':
  792. case 'ContrabandShip':
  793. case 'ContrabandShipDisabled':
  794. case 'RescuingTown':
  795. case 'RescuingTownDisabled':
  796. case 'DungeonCrawl':
  797. case 'DungeonCrawlDisabled':
  798. case 'Hideout':
  799. case 'HideoutDisabled':
  800. case 'Plegmund':
  801. case 'PlegmundDisabled':
  802. case 'KnightErrant':
  803. case 'KnightErrantDisabled':
  804. case 'WineContract':
  805. case 'WineContractDisabled':
  806. case 'SignalingStake':
  807. case 'SignalingStakeDisabled':
  808.  
  809.  
  810.  
  811. case 'AlchemyTable':
  812. case 'MutagenDismantle':
  813. case 'Stables':
  814. case 'Bookshelf':
  815. case 'Bed':
  816. label = GetLocStringByKeyExt( StrLower("map_location_" + targetPin.type) );
  817. description = GetLocStringByKeyExt( StrLower("map_description_" + targetPin.type) );
  818. break;
  819.  
  820.  
  821.  
  822. case 'PlayerStash':
  823. case 'PlayerStashDiscoverable':
  824. label = GetLocStringByKeyExt( "map_location_playerstash" );
  825. description = GetLocStringByKeyExt( "map_description_playerstash" );
  826. break;
  827.  
  828.  
  829.  
  830. case 'Shopkeeper':
  831. case 'Blacksmith':
  832. case 'Armorer':
  833.  
  834. case 'Hairdresser':
  835. label = GetLocStringByKeyExt( StrLower("map_location_" + targetPin.type) );
  836. description = GetLocStringByKeyExt( StrLower("map_description_" + targetPin.type) );
  837. break;
  838. case 'Alchemic':
  839. label = GetLocStringByKeyExt( StrLower("map_location_alchemic") );
  840. description = GetLocStringByKeyExt( StrLower("map_description_alchemic") );
  841. break;
  842. case 'Herbalist':
  843. label = GetLocStringByKeyExt( StrLower("herbalist") );
  844. description = GetLocStringByKeyExt( StrLower("map_description_alchemic") );
  845. break;
  846. case 'Innkeeper':
  847. label = GetLocStringById( 175619 );
  848. description = GetLocStringByKeyExt( StrLower("map_description_shopkeeper") );
  849. break;
  850. case 'Enchanter':
  851. label = GetLocStringByKeyExt( "panel_map_enchanter_pin_name" );
  852. description = GetLocStringByKeyExt( "panel_map_enchanter_pin_description" );
  853. break;
  854.  
  855.  
  856.  
  857. case 'Torch':
  858. label = GetLocStringByKeyExt( "map_location_torch" );
  859. description = GetLocStringByKeyExt( "map_description_torch" );
  860. break;
  861.  
  862.  
  863.  
  864. case 'Prostitute':
  865. label = GetLocStringByKeyExt( "novigrad_courtisan" );
  866. description = GetLocStringByKeyExt( "map_description_prostitute" );
  867. break;
  868.  
  869.  
  870.  
  871. case 'ArmorRepairTable':
  872. label = GetLocStringByKeyExt( "map_location_armor_repair_table" );
  873. description = GetLocStringByKeyExt( "map_description_armor_repair_table" );
  874. break;
  875.  
  876.  
  877.  
  878. case 'Herb':
  879. label = GetLocStringByKeyExt( definitionManager.GetItemLocalisationKeyName( targetPin.tag ) );
  880. description = GetLocStringByKeyExt( definitionManager.GetItemLocalisationKeyDesc( targetPin.tag ) );
  881. break;
  882.  
  883.  
  884.  
  885. case 'RoadSign':
  886. case 'Harbor':
  887. label = GetLocStringByKeyExt( StrLower("map_location_" + targetPin.tag ) );
  888. description = GetLocStringByKeyExt( StrLower("map_description_" + targetPin.tag ) );
  889. break;
  890.  
  891.  
  892.  
  893. case 'NoticeBoard':
  894. case 'NoticeBoardFull':
  895. label = GetLocStringByKeyExt( StrLower("map_location_noticeboard" ) );
  896. description = GetLocStringByKeyExt( StrLower("map_description_noticeboard" ) );
  897. break;
  898.  
  899.  
  900.  
  901. case 'Boat':
  902. label = GetLocStringByKeyExt( StrLower("panel_hud_boat" ) );
  903. description = GetLocStringByKeyExt("map_description_player_boat");
  904. break;
  905.  
  906.  
  907.  
  908. default:
  909. if ( targetPin.customNameId != 0 )
  910. {
  911. label = GetLocStringById( targetPin.customNameId );
  912. description = "";
  913. }
  914. else
  915. {
  916. label = GetLocStringByKeyExt( StrLower("map_location_" + targetPin.visibleType) );
  917. description = GetLocStringByKeyExt( StrLower("map_description_" + targetPin.visibleType) );
  918. }
  919. break;
  920. }
  921.  
  922. dataObject.SetMemberFlashString( "label", label );
  923. dataObject.SetMemberFlashString( "description", description );
  924. }
  925.  
  926. event OnToggleMinimap( previewMode : int )
  927. {
  928. var value : string;
  929.  
  930. value = IntToString( previewMode );
  931. theGame.GetInGameConfigWrapper().SetVarValue('Hidden', 'WorldMapPreviewMode', value );
  932. theGame.SaveUserSettings();
  933. }
  934.  
  935. event OnDisablePin( pinName : string, disable : bool )
  936. {
  937. theGame.GetCommonMapManager().DisableMapPin( pinName, disable );
  938. }
  939.  
  940. event OnPinch( value : float )
  941. {
  942.  
  943. LogChannel( 'Gui', "CR4MapMenu::OnPinch " + value );
  944. }
  945.  
  946. event OnClosingMenu()
  947. {
  948. var initData : W3MapInitData;
  949. SaveStateData();
  950. theGame.GetGuiManager().SetLastOpenedCommonMenuName( GetMenuName() );
  951.  
  952. initData = (W3MapInitData)GetMenuInitData();
  953. if ( initData )
  954. {
  955. if ( initData && initData.GetTriggeredExitEntity() )
  956. {
  957. thePlayer.OnTeleportPlayerToPlayableArea( true );
  958. }
  959. }
  960.  
  961. super.OnClosingMenu();
  962. }
  963.  
  964. event OnCloseMenu()
  965. {
  966. if( m_parentMenu )
  967. {
  968. m_parentMenu.ChildRequestCloseMenu();
  969. }
  970.  
  971. CloseMenu();
  972. }
  973.  
  974. function SaveStateData()
  975. {
  976. switch(m_menuState)
  977. {
  978. case 'Objectives':
  979. case 'FastTravel':
  980. m_guiManager.UpdateUISavedData( m_menuState, UISavedData.openedCategories, currentTag, UISavedData.selectedModule );
  981. break;
  982. case 'GlobalMap':
  983. return;
  984. }
  985. }
  986.  
  987. event OnSwitchToWorldMap()
  988. {
  989. var continentMapState : W3TutorialManagerUIHandlerStateContinentMap;
  990.  
  991. LogChannel('WORLDMAP',"OnSwitchToWorldMap" );
  992. // ---=== VladimirHUD ===--- PaulScottt (paul casually inserting his name into vanilla code)
  993. SetMapTitle(GetLocStringByKeyExt("panel_map_title_worldmap"));
  994. // ---=== VladimirHUD ===---
  995. UpdateInputFeedback();
  996.  
  997. if( ShouldProcessTutorial( 'TutorialMapBackToHub' ) )
  998. {
  999. continentMapState = ( W3TutorialManagerUIHandlerStateContinentMap ) theGame.GetTutorialSystem().uiHandler.GetCurrentState();
  1000. if( continentMapState )
  1001. {
  1002. continentMapState.OnWentToContinentMap();
  1003. }
  1004. }
  1005. }
  1006.  
  1007. event OnSwitchToHubMap( areaName : string )
  1008. {
  1009. var areaType : EAreaName;
  1010. areaType = AreaNameToType( areaName );
  1011. SwitchToHubMap(areaType, false);
  1012. }
  1013.  
  1014. function GetAreaDefaultPosition( areaId : int, out x : float, out y : float ) : void
  1015. {
  1016. switch ( areaId )
  1017. {
  1018. case AN_NMLandNovigrad:
  1019. x = -150;
  1020. y = 450;
  1021. break;
  1022. case AN_Velen:
  1023. x = -300;
  1024. y = -100;
  1025. break;
  1026. default:
  1027. x = -1;
  1028. y = -1;
  1029. }
  1030. }
  1031.  
  1032. event OnHighlightNextObjective()
  1033. {
  1034. var highlightedObjective : CJournalQuestObjective;
  1035. var objectives : array< SJournalQuestObjectiveData >;
  1036. var i, newIndex : int;
  1037. var journalManager : CWitcherJournalManager;
  1038.  
  1039. journalManager = theGame.GetJournalManager();
  1040. journalManager.GetTrackedQuestObjectivesData( objectives );
  1041. highlightedObjective = journalManager.GetHighlightedObjective();
  1042.  
  1043. for ( i = objectives.Size() - 1; i >= 0; i -= 1 )
  1044. {
  1045. if ( objectives[ i ].status != JS_Active )
  1046. {
  1047. objectives.Erase( i );
  1048. }
  1049. }
  1050. if ( objectives.Size() < 2 )
  1051. {
  1052. return false;
  1053. }
  1054. for ( i = 0; i < objectives.Size(); i += 1 )
  1055. {
  1056. if ( objectives[ i ].objectiveEntry == highlightedObjective )
  1057. {
  1058. newIndex = ( i + 1 ) % objectives.Size();
  1059. SetHighlightedObjective( objectives[ newIndex ].objectiveEntry );
  1060. return true;
  1061. }
  1062. }
  1063. }
  1064.  
  1065.  
  1066. event OnHighlightObjective( tag : name )
  1067. {
  1068. var l_objective : CJournalQuestObjective;
  1069. var journalManager : CWitcherJournalManager;
  1070.  
  1071. journalManager = theGame.GetJournalManager();
  1072. l_objective = (CJournalQuestObjective)journalManager.GetEntryByTag( tag );
  1073. if ( l_objective && journalManager.GetEntryStatus( l_objective ) == JS_Active )
  1074. {
  1075. SetHighlightedObjective( l_objective );
  1076. }
  1077. }
  1078.  
  1079. private function SetHighlightedObjective( objective : CJournalQuestObjective )
  1080. {
  1081. var highlightedMapPinTag : name;
  1082.  
  1083. LogChannel('asdf', "H BEFORE " + theGame.GetCommonMapManager().GetHighlightedMapPinTag() );
  1084. if ( theGame.GetJournalManager().SetHighlightedObjective( objective ) )
  1085. {
  1086. UpdateCurrentQuestData( true );
  1087.  
  1088. highlightedMapPinTag = theGame.GetCommonMapManager().GetHighlightedMapPinTag();
  1089.  
  1090. m_fxSetHighlightedMapPin.InvokeSelfOneArg( FlashArgUInt( NameToFlashUInt( highlightedMapPinTag ) ) );
  1091.  
  1092. }
  1093. LogChannel('asdf', "H AFTER " + theGame.GetCommonMapManager().GetHighlightedMapPinTag() );
  1094. }
  1095.  
  1096.  
  1097. event OnTrackQuest( tag : name )
  1098. {
  1099. var journalManager : CWitcherJournalManager;
  1100. var l_quest : CJournalBase;
  1101.  
  1102. journalManager = theGame.GetJournalManager();
  1103. l_quest = journalManager.GetEntryByTag(tag);
  1104. journalManager.SetTrackedQuest( l_quest );
  1105. }
  1106.  
  1107.  
  1108.  
  1109. function SwitchToHubMap( area : EAreaName, onStartup : bool )
  1110. {
  1111. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  1112. var journalArea : EAreaName;
  1113. var originArea : EAreaName;
  1114.  
  1115. originArea = area;
  1116.  
  1117. if ( area == AN_Undefined )
  1118. {
  1119.  
  1120. return;
  1121. }
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128. if ( area == AN_Velen || area == AN_NMLandNovigrad )
  1129. {
  1130.  
  1131. if ( m_currentArea == AN_NMLandNovigrad )
  1132. {
  1133.  
  1134. journalArea = manager.GetCurrentJournalArea();
  1135. }
  1136. else
  1137. {
  1138.  
  1139. journalArea = area;
  1140. }
  1141.  
  1142.  
  1143. area = AN_NMLandNovigrad;
  1144. }
  1145. else
  1146. {
  1147.  
  1148. journalArea = area;
  1149. }
  1150.  
  1151. // ---=== VladimirHUD ===--- PaulScottt (paul casually inserting his name into vanilla code, again)
  1152. SetMapTitle( GetLocStringByKeyExt( manager.GetLocalisationNameFromAreaType( journalArea ) ) );
  1153. // ---=== VladimirHUD ===---
  1154. SetCurrentAreaId( originArea, onStartup );
  1155. UpdateDefaultPosition(originArea);
  1156. UpdateInputFeedback();
  1157.  
  1158. if ( area == m_shownArea )
  1159. {
  1160. ReinitializeMap();
  1161. }
  1162. else
  1163. {
  1164. m_shownArea = area;
  1165. UpdateTitle();
  1166. UpdateMapSettings();
  1167. UpdateData();
  1168. }
  1169. }
  1170.  
  1171. event OnEntrySelected( tag : name )
  1172. {
  1173. LogChannel('WORLDMAP', "OnEntrySelected tag: "+tag+" area: ");
  1174. currentTag = tag;
  1175. }
  1176.  
  1177. event OnSwitchToInterior( )
  1178. {
  1179. LogChannel('WORLDMAP', "OnSwitchToInterior" );
  1180. }
  1181.  
  1182. event OnUserMapPinSet( posX : float, posY : float, type : int, fromSelectionPanel : bool )
  1183. {
  1184. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  1185. var worldPath : string;
  1186. var realShownArea : EAreaName;
  1187. var area : int;
  1188. var position : Vector;
  1189. var idToAdd, idToRemove, indexToAdd : int;
  1190. var realType : int;
  1191.  
  1192. idToAdd = 0;
  1193. idToRemove = 0;
  1194.  
  1195. if ( m_currentArea == m_shownArea )
  1196. {
  1197. worldPath = theGame.GetWorld().GetDepotPath();
  1198. realShownArea = manager.GetAreaFromWorldPath( worldPath, true );
  1199. }
  1200. else
  1201. {
  1202. realShownArea = m_shownArea;
  1203. }
  1204.  
  1205. position.X = posX;
  1206. position.Y = posY;
  1207. position.Z = 0;
  1208.  
  1209. realType = type;
  1210. if ( fromSelectionPanel )
  1211. {
  1212. realType += 1;
  1213. }
  1214. if ( !manager.ToggleUserMapPin( (int)realShownArea, position, realType, fromSelectionPanel, idToAdd, idToRemove ) )
  1215. {
  1216. showNotification( GetLocStringByKeyExt("panel_hud_message_actionnotallowed") );
  1217. }
  1218.  
  1219.  
  1220. if ( idToRemove != 0 )
  1221. {
  1222. m_fxRemoveUserMapPin.InvokeSelfOneArg( FlashArgUInt( idToRemove ) );
  1223. theSound.SoundEvent("gui_hubmap_remove_pin");
  1224. }
  1225. if ( idToAdd != 0 )
  1226. {
  1227. indexToAdd = manager.GetUserMapPinIndexById( idToAdd );
  1228. if ( indexToAdd >= 0 )
  1229. {
  1230. UpdateDataWithSingleUserMapPin( indexToAdd );
  1231. theSound.SoundEvent("gui_hubmap_mark_pin");
  1232. }
  1233. }
  1234. }
  1235.  
  1236. event OnStaticMapPinUsed( pinTag : name, areaId : int)
  1237. {
  1238. var initData : W3MapInitData;
  1239. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  1240. var fastTravelEntity : W3FastTravelEntity;
  1241. var loadingInitData : W3MenuInitData;
  1242. var contentTag : name;
  1243. var progress : float;
  1244. var rootMenu : CR4Menu;
  1245.  
  1246. manager = theGame.GetCommonMapManager();
  1247. if ( !manager )
  1248. {
  1249. return false;
  1250. }
  1251.  
  1252. if ( !manager.IsWorldAvailable( areaId ) )
  1253. {
  1254. contentTag = manager.GetWorldContentTag( areaId );
  1255. progress = theGame.ProgressToContentAvailable(contentTag);
  1256. theSound.SoundEvent("gui_global_denied");
  1257. theGame.GetGuiManager().ShowProgressDialog(0, "", "panel_map_cannot_travel_downloading_content", true, UDB_Ok, progress, UMPT_Content, contentTag);
  1258. return false;
  1259. }
  1260.  
  1261. if( !thePlayer.IsActionAllowed( EIAB_FastTravel ) )
  1262. {
  1263. showNotification( GetLocStringByKeyExt("panel_hud_message_actionnotallowed") );
  1264. OnPlaySoundEvent("gui_global_denied");
  1265. return false;
  1266. }
  1267.  
  1268. if ( m_currentArea != areaId )
  1269. {
  1270. if ( !thePlayer.IsActionAllowed( EIAB_FastTravelGlobal ) )
  1271. {
  1272. theSound.SoundEvent("gui_global_denied");
  1273. showNotification( GetLocStringByKeyExt("panel_hud_message_actionnotallowed") );
  1274. return false;
  1275. }
  1276. }
  1277.  
  1278. if ( manager.IsEntityMapPinDisabled( pinTag ) )
  1279. {
  1280. theSound.SoundEvent("gui_global_denied");
  1281. showNotification( GetLocStringByKeyExt("panel_hud_message_actionnotallowed") );
  1282. return false;
  1283. }
  1284.  
  1285. if ( !manager.DBG_IsAllowedFT() )
  1286. {
  1287. if ( thePlayer.IsSailing() )
  1288. {
  1289.  
  1290. initData = (W3MapInitData)GetMenuInitData();
  1291. if ( initData && initData.GetTriggeredExitEntity() )
  1292. {
  1293.  
  1294. initData.SetTriggeredExitEntity( false );
  1295. }
  1296. }
  1297. else
  1298. {
  1299. initData = (W3MapInitData)GetMenuInitData();
  1300. if ( !initData )
  1301. {
  1302. showNotification( GetLocStringByKeyExt("panel_map_cannot_travel") );
  1303. OnPlaySoundEvent("gui_global_denied");
  1304. return false;
  1305. }
  1306. fastTravelEntity = (W3FastTravelEntity)initData.GetUsedFastTravelEntity();
  1307. if (fastTravelEntity && fastTravelEntity.entityName == pinTag)
  1308. {
  1309. showNotification( GetLocStringByKeyExt("panel_map_cannot_travel_already_here") );
  1310. OnPlaySoundEvent("gui_global_denied");
  1311. return false;
  1312. }
  1313. if ( initData.GetTriggeredExitEntity() )
  1314. {
  1315.  
  1316. initData.SetTriggeredExitEntity( false );
  1317. }
  1318. }
  1319. }
  1320.  
  1321. manager.UseMapPin( pinTag, true );
  1322.  
  1323.  
  1324. if (areaId == -1)
  1325. {
  1326. areaId == m_shownArea;
  1327. }
  1328.  
  1329. if ( m_currentArea == areaId )
  1330. {
  1331. manager.PerformLocalFastTravelTeleport( pinTag );
  1332. theGame.Unpause("menus");
  1333. if ( !theGame.IsGameTimePaused() )
  1334. {
  1335. theGame.SetGameTime( theGame.GetGameTime() + GameTimeCreate(0, RoundF( RandF() * 4 ), RoundF( RandF() * 60 ), RoundF( RandF() * 60 ) ), true);
  1336. }
  1337. }
  1338. else
  1339. {
  1340. manager.PerformGlobalFastTravelTeleport( m_shownArea, pinTag );
  1341. theGame.Unpause("menus");
  1342. if ( !theGame.IsGameTimePaused() )
  1343. {
  1344. theGame.SetGameTime( theGame.GetGameTime() + GameTimeCreate(0, RoundF( RandF() * 10 ), RoundF( RandF() * 60 ), RoundF( RandF() * 60 ) ), true);
  1345. }
  1346. }
  1347.  
  1348. rootMenu = theGame.GetGuiManager().GetRootMenu();
  1349. if ( rootMenu )
  1350. {
  1351. rootMenu.CloseMenu();
  1352. }
  1353. return true;
  1354. }
  1355.  
  1356. function UpdateTitle()
  1357. {
  1358. GetMenuFlashValueStorage().SetFlashString("worldmap.title.set", GetMapTitle(), -1 );
  1359. }
  1360.  
  1361. private function UpdateDefaultPosition( areaId : int )
  1362. {
  1363. var defX, defY : float;
  1364.  
  1365. GetAreaDefaultPosition(areaId, defX, defY);
  1366. m_fxSetDefaultPosition.InvokeSelfTwoArgs( FlashArgNumber(defX), FlashArgNumber(defY) );
  1367. }
  1368.  
  1369. private function UpdateMapSettings()
  1370. {
  1371. var mapSize : float;
  1372. var tileCount : int;
  1373. var textureSize : int;
  1374. var imagePath : string;
  1375. var minLod : int;
  1376. var maxLod : int;
  1377. var vminX, vmaxX, vminY, vmaxY : int;
  1378. var sminX, smaxX, sminY, smaxY : int;
  1379. var gradientScale : float;
  1380. var previewAvailable : bool;
  1381. var previewModeString : string;
  1382. var previewMode : int;
  1383. var minZoom, maxZoom : float;
  1384. var zoom12, zoom23, zoom34 : float;
  1385.  
  1386. mapSize = theGame.GetMiniMapSize( m_shownArea );
  1387. tileCount = theGame.GetMiniMapTileCount( m_shownArea );
  1388. textureSize = theGame.GetMiniMapTextureSize( m_shownArea );
  1389. minLod = theGame.GetMiniMapMinLod( m_shownArea );
  1390. maxLod = theGame.GetMiniMapMaxLod( m_shownArea );
  1391.  
  1392. vminX = theGame.GetMiniMapVminX( m_shownArea );
  1393. vmaxX = theGame.GetMiniMapVmaxX( m_shownArea );
  1394. vminY = theGame.GetMiniMapVminY( m_shownArea );
  1395. vmaxY = theGame.GetMiniMapVmaxY( m_shownArea );
  1396.  
  1397. sminX = theGame.GetMiniMapSminX( m_shownArea );
  1398. smaxX = theGame.GetMiniMapSmaxX( m_shownArea );
  1399. sminY = theGame.GetMiniMapSminY( m_shownArea );
  1400. smaxY = theGame.GetMiniMapSmaxY( m_shownArea );
  1401.  
  1402. minZoom = theGame.GetMiniMapMinZoom( m_shownArea );
  1403. maxZoom = theGame.GetMiniMapMaxZoom( m_shownArea );
  1404. zoom12 = theGame.GetMiniMapZoom12( m_shownArea );
  1405. zoom23 = theGame.GetMiniMapZoom23( m_shownArea );
  1406. zoom34 = theGame.GetMiniMapZoom34( m_shownArea );
  1407.  
  1408. gradientScale = theGame.GetGradientScale( m_shownArea );
  1409.  
  1410. previewAvailable = theGame.GetPreviewHeight( m_shownArea ) > 0;
  1411. previewModeString = theGame.GetInGameConfigWrapper().GetVarValue('Hidden', 'WorldMapPreviewMode' );
  1412. if ( StrLen( previewModeString ) > 0 )
  1413. {
  1414. previewMode = StringToInt( previewModeString );
  1415. }
  1416. if ( previewMode == 0)
  1417. {
  1418. previewMode = 1;
  1419. }
  1420.  
  1421.  
  1422. imagePath = GetShownMapName();
  1423.  
  1424. m_fxSetMapZooms.InvokeSelfFiveArgs( FlashArgNumber( minZoom ), FlashArgNumber( maxZoom ), FlashArgNumber( zoom12 ), FlashArgNumber( zoom23 ), FlashArgNumber( zoom34 ) );
  1425. m_fxSetMapVisibilityBoundaries.InvokeSelfFiveArgs( FlashArgInt( vminX ), FlashArgInt( vmaxX ), FlashArgInt( vminY ), FlashArgInt( vmaxY ), FlashArgNumber( gradientScale ) );
  1426. m_fxSetMapScrollingBoundaries.InvokeSelfFourArgs( FlashArgInt( sminX ), FlashArgInt( smaxX ), FlashArgInt( sminY ), FlashArgInt( smaxY ) );
  1427. m_fxSetMapSettings.InvokeSelfEightArgs( FlashArgNumber( mapSize ), FlashArgInt( tileCount ), FlashArgInt( textureSize ), FlashArgInt( minLod ), FlashArgInt( maxLod ), FlashArgString( imagePath ), FlashArgBool( previewAvailable ), FlashArgInt( previewMode ) );
  1428. }
  1429.  
  1430. function GetShownMapName() : string
  1431. {
  1432. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  1433.  
  1434. return manager.GetMapName( m_shownArea );
  1435. }
  1436.  
  1437. function GetMapTitle() : string
  1438. {
  1439. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  1440.  
  1441. return manager.GetLocalisationNameFromAreaType( m_shownArea );
  1442. }
  1443.  
  1444. function GetShownMapType() : int
  1445. {
  1446. return m_shownArea;
  1447. }
  1448.  
  1449. function IsCurrentAreaShown() : bool
  1450. {
  1451. return m_currentArea == m_shownArea;
  1452. }
  1453.  
  1454. event OnSkipPressed()
  1455. {
  1456. OnCloseMenu();
  1457. }
  1458.  
  1459. event OnCategoryOpened( categoryName : name, opened : bool )
  1460. {
  1461. var i : int;
  1462.  
  1463. if( categoryName == 'None' )
  1464. {
  1465. return false;
  1466. }
  1467. if( opened )
  1468. {
  1469. if( UISavedData.openedCategories.FindFirst(categoryName) == -1 )
  1470. {
  1471. UISavedData.openedCategories.PushBack(categoryName);
  1472. }
  1473. }
  1474. else
  1475. {
  1476. i = UISavedData.openedCategories.FindFirst(categoryName);
  1477. if( i > -1 )
  1478. {
  1479. UISavedData.openedCategories.Erase(i);
  1480. }
  1481. }
  1482. }
  1483.  
  1484. public function EnableDebugMode( enable : bool )
  1485. {
  1486. m_fxEnableDebugMode.InvokeSelfOneArg( FlashArgBool( enable ) );
  1487. }
  1488.  
  1489. public function EnableUnlimitedZoom( enable : bool )
  1490. {
  1491. m_fxEnableUnlimitedZoom.InvokeSelfOneArg( FlashArgBool( enable ) );
  1492. }
  1493.  
  1494. public function EnableManualLod( enable : bool )
  1495. {
  1496. m_fxEnableManualLod.InvokeSelfOneArg( FlashArgBool( enable ) );
  1497. }
  1498.  
  1499. public function ShowBorders( show : bool )
  1500. {
  1501. m_fxShowBorders.InvokeSelfOneArg( FlashArgBool( show ) );
  1502. }
  1503.  
  1504. function PlayOpenSoundEvent()
  1505. {
  1506.  
  1507.  
  1508. }
  1509.  
  1510. event OnDebugTeleportToHighlightedMappin( posX : float , posY : float )
  1511. {
  1512. if( !theGame.IsFinalBuild() )
  1513. {
  1514. thePlayer.DebugTeleportToPin( posX , posY );
  1515. }
  1516. }
  1517.  
  1518.  
  1519. exec function map_debug( enable : bool )
  1520. {
  1521. var manager : CR4GuiManager;
  1522. var rootMenu : CR4Menu;
  1523. var mapMenu : CR4MapMenu;
  1524.  
  1525. manager = (CR4GuiManager)theGame.GetGuiManager();
  1526. if ( manager )
  1527. {
  1528. rootMenu = manager.GetRootMenu();
  1529. if ( rootMenu )
  1530. {
  1531. mapMenu = (CR4MapMenu)rootMenu.GetSubMenu();
  1532. if ( mapMenu )
  1533. {
  1534. mapMenu.EnableDebugMode( enable );
  1535. }
  1536. }
  1537. }
  1538. }
  1539.  
  1540. exec function map_unlimitedzoom( enable : bool )
  1541. {
  1542. var manager : CR4GuiManager;
  1543. var rootMenu : CR4Menu;
  1544. var mapMenu : CR4MapMenu;
  1545.  
  1546. manager = (CR4GuiManager)theGame.GetGuiManager();
  1547. if ( manager )
  1548. {
  1549. rootMenu = manager.GetRootMenu();
  1550. if ( rootMenu )
  1551. {
  1552. mapMenu = (CR4MapMenu)rootMenu.GetSubMenu();
  1553. if ( mapMenu )
  1554. {
  1555. mapMenu.EnableUnlimitedZoom( enable );
  1556. }
  1557. }
  1558. }
  1559. }
  1560.  
  1561. exec function map_manuallod( enable : bool )
  1562. {
  1563. var manager : CR4GuiManager;
  1564. var rootMenu : CR4Menu;
  1565. var mapMenu : CR4MapMenu;
  1566.  
  1567. manager = (CR4GuiManager)theGame.GetGuiManager();
  1568. if ( manager )
  1569. {
  1570. rootMenu = manager.GetRootMenu();
  1571. if ( rootMenu )
  1572. {
  1573. mapMenu = (CR4MapMenu)rootMenu.GetSubMenu();
  1574. if ( mapMenu )
  1575. {
  1576. mapMenu.EnableManualLod( enable );
  1577. }
  1578. }
  1579. }
  1580. }
  1581.  
  1582. exec function map_borders( show : bool )
  1583. {
  1584. var manager : CR4GuiManager;
  1585. var rootMenu : CR4Menu;
  1586. var mapMenu : CR4MapMenu;
  1587.  
  1588. manager = (CR4GuiManager)theGame.GetGuiManager();
  1589. if ( manager )
  1590. {
  1591. rootMenu = manager.GetRootMenu();
  1592. if ( rootMenu )
  1593. {
  1594. mapMenu = (CR4MapMenu)rootMenu.GetSubMenu();
  1595. if ( mapMenu )
  1596. {
  1597. mapMenu.ShowBorders( show );
  1598. }
  1599. }
  1600. }
  1601. }
  1602.  
  1603. exec function innkeep()
  1604. {
  1605. var numbers : array< int >;
  1606. var i : int;
  1607.  
  1608. numbers.PushBack(175619);
  1609. numbers.PushBack(475415);
  1610. numbers.PushBack(538568);
  1611. numbers.PushBack(1084890);
  1612.  
  1613. for ( i = 0; i < numbers.Size(); i += 1 )
  1614. {
  1615. LogChannel('asdf', numbers[ i ] + " [" + GetLocStringById( numbers[ i ] ) + "]");
  1616. }
  1617. }
  1618.  
  1619. exec function poi()
  1620. {
  1621. LogChannel( 'asd', "[" + GetLocStringByKey("option_miminapPoiQuestionMarks") + "]" );
  1622. LogChannel( 'asd', "[" + GetLocStringByKey("option_MinimapPoiCompletedIcons") + "]" );
  1623. }
Add Comment
Please, Sign In to add comment