protected override void OnEnter(ProcedureOwner procedureOwner, object userData)
        {
            base.OnEnter(procedureOwner, userData);

            GameCore.Input.Subscribe(InputEventType.On_SimpleTap, OnSimpleTap);

            addLogicHandler(new CraftCameraLogicHandler());

            Timing.CallDelayed(0.2f, () =>
            {
                var data = GameCore.WorldMap.GetLogicHandler <WorldMapSystemLogicHandler>(WorldMapSystemLogicHandler.HandlerID).GetCameraSetting();
                GameCore.Event.Fire(this, FocusWorldPosWithLerpValueEventArgs.Create(GameCore.NetData.SelfCastle.Position, data.focusCastleLerpValue));

                // 產生 preview hex 的 entity:
                selectGridEntity.Release();
                selectGridEntity.LoadEntity(new MiscEntityData(GameCore.Entity.GenerateSerialId(), gridHexAssetName)
                {
                    Position = GameCore.NetData.SelfCastle.Position
                },
                                            (entity) =>
                {
                    entity.OnZoom(0);
                });
            });

            uiSerialId = GameCore.UI.OpenUIForm(UIFormId.UISelectBuildGrid);
        }
예제 #2
0
        protected override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown)
        {
            base.OnLeave(procedureOwner, isShutdown);

            GameCore.Event.Unsubscribe(NetDataEvent.LearnTechEvent.EventId, onLearnTech);

            var data = GameCore.WorldMap.GetLogicHandler <WorldMapSystemLogicHandler>(WorldMapSystemLogicHandler.HandlerID).GetCameraSetting();

            GameCore.Event.Fire(this, FocusWorldPosWithLerpValueEventArgs.Create(selfCastle.Position(), data.focusCastleLerpValue));

            if (preset.buildingHex != null)
            {
                preset.buildingHex.Hide();
            }

            selectGridEntity.Release();
            preset = null;

            if (GameCore.UI.HasUIForm(uiFormSerialId.Value))
            {
                GameCore.UI.CloseUIForm(uiFormSerialId.Value);
            }

            if (buildingEntityId != 0)
            {
                var entity = GameCore.Entity.GetEntity(buildingEntityId);
                if (entity != null)
                {
                    entity.Logic.CachedTransform.parent.gameObject.SetActive(true);
                }
            }
        }
예제 #3
0
        protected override void OnEnter(ProcedureOwner procedureOwner, object userData)
        {
            base.OnEnter(procedureOwner, userData);

            preset = userData as Preset;

            GameCore.Event.Subscribe(NetDataEvent.LearnTechEvent.EventId, onLearnTech);

            addLogicHandler(new CraftCameraLogicHandler());

            Timing.CallDelayed(0.2f, () =>
            {
                var data = GameCore.WorldMap.GetLogicHandler <WorldMapSystemLogicHandler>(WorldMapSystemLogicHandler.HandlerID).GetCameraSetting();
                GameCore.Event.Fire(this, FocusWorldPosWithLerpValueEventArgs.Create(preset.position + offset, data.focusCastleLerpValue));
            });

            // 產生 preview hex 的 entity:
            selectGridEntity.Release();
            selectGridEntity.LoadEntity(new MiscEntityData(GameCore.Entity.GenerateSerialId(), gridHexAssetName)
            {
                Position = preset.position
            });

            // 開啟建造主建築介面
            uiFormSerialId = GameCore.UI.OpenUIForm(UIFormId.UIMainBuildingList, preset);
        }
예제 #4
0
        protected override void OnEnter(ProcedureOwner procedureOwner, object userData)
        {
            base.OnEnter(procedureOwner, userData);

            addLogicHandler(new WorldMapCameraLogicHandler());
            addLogicHandler(new WorldMapClickLogicHandler());

            // 登入進入世界地圖, 攝影機移至主堡
            if (userData != null && userData is bool && (bool)userData)
            {
                var data = GameCore.WorldMap.GetLogicHandler <WorldMapSystemLogicHandler>(WorldMapSystemLogicHandler.HandlerID).GetCameraSetting();
                GameCore.Event.Fire(this, FocusWorldPosWithLerpValueEventArgs.Create(GameCore.NetData.SelfCastle.Position, data.focusStartupLerpValue));
            }
        }
예제 #5
0
        protected override void OnEnter(ProcedureOwner procedureOwner, object userData)
        {
            base.OnEnter(procedureOwner, userData);

            preset = userData as Preset;

            GameCore.Event.Subscribe(NetDataEvent.LearnTechEvent.EventId, onLearnTech);

            addLogicHandler(new CraftCameraLogicHandler());

            // 產生 preview hex 的 entity:
            selectGridEntity.Release();
            selectGridEntity.LoadEntity(new MiscEntityData(GameCore.Entity.GenerateSerialId(), gridHexAssetName)
            {
                Position = preset.position
            },
                                        (Entity) =>
            {
                preset.buildingHex = Entity.GetComponent <PreviewBuildingHex>();
                preset.buildingHex.Show(preset.masterTid);
                uiFormSerialId = GameCore.UI.OpenUIForm(UIFormId.UISubBuildingList, preset);
            });

            // 隱藏主建築
            buildingEntityId = 0;
            if (GameCore.NetData.TryGetSceneObjData(GameCore.NetData.SelfCastle.Guid, out selfCastle))
            {
                (selfCastle as CastleObj).TryGetBuildGuid(preset.posIndex, out buildingEntityId);
            }

            if (buildingEntityId != 0)
            {
                var entity = GameCore.Entity.GetEntity(buildingEntityId);
                entity.Logic.CachedTransform.parent.gameObject.SetActive(false);
            }

            // wait for WorldMapCameraLogicHandler init() finish
            Timing.CallDelayed(0.2f, () =>
            {
                var data = GameCore.WorldMap.GetLogicHandler <WorldMapSystemLogicHandler>(WorldMapSystemLogicHandler.HandlerID).GetCameraSetting();
                GameCore.Event.Fire(this, FocusWorldPosWithLerpValueEventArgs.Create(preset.position + offset, data.focusCastleLerpValue));
            });
        }