public IEnumerator ApplyPointRankingData(Coroutine coroutine, ActivityCharacterProxy _this,
                                          ApplyPointRankingDataInMessage msg)
 {
     MieShiManager.GetPointRankingData(SceneExtension.GetServerLogicId(msg.Request.ServerId), msg.Request.ActivityId, _this.CharacterId, msg.Response);
     msg.Reply();
     yield break;
 }
 private void TransitionToMainMenu()
 {
     if (!SceneExtension.IsThisSceneActive(SceneExtension.MenuUiSceneName))
     {
         StartCoroutine(SceneExtension.ForceMenuSceneSequence(true));
     }
 }
Exemple #3
0
        //开始创建副本
        public IEnumerator NotifyCreateChangeSceneCoroutine(Coroutine co,
                                                            ObjPlayer Character,
                                                            int scneneId,
                                                            int x,
                                                            int y,
                                                            AsyncReturnValue <ErrorCodes> error)
        {
            //GM命令切换场景,根据合服ID进行
            var serverLogicId = SceneExtension.GetServerLogicId(Character.ServerId);
            var sceneInfo     = new ChangeSceneInfo
            {
                SceneId   = scneneId,
                ServerId  = serverLogicId,
                SceneGuid = 0,
                Type      = (int)eScnenChangeType.Position
            };

            sceneInfo.Guids.Add(Character.ObjId);
            sceneInfo.Pos = new SceneParam();
            sceneInfo.Pos.Param.Add(x);
            sceneInfo.Pos.Param.Add(y);
            Character.BeginChangeScene();
            var msgChgScene = SceneServer.Instance.SceneAgent.SBChangeSceneByTeam(Character.ObjId, sceneInfo);

            yield return(msgChgScene.SendAndWaitUntilDone(co, TimeSpan.FromSeconds(30)));
        }
        public void CheckAvgLevelBuff(SceneManager _this, ObjPlayer objPlayer)
        {
            objPlayer.DeleteBuff(319, eCleanBuffType.TimeOver);
            var serverId = SceneExtension.GetServerLogicId(objPlayer.ServerId);
            var avgLevel = _this.GetAvgLevel(serverId);

            if (avgLevel <= 150)
            {
                return;
            }
            var playerLevel = objPlayer.GetLevel();

            if (playerLevel < _this.minLevel)
            {
                return;
            }
            if (playerLevel + _this.minDev > avgLevel)
            {
                return;
            }
            var a         = (_this.maxExpMul - 2.0f) / (_this.maxDev - _this.minDev);
            var b         = _this.maxExpMul - a * _this.maxDev;
            var buffLevel = ((avgLevel - playerLevel) * a + b);

            if (buffLevel > _this.maxExpMul)
            {
                buffLevel = _this.maxExpMul;
            }
            objPlayer.AddBuff(319, (int)buffLevel * 100, objPlayer);
        }
 public IEnumerator ApplyMieshiHeroLogData(Coroutine coroutine, ActivityCharacterProxy _this,
                                           ApplyMieshiHeroLogDataInMessage msg)
 {
     MieShiManager.ApplyMieshiHeroLogData(SceneExtension.GetServerLogicId(msg.Request.ServerId), msg.Response);
     msg.Reply();
     //var temp = DateTime.FromBinary((long)msg.Response.Datas[0].actiTime);
     yield break;
 }
 public void ButtonPressed(bool multiScene = false)
 {
     if (!SceneExtension.IsThisSceneActive(SceneExtension.MenuUiSceneName))
     {
         return;
     }
     StartCoroutine(multiScene
         ? SceneExtension.LoadMultiSceneSequence(levelName, true)
         : SceneExtension.LoadSingleSceneSequence(levelName, true));
 }
Exemple #7
0
        public static void ReturnToMenu(MenuPageType pageToLoad)
        {
            //Debug.Log("[GM]: ReturnToMenu");
            SceneExtension.TrySwitchToScene(SceneExtension.MenuUiSceneName);
            SceneExtension.UnloadAllScenesExcept(SceneExtension.MenuUiSceneName);
            FindObjectOfType <MenuManager>().Reset();
            var controller = FindObjectOfType <MenuPageController>();

            controller.TurnMenuPageOff(controller.GetCurrentMenuPageType(), pageToLoad);
        }
