Пример #1
0
        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);
        }
Пример #3
0
 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;
        }
Пример #5
0
        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;
 }