SHARE
TWEET

Untitled

SashTheFlash Jul 17th, 2019 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top