Пример #1
0
        public override bool TakeAction()
        {
            int deductEnergy = PlayerInstanceLogic.GetInstanceEnergy(m_RequestPacket.InstanceType);
            PlayerInstanceLogic playerInstance = new PlayerInstanceLogic();

            playerInstance.SetUser(m_UserId);
            InstanceProgressLogic instanceProgress = new InstanceProgressLogic();

            instanceProgress.SetUser(m_UserId);
            PlayerLogic player = new PlayerLogic();

            player.SetUser(m_UserId);
            long nextRecoverTime;

            if (playerInstance.MyInstance != null)
            {
                playerInstance.LeaveInstance();
            }
            if (!player.DeductEnergy(deductEnergy, out nextRecoverTime))
            {
                ErrorCode = (int)ErrorType.EnergyNotEnough;
                ErrorInfo = "Energy not Enough";
                return(false);
            }
            var instanceData = CacheSet.InstanceTable.GetData(m_RequestPacket.InstanceType);

            if (GameConfigs.GetInt("Need_Check_Instance_Prerequisite", 1) > 0 && (instanceData.PrerequisitePlayerLevel > player.MyPlayer.Level || (instanceData.PrerequisiteInstanceId > 0 && !instanceProgress.IsInstanceCompleted(instanceData.PrerequisiteInstanceId))))
            {
                ErrorCode = (int)ErrorType.RequireNotMet;
                ErrorInfo = "Pre-instance is not completed";
                return(false);
            }
            m_ResponsePacket.InstanceType = m_RequestPacket.InstanceType;
            PBPlayerInfo playerInfo = new PBPlayerInfo();

            playerInfo.Id     = player.MyPlayer.Id;
            playerInfo.Energy = player.MyPlayer.Energy;
            playerInfo.NextEnergyRecoveryTime = nextRecoverTime;
            m_ResponsePacket.PlayerInfo       = playerInfo;
            var dropInfo = playerInstance.EnterInstance(m_RequestPacket.InstanceType);

            if (dropInfo == null)
            {
                ErrorCode = (int)ErrorType.PackageSlotFull;
                ErrorInfo = "Package slot full";
                return(false);
            }
            m_ResponsePacket.DropInfo.AddRange(dropInfo);

            foreach (var item in playerInstance.MyInstance.DropList)
            {
                m_ResponsePacket.ItemInfo.Add(new PBItemInfo()
                {
                    Type  = item.Key,
                    Count = item.Value
                });
            }
            return(true);
        }
Пример #2
0
        public override bool TakeAction()
        {
            PlayerInstanceLogic pi = new PlayerInstanceLogic();

            pi.SetUser(m_UserId);
            pi.LeaveInstance();
            if (!m_RequestPacket.Win)
            {
                m_ResponsePacket.Win          = false;
                m_ResponsePacket.InstanceType = m_RequestPacket.InstanceType;
                return(true);
            }
            PlayerCosmosCrackLogic pcc = new PlayerCosmosCrackLogic().SetUser(m_UserId);

            m_ResponsePacket.RewardLevel = pcc.GetCosmosCrackInstanceInfo().ChosenInstance[m_RequestPacket.InstanceType].RewardLevel;
            var rewards           = pcc.LeaveInstance(m_RequestPacket.InstanceType);
            PlayerPackageLogic pp = new PlayerPackageLogic();

            pp.SetUser(m_UserId);
            PBReceivedItems receivedItems;

            pp.GetItems(rewards, ReceiveItemMethodType.None, out receivedItems);
            m_ResponsePacket.ReceivedItems = receivedItems;
            m_ResponsePacket.Win           = true;
            m_ResponsePacket.InstanceType  = m_RequestPacket.InstanceType;
            PlayerLogic p = new PlayerLogic();

            p.SetUser(m_UserId);
            m_ResponsePacket.PlayerInfo = new PBPlayerInfo()
            {
                Id                = m_UserId,
                Coin              = p.MyPlayer.Coin,
                Money             = p.MyPlayer.Money,
                Energy            = p.MyPlayer.Energy,
                Spirit            = p.MyPlayer.Spirit,
                MeridianEnergy    = p.MyPlayer.StarEnergy,
                DragonStripeToken = p.MyPlayer.DragonStripeToken
            };
            return(true);
        }
Пример #3
0
        public override bool TakeAction()
        {
            PlayerInstanceLogic playerinstance = new PlayerInstanceLogic();

            playerinstance.SetUser(m_UserId);
            if (playerinstance.MyInstance == null)
            {
                ErrorCode = (int)ErrorType.PlayerNotInInstance;
                ErrorInfo = "You have not enter instance";
                return(false);
            }
            GetInstanceReward(playerinstance);
            playerinstance.LeaveInstance();
            if (m_RequestPacket.Win)
            {
                InstanceProgressLogic instanceProgress = new InstanceProgressLogic();
                instanceProgress.SetUser(m_UserId);
                instanceProgress.InstanceCompleted(playerinstance.MyInstance.InstanceId, m_RequestPacket.StarCount);
            }
            m_ResponsePacket.Win       = m_RequestPacket.Win;
            m_ResponsePacket.StarCount = m_RequestPacket.StarCount;
            return(true);
        }