private void OnUpdateSpiritBeacon(Object sender, EventArgs args) { Grid grid = LegacyLogic.Instance.MapLoader.Grid; if (grid != null && grid.Type == EMapType.OUTDOOR && LegacyLogic.Instance.WorldManager.SpiritBeaconController.Existent) { SpiritBeaconPosition spiritBeacon = LegacyLogic.Instance.WorldManager.SpiritBeaconController.SpiritBeacon; Vector3 vector = Helper.SlotLocalPosition(spiritBeacon.Position, grid.GetSlot(spiritBeacon.Position).Height); ParticleSystem componentInChildren; if (m_MarkerInstance != null) { if (!(m_MarkerInstance.transform.localPosition != vector)) { return; } componentInChildren = m_MarkerInstance.GetComponentInChildren <ParticleSystem>(); if (componentInChildren != null) { componentInChildren.Stop(true); } UnityEngine.Object.Destroy(m_MarkerInstance, 10f); } Transform gridOrigin = ViewManager.Instance.GridOrigin; m_MarkerInstance = Helper.Instantiate <GameObject>(m_MarkerPrefab, gridOrigin.position + vector); m_MarkerInstance.transform.parent = gridOrigin; m_MarkerInstance.transform.localPosition = vector; componentInChildren = m_MarkerInstance.GetComponentInChildren <ParticleSystem>(); if (componentInChildren != null) { componentInChildren.Play(true); } } }
internal void Load(SaveGameData p_data) { m_Existent = p_data.Get <Boolean>("Existent", false); Int32 x = p_data.Get <Int32>("X", 0); Int32 y = p_data.Get <Int32>("Y", 0); String p_mapname = p_data.Get <String>("MapName", null); String p_locaKey = p_data.Get <String>("LocaMapName", null); Int32 p_worldPointID = p_data.Get <Int32>("MapPointID", 0); Position p_position = new Position(x, y); m_SpiritBeacon = new SpiritBeaconPosition(p_position, p_mapname, p_locaKey, p_worldPointID); LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.SPIRIT_BEACON_UPDATE, EventArgs.Empty); }
private void OnSpiritBeaconUpdate(Object p_sender, EventArgs p_args) { UnloadSpiritBeacon(); if (LegacyLogic.Instance.WorldManager.SpiritBeaconController.Existent) { SpiritBeaconPosition spiritBeacon = LegacyLogic.Instance.WorldManager.SpiritBeaconController.SpiritBeacon; SpiritBeaconSymbolView spiritBeaconSymbolView = m_SpiritBeacon = (SpiritBeaconSymbolView)m_SymbolBeaconPrefab.Get(); spiritBeaconSymbolView.transform.parent = m_SymbolLayer; spiritBeaconSymbolView.transform.localPosition = new Vector3(spiritBeacon.Position.X * 24, spiritBeacon.Position.Y * 24, 0f); spiritBeaconSymbolView.ControllerGridPosition = spiritBeacon.Position; spiritBeaconSymbolView.ControllerGridDirection = EDirection.NORTH; spiritBeaconSymbolView.InitializeView(null); spiritBeaconSymbolView.MakePixelPerfect(); spiritBeaconSymbolView.CheckVisibility(true); } }
internal void ExecuteAction() { Grid grid = LegacyLogic.Instance.MapLoader.Grid; Party party = LegacyLogic.Instance.WorldManager.Party; ESpiritBeaconAction action = Action; if (action != ESpiritBeaconAction.TRAVEL) { if (action == ESpiritBeaconAction.SET_POINT) { if (party.Position != m_SpiritBeacon.Position || grid.Name != m_SpiritBeacon.Mapname || grid.LocationLocaName != m_SpiritBeacon.LocalizedMapnameKey) { m_SpiritBeacon = new SpiritBeaconPosition(party.Position, grid.Name, grid.LocationLocaName, grid.WorldMapPointID); m_Existent = true; LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.SPIRIT_BEACON_UPDATE, EventArgs.Empty); } } } else if (m_Existent) { if (grid.Name != m_SpiritBeacon.Mapname) { party.SelectedInteractiveObject = null; LegacyLogic.Instance.EventManager.RegisterEvent(EEventType.SAVEGAME_SAVED, new EventHandler(OnGameSaved)); LegacyLogic.Instance.WorldManager.HighestSaveGameNumber++; LegacyLogic.Instance.WorldManager.CurrentSaveGameType = ESaveGameType.AUTO; LegacyLogic.Instance.WorldManager.SaveGameName = Localization.Instance.GetText("SAVEGAMETYPE_AUTO"); LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.SAVEGAME_STARTED_SAVE, EventArgs.Empty); } else if (party.Position != m_SpiritBeacon.Position) { OnPartyPositionSet(null, EventArgs.Empty); } } else { LegacyLogger.LogError("No beacon defined cannot travel!"); } Action = ESpiritBeaconAction.None; }
private void OnSpiritBeaconUpdate(Object sender, EventArgs e) { gameObject.SetActive(LegacyLogic.Instance.WorldManager.SpiritBeaconController.Existent); SpiritBeaconPosition spiritBeacon = LegacyLogic.Instance.WorldManager.SpiritBeaconController.SpiritBeacon; Vector3 worldMapPosition; if (spiritBeacon.MapPointID != 0) { WorldMapPoint worldMapPoint = LegacyLogic.Instance.WorldManager.WorldMapController.FindWorldMapPoint(spiritBeacon.MapPointID); if (worldMapPoint == null) { Debug.LogError("Beacon mappoint position not found! ID: " + spiritBeacon.MapPointID); gameObject.SetActive(false); return; } worldMapPosition = WorldMapController.GetWorldMapPosition(worldMapPoint.StaticData.Position); } else { worldMapPosition = WorldMapController.GetWorldMapPosition(spiritBeacon.Position); } worldMapPosition.z = -1f; transform.localPosition = worldMapPosition; }
internal void Clear() { m_SpiritBeacon = default(SpiritBeaconPosition); m_Existent = false; LegacyLogic.Instance.EventManager.InvokeEvent(this, EEventType.SPIRIT_BEACON_UPDATE, EventArgs.Empty); }
public SpiritBeaconController(EventManager p_eventManager) { m_SpiritBeacon = default(SpiritBeaconPosition); m_Existent = false; }