public int AddNewGear(int gearTypeId, int userId, ReceiveItemMethodType method) { m_Gear = new Gears(); m_Gear.Id = (int)CacheSet.GearCache.GetNextNo(); m_Gear.TypeId = gearTypeId; m_Gear.Level = 1; m_Gear.StrengthenLevel = 0; CacheSet.GearCache.Add(m_Gear); PlayerAchievementLogic.GetInstance(userId).UpdateAchievement(AchievementType.GearQuality, m_Gear.Quality); AnnouncementLogic.PushReceiveGearAnnouncement(userId, method, m_Gear.TypeId); return(m_Gear.Id); }
public override bool TakeAction() { PlayerChanceLogic pc = new PlayerChanceLogic(); pc.SetUserAndType(m_UserId, m_RequestPacket.ChanceType); PlayerPackageLogic pp = new PlayerPackageLogic(); pp.SetUser(m_UserId); Dictionary <int, int> dropDict = new Dictionary <int, int>(); if (!pp.CheckPackageSlot(dropDict)) { ErrorCode = (int)ErrorType.PackageSlotFull; ErrorInfo = "package is full"; return(false); } var items = pc.OpenAllChance(); if (items == null) { ErrorCode = (int)ErrorType.CannotOpenChance; ErrorInfo = "you can not open this"; return(false); } m_ResponsePacket.ChanceType = m_RequestPacket.ChanceType; PlayerLogic p = new PlayerLogic(); p.SetUser(m_UserId); m_ResponsePacket.PlayerInfo = new PBPlayerInfo() { Id = p.MyPlayer.Id, Coin = p.MyPlayer.Coin, Money = p.MyPlayer.Money, }; foreach (var iteminfo in items) { m_ResponsePacket.OpenedIndex.Add(iteminfo.Key); m_ResponsePacket.OpenedGoodInfo.Add(new PBItemInfo() { Type = iteminfo.Value.ItemId, Count = iteminfo.Value.ItemCount }); GetItems(iteminfo.Value); } ReceiveItemMethodType type = m_RequestPacket.ChanceType == (int)ChanceType.Money ? ReceiveItemMethodType.CoinChance : ReceiveItemMethodType.MoneyChance; PBReceivedItems receivedItems; pp.GetItems(m_DropItems, type, out receivedItems); m_ResponsePacket.ReceivedItems = receivedItems; return(true); }
public static void PushReceiveHeroAnnouncement(int playerId, ReceiveItemMethodType pathType, int heroType) { if (pathType == ReceiveItemMethodType.None) { return; } LCPushSystemAnnouncement packet = new LCPushSystemAnnouncement(); packet.AnnouncementId = (int)AnnounceType.ReceiveHero; packet.Sender = GetPlayerInfo(playerId); packet.Params.Add("`ReceiveItemMethod," + ((int)pathType).ToString() + "`"); packet.Params.Add("`HeroName," + heroType.ToString() + "`"); PushAnnouncement(packet); }
public static void PushReceiveGearAnnouncement(int playerId, ReceiveItemMethodType pathType, int gearType) { if (pathType == ReceiveItemMethodType.None) { return; } if (CacheSet.GearTable.GetData(gearType).Quality < (int)GearQuality.Orange) { return; } LCPushSystemAnnouncement packet = new LCPushSystemAnnouncement(); packet.AnnouncementId = (int)AnnounceType.ReceiveGear; packet.Sender = GetPlayerInfo(playerId); packet.Params.Add("`ReceiveItemMethod," + ((int)pathType).ToString() + "`"); packet.Params.Add("`GearName," + gearType.ToString() + "`"); PushAnnouncement(packet); }
public ItemListItem AddNewHero(int heroId, ReceiveItemMethodType method = ReceiveItemMethodType.None) { Hero playerHero; var HeroData = CacheSet.HeroTable.GetData(heroId); if (m_MyHeros.Heros.TryGetValue(heroId, out playerHero)) { int itemId = HeroData.StarLevelUpItemId; ItemListItem item = new ItemListItem() { Id = itemId, Count = GameConfigs.GetInt("Hero_Piece_Count_For_Star_Level_" + HeroData.DefaultStarLevel, 10) }; return(item); } else { Hero hero = new Hero(); int star = HeroData.DefaultStarLevel;//TODO read config hero.HeroType = heroId; hero.HeroExp = 0; hero.HeroLv = 1; hero.HeroStarLevel = star; hero.ConsciousnessLevel = 0; hero.ElevationLevel = 0; m_HeroId = heroId; hero.SkillLevels.AddRange(new int[] { 1, 1, 1, 1, 1, 0, 0, 0, 0, 1 }); hero.SkillExps.AddRange(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }); m_MyHeros.ModifyLocked(() => { m_MyHeros.Heros[heroId] = hero; m_Hero = m_MyHeros.Heros[heroId]; RefreshMight(); }); PlayerAchievementLogic.GetInstance(m_UserId).UpdateAchievement(AchievementType.HeroCount, MyHeros.Heros.Count); AnnouncementLogic.PushReceiveHeroAnnouncement(m_UserId, method, hero.HeroType); } return(null); }
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] }); } }