Advertisement
SashTheFlash

Untitled

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