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); }
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); }
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); }