Guest User

Untitled

a guest
Dec 29th, 2024
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 47.94 KB | Source Code | 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. label = GetLocStringByKeyExt( StrLower("map_location_" + targetPin.tag ) );
  887. description = GetLocStringByKeyExt( StrLower("map_description_" + targetPin.tag ) );
  888. break;
  889.  
  890.  
  891.  
  892. case 'NoticeBoard':
  893. case 'NoticeBoardFull':
  894. label = GetLocStringByKeyExt( StrLower("map_location_noticeboard" ) );
  895. description = GetLocStringByKeyExt( StrLower("map_description_noticeboard" ) );
  896. break;
  897.  
  898.  
  899.  
  900. case 'Boat':
  901. label = GetLocStringByKeyExt( StrLower("panel_hud_boat" ) );
  902. description = GetLocStringByKeyExt("map_description_player_boat");
  903. break;
  904.  
  905.  
  906.  
  907. default:
  908. if ( targetPin.customNameId != 0 )
  909. {
  910. label = GetLocStringById( targetPin.customNameId );
  911. description = "";
  912. }
  913. else
  914. {
  915. label = GetLocStringByKeyExt( StrLower("map_location_" + targetPin.visibleType) );
  916. description = GetLocStringByKeyExt( StrLower("map_description_" + targetPin.visibleType) );
  917. }
  918. break;
  919. }
  920.  
  921. dataObject.SetMemberFlashString( "label", label );
  922. dataObject.SetMemberFlashString( "description", description );
  923. }
  924.  
  925. event OnToggleMinimap( previewMode : int )
  926. {
  927. var value : string;
  928.  
  929. value = IntToString( previewMode );
  930. theGame.GetInGameConfigWrapper().SetVarValue('Hidden', 'WorldMapPreviewMode', value );
  931. theGame.SaveUserSettings();
  932. }
  933.  
  934. event OnDisablePin( pinName : string, disable : bool )
  935. {
  936. theGame.GetCommonMapManager().DisableMapPin( pinName, disable );
  937. }
  938.  
  939. event OnPinch( value : float )
  940. {
  941.  
  942. LogChannel( 'Gui', "CR4MapMenu::OnPinch " + value );
  943. }
  944.  
  945. event OnClosingMenu()
  946. {
  947. var initData : W3MapInitData;
  948. SaveStateData();
  949. theGame.GetGuiManager().SetLastOpenedCommonMenuName( GetMenuName() );
  950.  
  951. initData = (W3MapInitData)GetMenuInitData();
  952. if ( initData )
  953. {
  954. if ( initData && initData.GetTriggeredExitEntity() )
  955. {
  956. thePlayer.OnTeleportPlayerToPlayableArea( true );
  957. }
  958. }
  959.  
  960. super.OnClosingMenu();
  961. }
  962.  
  963. event OnCloseMenu()
  964. {
  965. if( m_parentMenu )
  966. {
  967. m_parentMenu.ChildRequestCloseMenu();
  968. }
  969.  
  970. CloseMenu();
  971. }
  972.  
  973. function SaveStateData()
  974. {
  975. switch(m_menuState)
  976. {
  977. case 'Objectives':
  978. case 'FastTravel':
  979. m_guiManager.UpdateUISavedData( m_menuState, UISavedData.openedCategories, currentTag, UISavedData.selectedModule );
  980. break;
  981. case 'GlobalMap':
  982. return;
  983. }
  984. }
  985.  
  986. event OnSwitchToWorldMap()
  987. {
  988. var continentMapState : W3TutorialManagerUIHandlerStateContinentMap;
  989.  
  990. LogChannel('WORLDMAP',"OnSwitchToWorldMap" );
  991. // ---=== VladimirHUD ===--- PaulScottt (paul casually inserting his name into vanilla code)
  992. SetMapTitle(GetLocStringByKeyExt("panel_map_title_worldmap"));
  993. // ---=== VladimirHUD ===---
  994. UpdateInputFeedback();
  995.  
  996. if( ShouldProcessTutorial( 'TutorialMapBackToHub' ) )
  997. {
  998. continentMapState = ( W3TutorialManagerUIHandlerStateContinentMap ) theGame.GetTutorialSystem().uiHandler.GetCurrentState();
  999. if( continentMapState )
  1000. {
  1001. continentMapState.OnWentToContinentMap();
  1002. }
  1003. }
  1004. }
  1005.  
  1006. event OnSwitchToHubMap( areaName : string )
  1007. {
  1008. var areaType : EAreaName;
  1009. areaType = AreaNameToType( areaName );
  1010. SwitchToHubMap(areaType, false);
  1011. }
  1012.  
  1013. function GetAreaDefaultPosition( areaId : int, out x : float, out y : float ) : void
  1014. {
  1015. switch ( areaId )
  1016. {
  1017. case AN_NMLandNovigrad:
  1018. x = -150;
  1019. y = 450;
  1020. break;
  1021. case AN_Velen:
  1022. x = -300;
  1023. y = -100;
  1024. break;
  1025. default:
  1026. x = -1;
  1027. y = -1;
  1028. }
  1029. }
  1030.  
  1031. event OnHighlightNextObjective()
  1032. {
  1033. var highlightedObjective : CJournalQuestObjective;
  1034. var objectives : array< SJournalQuestObjectiveData >;
  1035. var i, newIndex : int;
  1036. var journalManager : CWitcherJournalManager;
  1037.  
  1038. journalManager = theGame.GetJournalManager();
  1039. journalManager.GetTrackedQuestObjectivesData( objectives );
  1040. highlightedObjective = journalManager.GetHighlightedObjective();
  1041.  
  1042. for ( i = objectives.Size() - 1; i >= 0; i -= 1 )
  1043. {
  1044. if ( objectives[ i ].status != JS_Active )
  1045. {
  1046. objectives.Erase( i );
  1047. }
  1048. }
  1049. if ( objectives.Size() < 2 )
  1050. {
  1051. return false;
  1052. }
  1053. for ( i = 0; i < objectives.Size(); i += 1 )
  1054. {
  1055. if ( objectives[ i ].objectiveEntry == highlightedObjective )
  1056. {
  1057. newIndex = ( i + 1 ) % objectives.Size();
  1058. SetHighlightedObjective( objectives[ newIndex ].objectiveEntry );
  1059. return true;
  1060. }
  1061. }
  1062. }
  1063.  
  1064.  
  1065. event OnHighlightObjective( tag : name )
  1066. {
  1067. var l_objective : CJournalQuestObjective;
  1068. var journalManager : CWitcherJournalManager;
  1069.  
  1070. journalManager = theGame.GetJournalManager();
  1071. l_objective = (CJournalQuestObjective)journalManager.GetEntryByTag( tag );
  1072. if ( l_objective && journalManager.GetEntryStatus( l_objective ) == JS_Active )
  1073. {
  1074. SetHighlightedObjective( l_objective );
  1075. }
  1076. }
  1077.  
  1078. private function SetHighlightedObjective( objective : CJournalQuestObjective )
  1079. {
  1080. var highlightedMapPinTag : name;
  1081.  
  1082. LogChannel('asdf', "H BEFORE " + theGame.GetCommonMapManager().GetHighlightedMapPinTag() );
  1083. if ( theGame.GetJournalManager().SetHighlightedObjective( objective ) )
  1084. {
  1085. UpdateCurrentQuestData( true );
  1086.  
  1087. highlightedMapPinTag = theGame.GetCommonMapManager().GetHighlightedMapPinTag();
  1088.  
  1089. m_fxSetHighlightedMapPin.InvokeSelfOneArg( FlashArgUInt( NameToFlashUInt( highlightedMapPinTag ) ) );
  1090.  
  1091. }
  1092. LogChannel('asdf', "H AFTER " + theGame.GetCommonMapManager().GetHighlightedMapPinTag() );
  1093. }
  1094.  
  1095.  
  1096. event OnTrackQuest( tag : name )
  1097. {
  1098. var journalManager : CWitcherJournalManager;
  1099. var l_quest : CJournalBase;
  1100.  
  1101. journalManager = theGame.GetJournalManager();
  1102. l_quest = journalManager.GetEntryByTag(tag);
  1103. journalManager.SetTrackedQuest( l_quest );
  1104. }
  1105.  
  1106.  
  1107.  
  1108. function SwitchToHubMap( area : EAreaName, onStartup : bool )
  1109. {
  1110. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  1111. var journalArea : EAreaName;
  1112. var originArea : EAreaName;
  1113.  
  1114. originArea = area;
  1115.  
  1116. if ( area == AN_Undefined )
  1117. {
  1118.  
  1119. return;
  1120. }
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127. if ( area == AN_Velen || area == AN_NMLandNovigrad )
  1128. {
  1129.  
  1130. if ( m_currentArea == AN_NMLandNovigrad )
  1131. {
  1132.  
  1133. journalArea = manager.GetCurrentJournalArea();
  1134. }
  1135. else
  1136. {
  1137.  
  1138. journalArea = area;
  1139. }
  1140.  
  1141.  
  1142. area = AN_NMLandNovigrad;
  1143. }
  1144. else
  1145. {
  1146.  
  1147. journalArea = area;
  1148. }
  1149.  
  1150. // ---=== VladimirHUD ===--- PaulScottt (paul casually inserting his name into vanilla code, again)
  1151. SetMapTitle( GetLocStringByKeyExt( manager.GetLocalisationNameFromAreaType( journalArea ) ) );
  1152. // ---=== VladimirHUD ===---
  1153. SetCurrentAreaId( originArea, onStartup );
  1154. UpdateDefaultPosition(originArea);
  1155. UpdateInputFeedback();
  1156.  
  1157. if ( area == m_shownArea )
  1158. {
  1159. ReinitializeMap();
  1160. }
  1161. else
  1162. {
  1163. m_shownArea = area;
  1164. UpdateTitle();
  1165. UpdateMapSettings();
  1166. UpdateData();
  1167. }
  1168. }
  1169.  
  1170. event OnEntrySelected( tag : name )
  1171. {
  1172. LogChannel('WORLDMAP', "OnEntrySelected tag: "+tag+" area: ");
  1173. currentTag = tag;
  1174. }
  1175.  
  1176. event OnSwitchToInterior( )
  1177. {
  1178. LogChannel('WORLDMAP', "OnSwitchToInterior" );
  1179. }
  1180.  
  1181. event OnUserMapPinSet( posX : float, posY : float, type : int, fromSelectionPanel : bool )
  1182. {
  1183. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  1184. var worldPath : string;
  1185. var realShownArea : EAreaName;
  1186. var area : int;
  1187. var position : Vector;
  1188. var idToAdd, idToRemove, indexToAdd : int;
  1189. var realType : int;
  1190.  
  1191. idToAdd = 0;
  1192. idToRemove = 0;
  1193.  
  1194. if ( m_currentArea == m_shownArea )
  1195. {
  1196. worldPath = theGame.GetWorld().GetDepotPath();
  1197. realShownArea = manager.GetAreaFromWorldPath( worldPath, true );
  1198. }
  1199. else
  1200. {
  1201. realShownArea = m_shownArea;
  1202. }
  1203.  
  1204. position.X = posX;
  1205. position.Y = posY;
  1206. position.Z = 0;
  1207.  
  1208. realType = type;
  1209. if ( fromSelectionPanel )
  1210. {
  1211. realType += 1;
  1212. }
  1213. if ( !manager.ToggleUserMapPin( (int)realShownArea, position, realType, fromSelectionPanel, idToAdd, idToRemove ) )
  1214. {
  1215. showNotification( GetLocStringByKeyExt("panel_hud_message_actionnotallowed") );
  1216. }
  1217.  
  1218.  
  1219. if ( idToRemove != 0 )
  1220. {
  1221. m_fxRemoveUserMapPin.InvokeSelfOneArg( FlashArgUInt( idToRemove ) );
  1222. }
  1223. if ( idToAdd != 0 )
  1224. {
  1225. indexToAdd = manager.GetUserMapPinIndexById( idToAdd );
  1226. if ( indexToAdd >= 0 )
  1227. {
  1228. UpdateDataWithSingleUserMapPin( indexToAdd );
  1229. theSound.SoundEvent("gui_hubmap_mark_pin");
  1230. }
  1231. }
  1232. }
  1233.  
  1234. event OnStaticMapPinUsed( pinTag : name, areaId : int)
  1235. {
  1236. var initData : W3MapInitData;
  1237. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  1238. var fastTravelEntity : W3FastTravelEntity;
  1239. var loadingInitData : W3MenuInitData;
  1240. var contentTag : name;
  1241. var progress : float;
  1242. var rootMenu : CR4Menu;
  1243.  
  1244. manager = theGame.GetCommonMapManager();
  1245. if ( !manager )
  1246. {
  1247. return false;
  1248. }
  1249.  
  1250. if ( !manager.IsWorldAvailable( areaId ) )
  1251. {
  1252. contentTag = manager.GetWorldContentTag( areaId );
  1253. progress = theGame.ProgressToContentAvailable(contentTag);
  1254. theSound.SoundEvent("gui_global_denied");
  1255. theGame.GetGuiManager().ShowProgressDialog(0, "", "panel_map_cannot_travel_downloading_content", true, UDB_Ok, progress, UMPT_Content, contentTag);
  1256. return false;
  1257. }
  1258.  
  1259. if( !thePlayer.IsActionAllowed( EIAB_FastTravel ) )
  1260. {
  1261. showNotification( GetLocStringByKeyExt("panel_hud_message_actionnotallowed") );
  1262. OnPlaySoundEvent("gui_global_denied");
  1263. return false;
  1264. }
  1265.  
  1266. if ( m_currentArea != areaId )
  1267. {
  1268. if ( !thePlayer.IsActionAllowed( EIAB_FastTravelGlobal ) )
  1269. {
  1270. theSound.SoundEvent("gui_global_denied");
  1271. showNotification( GetLocStringByKeyExt("panel_hud_message_actionnotallowed") );
  1272. return false;
  1273. }
  1274. }
  1275.  
  1276. if ( manager.IsEntityMapPinDisabled( pinTag ) )
  1277. {
  1278. theSound.SoundEvent("gui_global_denied");
  1279. showNotification( GetLocStringByKeyExt("panel_hud_message_actionnotallowed") );
  1280. return false;
  1281. }
  1282.  
  1283. if ( !manager.DBG_IsAllowedFT() )
  1284. {
  1285. if ( thePlayer.IsSailing() )
  1286. {
  1287.  
  1288. initData = (W3MapInitData)GetMenuInitData();
  1289. if ( initData && initData.GetTriggeredExitEntity() )
  1290. {
  1291.  
  1292. initData.SetTriggeredExitEntity( false );
  1293. }
  1294. }
  1295. else
  1296. {
  1297. initData = (W3MapInitData)GetMenuInitData();
  1298. if ( !initData )
  1299. {
  1300. showNotification( GetLocStringByKeyExt("panel_map_cannot_travel") );
  1301. OnPlaySoundEvent("gui_global_denied");
  1302. return false;
  1303. }
  1304. fastTravelEntity = (W3FastTravelEntity)initData.GetUsedFastTravelEntity();
  1305. if (fastTravelEntity && fastTravelEntity.entityName == pinTag)
  1306. {
  1307. showNotification( GetLocStringByKeyExt("panel_map_cannot_travel_already_here") );
  1308. OnPlaySoundEvent("gui_global_denied");
  1309. return false;
  1310. }
  1311. if ( initData.GetTriggeredExitEntity() )
  1312. {
  1313.  
  1314. initData.SetTriggeredExitEntity( false );
  1315. }
  1316. }
  1317. }
  1318.  
  1319. manager.UseMapPin( pinTag, true );
  1320.  
  1321.  
  1322. if (areaId == -1)
  1323. {
  1324. areaId == m_shownArea;
  1325. }
  1326.  
  1327. if ( m_currentArea == areaId )
  1328. {
  1329. manager.PerformLocalFastTravelTeleport( pinTag );
  1330. theGame.Unpause("menus");
  1331. if ( !theGame.IsGameTimePaused() )
  1332. {
  1333. theGame.SetGameTime( theGame.GetGameTime() + GameTimeCreate(0, RoundF( RandF() * 4 ), RoundF( RandF() * 60 ), RoundF( RandF() * 60 ) ), true);
  1334. }
  1335. }
  1336. else
  1337. {
  1338. manager.PerformGlobalFastTravelTeleport( m_shownArea, pinTag );
  1339. theGame.Unpause("menus");
  1340. if ( !theGame.IsGameTimePaused() )
  1341. {
  1342. theGame.SetGameTime( theGame.GetGameTime() + GameTimeCreate(0, RoundF( RandF() * 10 ), RoundF( RandF() * 60 ), RoundF( RandF() * 60 ) ), true);
  1343. }
  1344. }
  1345.  
  1346. rootMenu = theGame.GetGuiManager().GetRootMenu();
  1347. if ( rootMenu )
  1348. {
  1349. rootMenu.CloseMenu();
  1350. }
  1351. return true;
  1352. }
  1353.  
  1354. function UpdateTitle()
  1355. {
  1356. GetMenuFlashValueStorage().SetFlashString("worldmap.title.set", GetMapTitle(), -1 );
  1357. }
  1358.  
  1359. private function UpdateDefaultPosition( areaId : int )
  1360. {
  1361. var defX, defY : float;
  1362.  
  1363. GetAreaDefaultPosition(areaId, defX, defY);
  1364. m_fxSetDefaultPosition.InvokeSelfTwoArgs( FlashArgNumber(defX), FlashArgNumber(defY) );
  1365. }
  1366.  
  1367. private function UpdateMapSettings()
  1368. {
  1369. var mapSize : float;
  1370. var tileCount : int;
  1371. var textureSize : int;
  1372. var imagePath : string;
  1373. var minLod : int;
  1374. var maxLod : int;
  1375. var vminX, vmaxX, vminY, vmaxY : int;
  1376. var sminX, smaxX, sminY, smaxY : int;
  1377. var gradientScale : float;
  1378. var previewAvailable : bool;
  1379. var previewModeString : string;
  1380. var previewMode : int;
  1381. var minZoom, maxZoom : float;
  1382. var zoom12, zoom23, zoom34 : float;
  1383.  
  1384. mapSize = theGame.GetMiniMapSize( m_shownArea );
  1385. tileCount = theGame.GetMiniMapTileCount( m_shownArea );
  1386. textureSize = theGame.GetMiniMapTextureSize( m_shownArea );
  1387. minLod = theGame.GetMiniMapMinLod( m_shownArea );
  1388. maxLod = theGame.GetMiniMapMaxLod( m_shownArea );
  1389.  
  1390. vminX = theGame.GetMiniMapVminX( m_shownArea );
  1391. vmaxX = theGame.GetMiniMapVmaxX( m_shownArea );
  1392. vminY = theGame.GetMiniMapVminY( m_shownArea );
  1393. vmaxY = theGame.GetMiniMapVmaxY( m_shownArea );
  1394.  
  1395. sminX = theGame.GetMiniMapSminX( m_shownArea );
  1396. smaxX = theGame.GetMiniMapSmaxX( m_shownArea );
  1397. sminY = theGame.GetMiniMapSminY( m_shownArea );
  1398. smaxY = theGame.GetMiniMapSmaxY( m_shownArea );
  1399.  
  1400. minZoom = theGame.GetMiniMapMinZoom( m_shownArea );
  1401. maxZoom = theGame.GetMiniMapMaxZoom( m_shownArea );
  1402. zoom12 = theGame.GetMiniMapZoom12( m_shownArea );
  1403. zoom23 = theGame.GetMiniMapZoom23( m_shownArea );
  1404. zoom34 = theGame.GetMiniMapZoom34( m_shownArea );
  1405.  
  1406. gradientScale = theGame.GetGradientScale( m_shownArea );
  1407.  
  1408. previewAvailable = theGame.GetPreviewHeight( m_shownArea ) > 0;
  1409. previewModeString = theGame.GetInGameConfigWrapper().GetVarValue('Hidden', 'WorldMapPreviewMode' );
  1410. if ( StrLen( previewModeString ) > 0 )
  1411. {
  1412. previewMode = StringToInt( previewModeString );
  1413. }
  1414. if ( previewMode == 0)
  1415. {
  1416. previewMode = 1;
  1417. }
  1418.  
  1419.  
  1420. imagePath = GetShownMapName();
  1421.  
  1422. m_fxSetMapZooms.InvokeSelfFiveArgs( FlashArgNumber( minZoom ), FlashArgNumber( maxZoom ), FlashArgNumber( zoom12 ), FlashArgNumber( zoom23 ), FlashArgNumber( zoom34 ) );
  1423. m_fxSetMapVisibilityBoundaries.InvokeSelfFiveArgs( FlashArgInt( vminX ), FlashArgInt( vmaxX ), FlashArgInt( vminY ), FlashArgInt( vmaxY ), FlashArgNumber( gradientScale ) );
  1424. m_fxSetMapScrollingBoundaries.InvokeSelfFourArgs( FlashArgInt( sminX ), FlashArgInt( smaxX ), FlashArgInt( sminY ), FlashArgInt( smaxY ) );
  1425. m_fxSetMapSettings.InvokeSelfEightArgs( FlashArgNumber( mapSize ), FlashArgInt( tileCount ), FlashArgInt( textureSize ), FlashArgInt( minLod ), FlashArgInt( maxLod ), FlashArgString( imagePath ), FlashArgBool( previewAvailable ), FlashArgInt( previewMode ) );
  1426. }
  1427.  
  1428. function GetShownMapName() : string
  1429. {
  1430. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  1431.  
  1432. return manager.GetMapName( m_shownArea );
  1433. }
  1434.  
  1435. function GetMapTitle() : string
  1436. {
  1437. var manager : CCommonMapManager = theGame.GetCommonMapManager();
  1438.  
  1439. return manager.GetLocalisationNameFromAreaType( m_shownArea );
  1440. }
  1441.  
  1442. function GetShownMapType() : int
  1443. {
  1444. return m_shownArea;
  1445. }
  1446.  
  1447. function IsCurrentAreaShown() : bool
  1448. {
  1449. return m_currentArea == m_shownArea;
  1450. }
  1451.  
  1452. event OnSkipPressed()
  1453. {
  1454. OnCloseMenu();
  1455. }
  1456.  
  1457. event OnCategoryOpened( categoryName : name, opened : bool )
  1458. {
  1459. var i : int;
  1460. if( categoryName == 'None' )
  1461. {
  1462. return false;
  1463. }
  1464. if( opened )
  1465. {
  1466. if( UISavedData.openedCategories.FindFirst(categoryName) == -1 )
  1467. {
  1468. UISavedData.openedCategories.PushBack(categoryName);
  1469. }
  1470. }
  1471. else
  1472. {
  1473. i = UISavedData.openedCategories.FindFirst(categoryName);
  1474. if( i > -1 )
  1475. {
  1476. UISavedData.openedCategories.Erase(i);
  1477. }
  1478. }
  1479. }
  1480.  
  1481. public function EnableDebugMode( enable : bool )
  1482. {
  1483. m_fxEnableDebugMode.InvokeSelfOneArg( FlashArgBool( enable ) );
  1484. }
  1485.  
  1486. public function EnableUnlimitedZoom( enable : bool )
  1487. {
  1488. m_fxEnableUnlimitedZoom.InvokeSelfOneArg( FlashArgBool( enable ) );
  1489. }
  1490.  
  1491. public function EnableManualLod( enable : bool )
  1492. {
  1493. m_fxEnableManualLod.InvokeSelfOneArg( FlashArgBool( enable ) );
  1494. }
  1495.  
  1496. public function ShowBorders( show : bool )
  1497. {
  1498. m_fxShowBorders.InvokeSelfOneArg( FlashArgBool( show ) );
  1499. }
  1500.  
  1501. function PlayOpenSoundEvent()
  1502. {
  1503.  
  1504.  
  1505. }
  1506.  
  1507. event OnDebugTeleportToHighlightedMappin( posX : float , posY : float )
  1508. {
  1509. if( !theGame.IsFinalBuild() )
  1510. {
  1511. thePlayer.DebugTeleportToPin( posX , posY );
  1512. }
  1513. }
  1514. }
  1515.  
  1516. exec function map_debug( enable : bool )
  1517. {
  1518. var manager : CR4GuiManager;
  1519. var rootMenu : CR4Menu;
  1520. var mapMenu : CR4MapMenu;
  1521.  
  1522. manager = (CR4GuiManager)theGame.GetGuiManager();
  1523. if ( manager )
  1524. {
  1525. rootMenu = manager.GetRootMenu();
  1526. if ( rootMenu )
  1527. {
  1528. mapMenu = (CR4MapMenu)rootMenu.GetSubMenu();
  1529. if ( mapMenu )
  1530. {
  1531. mapMenu.EnableDebugMode( enable );
  1532. }
  1533. }
  1534. }
  1535. }
  1536.  
  1537. exec function map_unlimitedzoom( enable : bool )
  1538. {
  1539. var manager : CR4GuiManager;
  1540. var rootMenu : CR4Menu;
  1541. var mapMenu : CR4MapMenu;
  1542.  
  1543. manager = (CR4GuiManager)theGame.GetGuiManager();
  1544. if ( manager )
  1545. {
  1546. rootMenu = manager.GetRootMenu();
  1547. if ( rootMenu )
  1548. {
  1549. mapMenu = (CR4MapMenu)rootMenu.GetSubMenu();
  1550. if ( mapMenu )
  1551. {
  1552. mapMenu.EnableUnlimitedZoom( enable );
  1553. }
  1554. }
  1555. }
  1556. }
  1557.  
  1558. exec function map_manuallod( enable : bool )
  1559. {
  1560. var manager : CR4GuiManager;
  1561. var rootMenu : CR4Menu;
  1562. var mapMenu : CR4MapMenu;
  1563.  
  1564. manager = (CR4GuiManager)theGame.GetGuiManager();
  1565. if ( manager )
  1566. {
  1567. rootMenu = manager.GetRootMenu();
  1568. if ( rootMenu )
  1569. {
  1570. mapMenu = (CR4MapMenu)rootMenu.GetSubMenu();
  1571. if ( mapMenu )
  1572. {
  1573. mapMenu.EnableManualLod( enable );
  1574. }
  1575. }
  1576. }
  1577. }
  1578.  
  1579. exec function map_borders( show : bool )
  1580. {
  1581. var manager : CR4GuiManager;
  1582. var rootMenu : CR4Menu;
  1583. var mapMenu : CR4MapMenu;
  1584.  
  1585. manager = (CR4GuiManager)theGame.GetGuiManager();
  1586. if ( manager )
  1587. {
  1588. rootMenu = manager.GetRootMenu();
  1589. if ( rootMenu )
  1590. {
  1591. mapMenu = (CR4MapMenu)rootMenu.GetSubMenu();
  1592. if ( mapMenu )
  1593. {
  1594. mapMenu.ShowBorders( show );
  1595. }
  1596. }
  1597. }
  1598. }
  1599.  
  1600. exec function innkeep()
  1601. {
  1602. var numbers : array< int >;
  1603. var i : int;
  1604.  
  1605. numbers.PushBack(175619);
  1606. numbers.PushBack(475415);
  1607. numbers.PushBack(538568);
  1608. numbers.PushBack(1084890);
  1609.  
  1610. for ( i = 0; i < numbers.Size(); i += 1 )
  1611. {
  1612. LogChannel('asdf', numbers[ i ] + " [" + GetLocStringById( numbers[ i ] ) + "]");
  1613. }
  1614. }
  1615.  
  1616. exec function poi()
  1617. {
  1618. LogChannel( 'asd', "[" + GetLocStringByKey("option_miminapPoiQuestionMarks") + "]" );
  1619. LogChannel( 'asd', "[" + GetLocStringByKey("option_MinimapPoiCompletedIcons") + "]" );
Tags: tw3
Add Comment
Please, Sign In to add comment