Exemple #8
0
        private void Initialize()
        {
            Log("Initialize");
#if UNITY_EDITOR
            AudioController.Instance.PlayAudio(AudioType.St01, true, 1f);
#else
            AudioController.Instance.PlayAudio(AudioType.St01);
            StartCoroutine(SceneExtension.ForceMenuSceneSequence());
#endif
        }
Exemple #9
0
 public void OnResume()
 {
     if (!SceneExtension.TrySwitchToScene(lastSceneBuildIndex))
     {
         return;
     }
     _inputController.OnCancelEvent -= OnCancelEventCalled;
     _controller.TurnMenuPageOff(_controller.GetCurrentMenuPageType());
     _isPaused = false;
 }
        public IEnumerator ApplyActivityState(Coroutine co,
                                              ActivityCharacterProxy _this,
                                              ApplyActivityStateInMessage msg)
        {
            var state = WorldBossManager.GetState(SceneExtension.GetServerLogicId(msg.Request.ServerId));

            msg.Response.Data.Add((int)eActivity.WorldBoss, (int)state);
            msg.Reply();
            yield break;
        }
        public IEnumerator ApplyPortraitData(Coroutine coroutine, ActivityCharacterProxy _this,
                                             ApplyPortraitDataInMessage msg)
        {
            PlayerInfoMsg data   = new PlayerInfoMsg();
            ErrorCodes    result = MieShiManager.ApplyPortraitData(SceneExtension.GetServerLogicId(msg.Request.ServerId), ref data);

            msg.Response = data;
            msg.Reply((int)result);
            yield break;
        }
Exemple #12
0
        private void Start()
        {
            ControllerSetup();
            _menuUiCamera    = GetComponentInChildren <Camera>();
            isMainMenuActive = SceneExtension.IsThisSceneActive(SceneExtension.MenuUiSceneName);
            SceneExtension.FinishSceneLoadEvent += OnFinishLoadScene;
            SceneExtension.StartSceneLoadEvent  += OnStartLoadScene;

            ApplyIniSettings();
            _isPaused = false;
        }
Exemple #13
0
 public void ReturnToMenu()
 {
     if (isMainMenuActive)
     {
         return;
     }
     GameManager.HardReset();
     StartCoroutine(SceneExtension.ForceMenuSceneSequence(
                        true, true, true, lastSceneBuildIndex));
     isMainMenuActive = true;
 }
Exemple #14
0
 public void OnPause()
 {
     lastSceneBuildIndex = SceneExtension.GetCurrentSceneBuildIndex();
     if (!SceneExtension.TrySwitchToScene(SceneExtension.MenuUiSceneName))
     {
         return;
     }
     _inputController.OnCancelEvent += OnCancelEventCalled;
     BackToPreviousPage();
     _isPaused = true;
 }
Exemple #15
0
        //开始创建副本
        public IEnumerator AskEnterDungeonByTeamCoroutine(Coroutine co,
                                                          List <ulong> characters,
                                                          int serverId,
                                                          FubenRecord tbFuben,
                                                          ulong sceneGuid)
        {
            PlayerLog.WriteLog((int)LogType.QueueMessage, "NotifyCreateChangeSceneCoroutine  Team={0}",
                               characters.GetDataString());

            //先把进入副本应扣除的材料,扣除掉
            var co1 = CoroutineFactory.NewSubroutine(DeleteDungeonMaterialCoroutine, co, characters, tbFuben);

            if (co1.MoveNext())
            {
                yield return(co1);
            }

            //组队进入副本时,根据合服ID进行
            var serverLogicId = SceneExtension.GetServerLogicId(serverId);
            var sceneInfo     = new ChangeSceneInfo
            {
                SceneId   = tbFuben.SceneId,
                ServerId  = serverLogicId,
                SceneGuid = sceneGuid,
                Type      = (int)eScnenChangeType.EnterDungeon
            };

            sceneInfo.Guids.AddRange(characters);
            if (sceneInfo.Pos == null)
            {
                var param = new SceneParam();
                sceneInfo.Pos = param;
                if (tbFuben.OpenTime[0] != -1)
                {
                    int hour;
                    int min;
                    if (Utils.GetDungeonOpenTime(tbFuben, out hour, out min))
                    {
                        param.Param.Add(hour);
                        param.Param.Add(min);
                    }
                    else
                    {
                        Logger.Warn("NotifyCreateChangeSceneCoroutine can't enter scene {0}", tbFuben.SceneId);
                        yield break;
                    }
                }
            }

            var msgChgScene = TeamServer.Instance.SceneAgent.SBChangeSceneByTeam(characters[0], sceneInfo);

            yield return(msgChgScene.SendAndWaitUntilDone(co, TimeSpan.FromSeconds(30)));
        }
