예제 #1
0
        private void OpenStation(int factoryIndex, int stationId)
        {
            if (factoryIndex < 0 || stationId < 0)
            {
                return;
            }
            if (!GameMain.isRunning || GameMain.instance.isMenuDemo)
            {
                return;
            }
            _lastFactoryIndex        = factoryIndex;
            _lastStationFactoryIndex = stationId;
            if (_uiGame == null || (_uiStation) == null)
            {
                _uiGame    = UIRoot.instance.uiGame;
                _uiStation = _uiGame.stationWindow;
            }

            if (!_uiStation.inited)
            {
                return;
            }

            if (_uiStation.active)
            {
                UIRealtimeTip.Popup("请先关闭目前物流站".Translate());
                return;
            }

            if (GameMain.data.factories != null &&
                GameMain.data.factories.Length > factoryIndex &&
                GameMain.data.factories[factoryIndex] != null)
            {
                try
                {
                    var factory   = GameMain.data.factories[factoryIndex];
                    var transport = factory.transport;
                    if (transport.stationPool != null &&
                        transport.stationPool.Length >= stationId &&
                        transport.stationPool[stationId] != null
                        )
                    {
                        _uiStation.stationId = stationId;
                        Traverse.Create(_uiStation).Property("active").SetValue(true);
                        if (!_uiStation.gameObject.activeSelf)
                        {
                            _uiStation.gameObject.SetActive(true);
                        }

                        _uiStation.factory     = factory;
                        _uiStation.transport   = factory.transport;
                        _uiStation.powerSystem = factory.powerSystem;
                        _uiStation.player      = GameMain.mainPlayer;
                        Traverse.Create(_uiStation).Method("OnStationIdChange").GetValue();
                        Traverse.Create(_uiStation).Field("eventLock").SetValue(true);

                        var eventInfo  = _uiStation.player.GetType().GetEvent("onIntendToTransferItems");
                        var methodInfo = _uiStation.GetType()
                                         .GetMethod("OnPlayerIntendToTransferItems", BindingFlags.NonPublic | BindingFlags.Instance);

                        if (eventInfo != null && methodInfo != null)
                        {
                            eventInfo.AddEventHandler(_uiStation.player,
                                                      Delegate.CreateDelegate(eventInfo.EventHandlerType, _uiStation, methodInfo));
                        }

                        _uiStation.transform.SetAsLastSibling();
                        _uiGame.OpenPlayerInventory();
                        _inspectingStation = true;
                    }
                    else
                    {
                        UIRealtimeTip.Popup("物流站ID不存在".Translate());
                    }
                }
                catch (Exception message)
                {
                    _inspectingStation = false;
                    Debug.Log(message.StackTrace);
                }
            }
            else
            {
                UIRealtimeTip.Popup("工厂不存在".Translate());
            }
        }