Guest User

Untitled

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