Exemple #16
0
        //战斗结束
        public ErrorCodes BattleOver(int serverId, int occupantId)
        {
            serverId = SceneExtension.GetServerLogicId(serverId);
            AllianceWar war;

            if (!AllianceWarManager.WarDatas.TryGetValue(serverId, out war))
            {
                return(ErrorCodes.ServerID);
            }
            war.BattleOver(occupantId);
            return(ErrorCodes.OK);
        }
Exemple #17
0
        /// <summary>
        ///     团购物品发出去后,给各个服务器发送通知
        ///     对于最高档的物品,通知会发给所有服务器的所有人,否则,就只发给中奖者所在的服务器的所有人
        /// </summary>
        /// <param name="co"></param>
        /// <param name="_this"></param>
        /// <returns></returns>
        private IEnumerator SendChatNotify(Coroutine co, GroupShopOne _this)
        {
            var strs = new List <string>
            {
                _this.mDbData.LuckyName,
                _this.mDbData.LuckyCount.ToString(),
                Utils.AddItemId(_this.mDbData.ItemData.ItemId)
            };
            var exData    = new List <int>(_this.mDbData.ItemData.Exdata);
            var content   = Utils.WrapDictionaryId(300409, strs, exData);
            var chatAgent = TeamServer.Instance.ChatAgent;

            if (GroupShop.TopItems.Contains(_this.mDbData.GroupShopId))
            {
//最高档的奖励,发所有服务器的所有人
                //缓存一下这条消息
                var notifys = GroupShop.DbData.Notifys.Items;
                if (notifys.Count > 20)
                {
                    notifys.RemoveAt(0);
                }
                notifys.Add(content);

                //发送给所有服务器的所有人
                var serverIds = new List <int>();
                Table.ForeachServerName(r =>
                {
                    var serverId = r.LogicID;
                    if (!serverIds.Contains(serverId))
                    {
                        serverIds.Add(serverId);
                    }
                    return(true);
                });
                foreach (var id in serverIds)
                {
                    chatAgent.BroadcastWorldMessage((uint)id, (int)eChatChannel.WishingGroup, 0, string.Empty,
                                                    new ChatMessageContent {
                        Content = content
                    });
                    yield return(TeamServerControl.Instance.Wait(co, TimeSpan.FromSeconds(3)));
                }
            }
            else
            {
//只发本服务器的人
                var serverId = SceneExtension.GetServerLogicId(_this.mDbData.LuckyServerId);
                chatAgent.BroadcastWorldMessage((uint)serverId, (int)eChatChannel.WishingGroup, 0, string.Empty,
                                                new ChatMessageContent {
                    Content = content
                });
            }
        }
        public int ApplyStoreInfo(int serverId, List <StoneItem> info)
        {
            var logicId = SceneExtension.GetServerLogicId(serverId);
            var mgr     = GetBlackStoreManager(logicId);

            if (mgr == null)
            {
                return((int)ErrorCodes.Unknow);
            }
            var result = mgr.ApplyStoreInfo(ref info);

            return(result);
        }
        public int GetStoreItemCount(int serverId, int storeId, ref int itemCount)
        {
            var logicId = SceneExtension.GetServerLogicId(serverId);
            var mgr     = GetBlackStoreManager(logicId);

            if (mgr == null)
            {
                return((int)ErrorCodes.Unknow);
            }
            var result = mgr.GetStoreItemCount(storeId, ref itemCount);

            return(result);
        }
