public override bool TakeAction() { IList <int> heroes; if (m_RequestPacket.HeroTypes.Count == 0) { HeroTeamLogic ht = new HeroTeamLogic(); ht.SetUser(m_UserId); heroes = ht.GetTeam(); } else { heroes = m_RequestPacket.HeroTypes; } PlayerHeroLogic ph = new PlayerHeroLogic(); ph.SetUser(m_RequestPacket.PlayerId); GearLogic gear = new GearLogic(); SoulLogic soul = new SoulLogic(); foreach (int heroId in heroes) { if (heroId == 0) { continue; } ph.SetHero(heroId); Hero heroInfo = ph.GetHeroInfo(); PBLobbyHeroInfo pbhero = new PBLobbyHeroInfo() { Type = heroInfo.HeroType, Level = heroInfo.HeroLv, ConsciousnessLevel = heroInfo.ConsciousnessLevel, ElevationLevel = heroInfo.ElevationLevel, StarLevel = heroInfo.HeroStarLevel, }; foreach (var equipedGear in heroInfo.Gears) { gear.SetGear(equipedGear.Value); PBGearInfo heroGear = new PBGearInfo() { Id = gear.MyGear.Id, Type = gear.MyGear.TypeId, Level = gear.MyGear.Level, StrengthenLevel = gear.MyGear.StrengthenLevel }; pbhero.GearInfo.Add(heroGear); } foreach (var equipedSoul in heroInfo.Souls) { soul.SetSoul(equipedSoul.Value); PBSoulInfo heroSoul = new PBSoulInfo() { Id = soul.MySoul.Id, Type = soul.MySoul.TypeId }; pbhero.SoulInfo.Add(heroSoul); } m_ResponsePacket.Heroes.Add(pbhero); } m_ResponsePacket.PlayerId = m_RequestPacket.PlayerId; return(true); }
private void GetReward(DropItem item) { PlayerPackageLogic pp = new PlayerPackageLogic(); pp.SetUser(m_UserId); var type = m_RequestPacket.ChanceType == (int)ChanceType.Money ? ReceiveItemMethodType.MoneyChance : ReceiveItemMethodType.CoinChance; if (PlayerPackageLogic.IsItem(item.ItemId)) { m_ResponsePacket.ReceivedItems = new PBReceivedItems(); var itemData = CacheSet.ItemTable.GetData(item.ItemId); if (itemData.FunctionId == (int)ItemFunctions.AddHero) { PlayerHeroLogic ph = new PlayerHeroLogic(); ph.SetUser(m_UserId); int heroId = int.Parse(itemData.FunctionParams); ItemListItem piece = ph.AddNewHero(heroId, type); if (piece == null) { Hero newHero = ph.MyHeros.Heros[heroId]; m_ResponsePacket.LobbyHeroInfo = new PBLobbyHeroInfo() { Type = newHero.HeroType, Level = newHero.HeroLv, Exp = newHero.HeroExp, ElevationLevel = newHero.ElevationLevel, ConsciousnessLevel = newHero.ConsciousnessLevel, StarLevel = newHero.HeroStarLevel }; } else { pp.AddInventory(piece); m_ResponsePacket.ReceivedItems.ItemInfo.Add(new PBItemInfo() { Type = piece.Id, Count = pp.MyPackage.Inventories[piece.Id] }); } } else { pp.AddInventory(new ItemListItem() { Id = item.ItemId, Count = item.ItemCount }); m_ResponsePacket.ReceivedItems.ItemInfo.Add(new PBItemInfo() { Type = item.ItemId, Count = pp.MyPackage.Inventories[item.ItemId] }); } } else { Dictionary <int, int> itemDict = new Dictionary <int, int>(); itemDict.Add(item.ItemId, item.ItemCount); PBReceivedItems receivedItems; pp.GetItems(itemDict, type, out receivedItems); m_ResponsePacket.ReceivedItems = receivedItems; } }