Пример #1
0
        public override bool TakeAction()
        {
            PlayerArenaLogic pa = new PlayerArenaLogic();

            pa.SetUser(m_UserId);
            Dictionary <int, int> itemDict;
            int rewardMoney;

            if (!pa.GetLivenessReward(m_RequestPacket.RewardIndex, out itemDict, out rewardMoney))
            {
                ErrorCode = (int)ErrorType.RequireNotMet;
                ErrorInfo = "you can not get this reward";
                return(false);
            }
            PlayerLogic p = new PlayerLogic();

            p.SetUser(m_UserId);
            p.AddMoney(rewardMoney);
            PlayerPackageLogic pp = new PlayerPackageLogic();

            pp.SetUser(m_UserId);
            PBReceivedItems receivedItems;

            pp.GetItems(itemDict, ReceiveItemMethodType.None, out receivedItems);
            m_ResponsePacket.ReceivedItems = receivedItems;
            m_ResponsePacket.RewardId      = m_RequestPacket.RewardIndex;
            m_ResponsePacket.PlayerInfo    = new PBPlayerInfo()
            {
                Id    = p.MyPlayer.Id,
                Money = p.MyPlayer.Money
            };
            return(true);
        }
Пример #2
0
        private void AddMoney(int money)
        {
            PlayerLogic player = new PlayerLogic();

            player.SetUser(m_UserId);
            player.AddMoney(money);
            m_ResponsePacket.PlayerInfo = new PBPlayerInfo()
            {
                Id    = player.MyPlayer.Id,
                Money = player.MyPlayer.Money
            };
        }
Пример #3
0
        private void GetPlayerReward(ItemListItem reward, PlayerLogic p)
        {
            long nextRecoverTime;

            switch ((GiftItemType)reward.Id)
            {
            case GiftItemType.Coin:
                p.AddCoin(reward.Count);
                break;

            case GiftItemType.Energy:
                p.AddEnergy(reward.Count, out nextRecoverTime);
                break;

            case GiftItemType.MeridianEnergy:
                p.AddStarEnergy(reward.Count);
                break;

            case GiftItemType.Money:
                p.AddMoney(reward.Count);
                break;
            }
        }
Пример #4
0
 public void GetItems(IDictionary<int, int> gotItems, ReceiveItemMethodType method, out PBReceivedItems receivedItems)
 {
     GearLogic gear = new GearLogic();
     SoulLogic soul = new SoulLogic();
     Dictionary<int, int> itemDict = new Dictionary<int, int>();
     receivedItems = new PBReceivedItems();
     foreach (var reward in gotItems)
     {
         if (IsGear(reward.Key))
         {
             for (int i = 0; i < reward.Value; i++)
             {
                 int gearId = gear.AddNewGear(reward.Key, m_UserId, method);
                 AddGear(gearId, reward.Key);
                 receivedItems.GearInfo.Add(new PBGearInfo() { Id = gearId, Type = reward.Key, Level = 1 });
             }
         }
         else if (IsItem(reward.Key))
         {
             AddInventory(new ItemListItem() { Id = reward.Key, Count = reward.Value });
             GameUtils.MergeItem(itemDict, reward.Key, reward.Value);
         }
         else if (IsSoul(reward.Key))
         {
             for (int i = 0; i < reward.Value; i++)
             {
                 int soulId = soul.AddNewSoul(reward.Key);
                 AddSoul(soulId, reward.Key);
                 receivedItems.SoulInfo.Add(new PBSoulInfo() { Id = soulId, Type = reward.Key });
             }
         }
         else if (IsEpigraph(reward.Key))
         {
             for (int i = 0; i < reward.Value; i++)
             {
                 ItemListItem item;
                 if (GetNewEpigraph(reward.Key, out item))
                 {
                     receivedItems.EpigraphInfo.Add(new PBEpigraphInfo() { Type = reward.Key, Level = m_Package.Epigraphs[reward.Key] });
                 }
                 else
                 {
                     GameUtils.MergeItem(itemDict, item.Id, item.Count);
                 }
             }
         }
         else
         {
             PlayerLogic p = new PlayerLogic();
             p.SetUser(m_UserId);
             switch ((GiftItemType)reward.Key)
             {
                 case GiftItemType.Coin:
                     p.AddCoin(reward.Value);
                     break;
                 case GiftItemType.Money:
                     p.AddMoney(reward.Value);
                     break;
                 case GiftItemType.Energy:
                     long nextRecoverTime;
                     p.AddEnergy(reward.Value, out nextRecoverTime);
                     break;
                 case GiftItemType.MeridianEnergy:
                     p.AddStarEnergy(reward.Value);
                     break;
                 case GiftItemType.Spirit:
                     p.AddSpirit(reward.Value);
                     break;
                 case GiftItemType.DragonStripeToken:
                     p.AddDragonStripeToken(reward.Value);
                     break;
             }
         }
     }
     foreach (var item in itemDict)
     {
         receivedItems.ItemInfo.Add(new PBItemInfo() { Type = item.Key, Count = m_Package.Inventories[item.Key] });
     }
 }
Пример #5
0
        public override bool TakeAction()
        {
            PlayerMeridianLogic playerMeridian = new PlayerMeridianLogic();

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

            player.SetUser(m_UserId);
            DTMeridian starData = CacheSet.MeridianTable.GetData(m_RequestPacket.StarId);

            if (starData == null)
            {
                ErrorCode = (int)ErrorType.CannotOpenChance;
                ErrorInfo = "wrong star Id";
                return(false);
            }
            if (!player.DeductStarEnergy(starData.CostMeridianEnergy))
            {
                if (!player.DeductMoney(starData.CostMoney))
                {
                    ErrorCode = (int)ErrorType.RequireNotMet;
                    ErrorInfo = "have not enough energy or money";
                    return(false);
                }
            }
            if (!playerMeridian.OpenStar(m_RequestPacket.StarId, starData.Type))
            {
                ErrorCode = (int)ErrorType.RequireNotMet;
                ErrorInfo = "you can not open this Star yet";
                return(false);
            }
            player.AddCoin(starData.RewardCoin);
            player.AddMoney(starData.RewardMoney);
            m_ResponsePacket.PlayerInfo = new PBPlayerInfo()
            {
                Id = m_UserId, Coin = player.MyPlayer.Coin, Money = player.MyPlayer.Money, MeridianEnergy = player.MyPlayer.StarEnergy
            };
            Dictionary <int, int> dropItem = new Dictionary <int, int>();

            dropItem.Add(starData.RewardId, starData.RewardCount);
            PlayerPackageLogic playerPackage = new PlayerPackageLogic();

            playerPackage.SetUser(m_UserId);
            PBReceivedItems receivedItems;

            playerPackage.GetItems(dropItem, ReceiveItemMethodType.None, out receivedItems);
            foreach (var gear in receivedItems.GearInfo)
            {
                m_ResponsePacket.GearInfo.Add(gear);
            }
            foreach (var inventory in receivedItems.ItemInfo)
            {
                m_ResponsePacket.ItemInfo.Add(inventory);
            }
            foreach (var meridian in playerMeridian.MyMeridian.UnlockedMeridians)
            {
                PBMeridianInfo meridianInfo = new PBMeridianInfo()
                {
                    Id = meridian.Key
                };
                meridianInfo.UnlockedStars.AddRange(meridian.Value.UnlockedStars);
                m_ResponsePacket.MeridianInfo.Add(meridianInfo);
            }
            return(true);
        }