Exemple #20
0
        public void PlayerLeave(ulong characterId)
        {
            var alliance = ServerAllianceManager.GetAllianceByCharacterId(characterId);

            if (alliance == null)
            {
                Logger.Error("In PlayerEnterSuccess(). alliance == null! characterId = {0}", characterId);
                return;
            }
            var serverId = alliance.ServerId;

            serverId = SceneExtension.GetServerLogicId(serverId);
            var war = AllianceWarManager.WarDatas[serverId];

            war.PlayerLeave(characterId, alliance.AllianceId);
        }
Exemple #21
0
    public void OnMouseDrag()
    {
        if (state.CurrentState == State.DISABLED || state.CurrentState == State.READY)
        {
            return;
        }
        if (Input.touchCount > 1)
        {
            return;
        }
        if (SceneExtension.IsAnyTouchOverUI())
        {
            return; // Ignore if touch is over any UI element
        }
        //Debug.Log("DRAG " + gameObject.name + " inputPos: " + Input.mousePosition + "st: " + state.CurrentState.ToString());
        if (state.CurrentState == State.WAITING_TO_DRAG || state.CurrentState == State.DRAGGING)
        {
            Vector3 vpStart = Camera.main.ScreenToViewportPoint(inputStartPosition);
            Vector3 vpNow   = Camera.main.ScreenToViewportPoint(Input.mousePosition);
            if ((vpNow - vpStart).magnitude > MOVE_DIST)
            {
                movingStartLocalPos = transform.localPosition;
                movingVelocity      = Vector3.zero;

                if (VERTICAL_MOVEMENT_ENABLED && Mathf.Abs(vpNow.x - vpStart.x) < VERTICAL_MOVEMENT_WIDTH_TOLERANCE)
                {
                    state.SetState(State.MOVING_VERTICAL);
                }
                else
                {
                    state.SetState(State.MOVING_IN_PLANE);
                }
            }
        }

        if (state.CurrentState == State.MOVING_IN_PLANE)
        {
            // Raycast and set new position
            UpdateMoveInPlane();
        }
        else if (state.CurrentState == State.MOVING_VERTICAL)
        {
            // Raycast and set new position
            UpdateMoveInVertical();
        }
    }
        public int ConsumeStoreItem(int serverId, int storeId, int consumeCount)
        {
            var logicId = SceneExtension.GetServerLogicId(serverId);
            var mgr     = GetBlackStoreManager(logicId);

            if (mgr == null)
            {
                return((int)ErrorCodes.Unknow);
            }
            var result = mgr.ConsumeStoreItem(storeId, consumeCount);

            if (result == (int)ErrorCodes.OK)
            {
                CoroutineFactory.NewCoroutine(mgr.FlushAll).MoveNext();
            }
            return(result);
        }
Exemple #23
0
        private void OnFinishLoadScene(bool b1, bool b2)
        {
            isMainMenuActive = SceneExtension.IsThisSceneActive(SceneExtension.MenuUiSceneName);
            if (isMainMenuActive)
            {
                BackToPreviousPage();
                _eventSystem.SetSelectedGameObject(mainPanelSelectedObj.gameObject);
                mainPanelSelectedObj.OnSelect(null);
            }
            else
            {
                _eventSystem.SetSelectedGameObject(pausePanelSelectedObj.gameObject);
                pausePanelSelectedObj.OnSelect(null);
            }

            _menuUiCamera.gameObject.SetActive(isMainMenuActive);
            isSceneTransitioning = false;
        }
Exemple #24
0
    public void OnMouseUp()
    {
        if (state.CurrentState == State.DISABLED || state.CurrentState == State.READY)
        {
            return;
        }
        if (state.CurrentState >= State.TWO_FINGERS)
        {
            return;
        }
        if (SceneExtension.IsAnyTouchOverUI())
        {
            return; // Ignore if touch is over any UI element
        }
        Debug.Log("furniture UP " + gameObject.name + " st:" + state.ToString());
        if (state.CurrentState == State.WAITING_TO_DRAG)
        {
            // TAPPED
            if (wasSelectedBefore)
            {
                // unselect
                if (worldObjects != null)
                {
                    worldObjects.SelectedObject = null;
                }
            }
            else
            {
                // keep it selected
            }
        }
        else if (state.CurrentState == State.MOVING_IN_PLANE)
        {
            // was moving in plane
        }
        else if (state.CurrentState == State.MOVING_VERTICAL)
        {
            // was moving in vertical
        }

        // Stop tapping/moving
        state.SetState(State.READY);
    }
Exemple #25
0
 public void OnMouseDown()
 {
     //Debug.Log("DOWN PRE First finger " + gameObject.name);
     if (state.CurrentState == State.DISABLED)
     {
         return;
     }
     if (Input.touchCount > 1)
     {
         return;
     }
     if (SceneExtension.IsAnyTouchOverUI())
     {
         return; // Ignore if touch is over any UI element
     }
     Debug.Log("DOWN First finger " + gameObject.name);
     if (state.CurrentState == State.READY)
     {
         // FIRST FINGER
         if (worldObjects != null)
         {
             wasSelectedBefore = (worldObjects.SelectedObject == gameObject);
             // Select it
             worldObjects.SelectedObject = gameObject;
         }
         else
         {
             wasSelectedBefore = true;
         }
         state.SetState(State.WAITING_TO_DRAG);
         inputStartTime     = Time.time;
         inputStartPosition = Input.mousePosition;
         firstFingerId      = -1;
         Debug.Log("furniture DOWN touches:" + Input.touchCount);
         if (Input.touchCount > 0)
         {
             Touch touch = Input.touches[0];
             Debug.Log("furniture DOWN touch id:" + touch.fingerId);
             firstFingerId = touch.fingerId;
         }
     }
 }
Exemple #26
0
        public ErrorCodes AllianceWarBid(ulong guid, int value)
        {
            var alliance = ServerAllianceManager.GetAllianceByCharacterId(guid);

            if (alliance == null)
            {
                return(ErrorCodes.Error_CharacterNoAlliance);
            }
            var allianceId      = alliance.AllianceId;
            var serverId        = alliance.ServerId;
            var logicServerId   = SceneExtension.GetServerLogicId(serverId);
            var allianceManager = ServerAllianceManager.GetAllianceByServer(logicServerId);

            if (allianceManager == null)
            {
                return(ErrorCodes.Error_AllianceState);
            }
            var dbAlliance = allianceManager.GetServerData(serverId);

            if (dbAlliance == null)
            {
                return(ErrorCodes.Error_AllianceState);
            }
            var dbAllianceNew = allianceManager.GetServerData(logicServerId);

            if (dbAllianceNew == null)
            {
                return(ErrorCodes.Error_AllianceState);
            }
            if (allianceId == dbAllianceNew.Occupant)
            {
                return(ErrorCodes.Error_OccupantNoNeedBid);
            }
            var bidDatas = dbAlliance.BidDatas;
            int price;

            bidDatas.TryGetValue(allianceId, out price);
            price += value;
            bidDatas[allianceId] = price;
            return(ErrorCodes.OK);
        }
        private void TryModifyServerScenes(int serverId, int sceneId)
        {
            serverId = SceneExtension.GetServerLogicId(serverId);
            Dictionary <int, int> scenes;

            if (!SpeMonsterManager.ServerValidScenes.TryGetValue(serverId, out scenes))
            {
                scenes = new Dictionary <int, int>();
                SpeMonsterManager.ServerValidScenes.Add(serverId, scenes);
            }
            if (scenes.ContainsKey(sceneId))
            {
                return;
            }
            scenes.Add(sceneId, 0);
            if (SpeMonsterManager.SaveTrigger == null)
            {
                SpeMonsterManager.SaveTrigger = ActivityServerControl.Timer.CreateTrigger(DateTime.Now.AddMinutes(1),
                                                                                          Save);
            }
        }
        //开始创建副本
        private static IEnumerator NotifyCreateChangeSceneCoroutine(Coroutine co,
                                                                    FightQueueScene _this,
                                                                    List <ulong> characters,
                                                                    int serverId)
        {
            //排队创建场景时,根据合服ID进行
            var serverLogicId = SceneExtension.GetServerLogicId(serverId);

            PlayerLog.WriteLog((int)LogType.QueueMessage, "NotifyCreateChangeSceneCoroutine  Team={0}",
                               characters.GetDataString());
            var sceneInfo = new ChangeSceneInfo
            {
                SceneId   = -1,
                ServerId  = serverLogicId,
                SceneGuid = _this.mSceneGuid,
                Type      = (int)eScnenChangeType.EnterDungeon
            };

            sceneInfo.Guids.AddRange(characters);
            var msgChgScene = TeamServer.Instance.SceneAgent.SBChangeSceneByTeam(characters[0], sceneInfo);

            yield return(msgChgScene.SendAndWaitUntilDone(co));

            if (msgChgScene.State != MessageState.Reply)
            {
                yield break;
            }
            if (msgChgScene.Response == 0)
            {
                foreach (var characterGuid in characters)
                {
                    PlayerLog.WriteLog((int)LogType.BattleLog, "SSCharacterEnterBattle   Faild   c={0},s={1}",
                                       characterGuid, _this.mSceneGuid);
                    QueueTeamManager.LeaveScene(characterGuid);
                    QueueSceneManager.LeaveScene(characterGuid, _this.mSceneGuid);
                }
            }
        }
Exemple #29
0
        //
        public void BidOver(AllianceWar _this)
        {
            var am = ServerAllianceManager.GetAllianceByServer(_this.ServerId);

            if (am == null)
            {
                Logger.Error("StartActivity not find GetAllianceByServer!server={0},", _this.ServerId);
                return;
            }
            DBServerAllianceData data;

            if (!am.mDBData.TryGetValue(_this.ServerId, out data))
            {
                Logger.Error("In BidOver() can't find data!");
                return;
            }
            am.BidOver();
            var msgData = new AllianceWarChallengerData();

            foreach (var id in data.Challengers)
            {
                var allliance = ServerAllianceManager.GetAllianceById(id);
                if (allliance == null)
                {
                    Logger.Error("In BidOver(). alliance == null!! id = {0}", id);
                    continue;
                }
                msgData.ChallengerId.Add(id);
                msgData.ChallengerName.Add(allliance.Name);
            }
            _this.SetStatus((int)eAllianceWarState.WaitEnter);

            var sId = SceneExtension.GetServerLogicId(_this.ServerId);

            TeamServer.Instance.TeamAgent.NotifyAllianceWarChallengerData((uint)sId, msgData);
            PlayerLog.WriteLog((ulong)LogType.AllianceWar, "BidOver(), ServerId = {0}, Challengers = {1}",
                               _this.ServerId, data.Challengers.GetDataString());
        }
Exemple #30
0
        private IEnumerator Transition()
        {
            if (sceneToLoad < 0)
            {
                yield break;
            }

            DontDestroyOnLoad(gameObject);

            var buildIndex = SceneExtension.GetCurrentSceneBuildIndex();

            //FindObjectOfType<PlayerController>().enabled = false;
            yield return(SceneExtension.LoadMultiSceneWithBuildIndexSequence(sceneToLoad, true));

            //var player = FindObjectOfType<PlayerController>();
            //var cam = FindObjectOfType<PixelPerfectCamera>();
            //player.enabled = false;
            var otherPortal = GetOtherScenePortal(buildIndex);

            //UpdatePlayerSpawnPosition(otherPortal, player.gameObject, cam.gameObject);
            //player.enabled = true;

            Destroy(gameObject);
        }