public ItemListItem OpenMail(int Id) { if (!m_Mails.Mails.ContainsKey(Id)) { return(null); } if (m_Mails.Mails[Id].ExpireTime < DateTime.UtcNow.Ticks) { return(null); } PlayerPackageLogic pp = new PlayerPackageLogic(); pp.SetUser(m_UserId); ItemListItem reward = new ItemListItem(); reward.Id = m_Mails.Mails[Id].AttachedId; reward.Count = m_Mails.Mails[Id].AttachedCount; if (!pp.CheckPackageSlot(new Dictionary <int, int>() { { reward.Id, reward.Count } })) { return(null); } m_Mails.Mails.Remove(Id); return(reward); }
public override bool TakeAction() { var heroData = CacheSet.HeroTable.GetData(m_RequestPacket.HeroId); PlayerPackageLogic package = new PlayerPackageLogic(); package.SetUser(m_UserId); ItemListItem item = new ItemListItem(); item.Id = heroData.StarLevelUpItemId; item.Count = heroData.StarLevelUpItemCount[0]; if (!package.DeductInventory(item)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "you have not enough item"; return(false); } PlayerHeroLogic ph = new PlayerHeroLogic(); ph.SetUser(m_UserId); ph.AddNewHero(m_RequestPacket.HeroId, ReceiveItemMethodType.HeroPieceCompose); var heroInfo = ph.GetHeroInfo(); m_ResponsePacket.NewHero = new PBLobbyHeroInfo() { Type = heroInfo.HeroType, Level = heroInfo.HeroLv, ElevationLevel = heroInfo.ElevationLevel, ConsciousnessLevel = heroInfo.ConsciousnessLevel, Exp = heroInfo.HeroExp, StarLevel = heroInfo.HeroStarLevel }; return(true); }
public override bool TakeAction() { PlayerPackageLogic pp = new PlayerPackageLogic(); pp.SetUser(m_UserId); SoulLogic soul = new SoulLogic(); soul.SetSoul(m_RequestPacket.Id); int type = soul.MySoul.TypeId; var soulData = CacheSet.SoulTable.GetData(type); if (soulData.UpgradedId == -1) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "This soul can not be upgraded"; return(false); } ItemListItem cost = new ItemListItem(); cost.Id = soulData.StrengthenItemId; cost.Count = soulData.StrengthenItemCount; if (!pp.DeductInventory(cost)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "Not enough item"; return(false); } soul.Upgrade(soulData.UpgradedId, pp); if (m_RequestPacket.HeroType > 0) { PlayerHeroLogic ph = new PlayerHeroLogic(); ph.SetUser(m_UserId).SetHero(m_RequestPacket.HeroType); ph.RefreshMight(); m_ResponsePacket.HeroInfo = new PBLobbyHeroInfo() { Type = m_RequestPacket.HeroType, Might = ph.GetHeroInfo().Might }; } m_ResponsePacket.SoulInfo = new PBSoulInfo() { Id = soul.MySoul.Id, Type = soul.MySoul.TypeId }; m_ResponsePacket.ItemInfo = new PBItemInfo() { Type = cost.Id, Count = pp.MyPackage.Inventories[cost.Id] }; return(true); }
public override bool TakeAction() { PlayerHeroLogic ph = new PlayerHeroLogic(); ph.SetUser(m_UserId).SetHero(m_RequestPacket.HeroId); foreach (var iteminfo in m_RequestPacket.Items) { ItemListItem item = new ItemListItem() { Id = iteminfo.Type, Count = iteminfo.Count }; DTItem itemData = CacheSet.ItemTable.GetData(item.Id); PlayerPackageLogic pp = new PlayerPackageLogic(); pp.SetUser(m_UserId); if (!pp.DeductInventory(item)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "You have not enough item"; return(false); } switch ((ItemFunctions)itemData.FunctionId) { case ItemFunctions.AddHeroExp: ph.AddExp(int.Parse(itemData.FunctionParams) * item.Count); var heroInfo = ph.GetHeroInfo(); m_ResponsePacket.HeroInfo = new PBLobbyHeroInfo() { Type = heroInfo.HeroType, Level = heroInfo.HeroLv, Exp = heroInfo.HeroExp, Might = heroInfo.Might, }; break; case ItemFunctions.HeroPiece: AddSpirit(item.Count); break; default: break; } m_ResponsePacket.ItemInfo.Add(new PBItemInfo() { Type = item.Id, Count = pp.MyPackage.Inventories[item.Id] }); } return(true); }
public bool DeductInventory(ItemListItem item) { if (item.Id == -1) { return true; } if (!m_Package.Inventories.ContainsKey(item.Id) || m_Package.Inventories[item.Id] < item.Count) { return false; } else { m_Package.Inventories[item.Id] -= item.Count; } return true; }
private void AddItem(int itemId, int count) { PlayerPackageLogic pp = new PlayerPackageLogic(); pp.SetUser(m_UserId); ItemListItem item = new ItemListItem(); item.Id = itemId; item.Count = count; pp.AddInventory(item); m_ResponsePacket.ItemInfo = new PBItemInfo() { Type = itemId, Count = pp.MyPackage.Inventories[itemId] }; }
public override bool TakeAction() { PlayerPackageLogic pp = new PlayerPackageLogic(); pp.SetUser(m_UserId); PlayerLogic player = new PlayerLogic(); player.SetUser(m_UserId); int totalCoin = 0; foreach (var item in m_RequestPacket.SoldItems) { ItemListItem tmpItem = new ItemListItem() { Id = item.Type, Count = item.Count }; if (!pp.DeductInventory(tmpItem)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "You have not enough item"; return(false); } DTItem itemData = CacheSet.ItemTable.GetData(item.Type); totalCoin += item.Count * itemData.Price; m_ResponsePacket.ItemInfo.Add(item); } foreach (var gear in m_RequestPacket.SoldGears) { if (!pp.DeductGear(gear.Id)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "You have not this gear"; return(false); } DTGear gearData = CacheSet.GearTable.GetData(gear.Type); totalCoin += gearData.Price; m_ResponsePacket.GearInfo.Add(gear); } player.AddCoin(totalCoin); m_ResponsePacket.PlayerInfo = new PBPlayerInfo() { Id = player.MyPlayer.Id, Coin = player.MyPlayer.Coin }; return(true); }
public override bool TakeAction() { var heroData = CacheSet.HeroTable.GetData(m_RequestPacket.HeroType); ItemListItem composeItem = new ItemListItem() { Id = heroData.StarLevelUpItemId, Count = GameConfigs.GetInt("Pieces_Per_Hero", 10) }; PlayerPackageLogic pp = new PlayerPackageLogic(); pp.SetUser(m_UserId); if (!pp.DeductInventory(composeItem)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "You have not enough pieces"; return(false); } PlayerHeroLogic ph = new PlayerHeroLogic(); ph.SetUser(m_UserId); if (ph.AddNewHero(m_RequestPacket.HeroType, ReceiveItemMethodType.HeroPieceCompose) != null) { ErrorCode = (int)ErrorType.CannotOpenChance; ErrorInfo = "You have already got this hero"; return(false); } m_ResponsePacket.HeroPieceItem = new PBItemInfo() { Type = composeItem.Id, Count = pp.MyPackage.Inventories[composeItem.Id] }; Hero newHero = ph.GetHeroInfo(); m_ResponsePacket.NewHero = new PBLobbyHeroInfo() { Type = m_RequestPacket.HeroType, Level = newHero.HeroLv, Exp = newHero.HeroExp, ElevationLevel = newHero.ElevationLevel, ConsciousnessLevel = newHero.ConsciousnessLevel, StarLevel = newHero.HeroStarLevel }; m_ResponsePacket.NewHero.SkillLevels.AddRange(newHero.SkillLevels); return(true); }
public bool GetNewEpigraph(int type, out ItemListItem item) { item = null; PlayerEpigraphLogic pe = new PlayerEpigraphLogic(); pe.SetUser(m_UserId); if (m_Package.Epigraphs.ContainsKey(type) || pe.HasEpigraph(type)) { DTEpigraph dataRow = CacheSet.EpigraphTable.GetData(type); item = new ItemListItem() { Id = dataRow.PieceId, Count = dataRow.PieceCount }; AddInventory(item); return false; } else { AddEpigraph(type, 1); return true; } }
public override bool TakeAction() { DTHero heroData = CacheSet.HeroTable.GetData(m_RequestPacket.HeroType); PlayerHeroLogic playerHero = new PlayerHeroLogic(); playerHero.SetUser(m_UserId).SetHero(m_RequestPacket.HeroType); if (!playerHero.DataCheck()) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "wrong HeroId"; return(false); } Hero myHero = playerHero.GetHeroInfo(); PlayerPackageLogic package = new PlayerPackageLogic(); package.SetUser(m_UserId); ItemListItem item = new ItemListItem(); item.Id = heroData.StarLevelUpItemId; item.Count = heroData.StarLevelUpItemCount[myHero.HeroStarLevel]; if (!package.DeductInventory(item)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "not enough piece"; return(false); } playerHero.StarLevelUp(); myHero = playerHero.GetHeroInfo(); m_ResponsePacket.LobbyHeroInfo = new PBLobbyHeroInfo() { Type = m_RequestPacket.HeroType, StarLevel = myHero.HeroStarLevel, Might = myHero.Might, }; m_ResponsePacket.ItemInfo = new PBItemInfo() { Type = item.Id, Count = package.MyPackage.Inventories[item.Id] }; return(true); }
public void AddInventory(ItemListItem item) { if (m_Package.Inventories.ContainsKey(item.Id)) { m_Package.Inventories[item.Id] += item.Count; if (m_Package.Inventories[item.Id] > GameConfigs.GetInt("Inventory_Item_Max_Count", 9999)) { int count = m_Package.Inventories[item.Id] - GameConfigs.GetInt("Inventory_Item_Max_Count", 9999); m_Package.Inventories[item.Id] = GameConfigs.GetInt("Inventory_Item_Max_Count", 9999); PlayerMailLogic pm = new PlayerMailLogic(); pm.SetUser(m_UserId); pm.AddNewMail("package full", item.Id, item.Count); pm.SendNotification(); } } else { m_Package.Inventories.Add(item.Id, item.Count); } }
private void GetItems(DropItem item) { if (PlayerPackageLogic.IsItem(item.ItemId)) { var itemData = CacheSet.ItemTable.GetData(item.ItemId); if (itemData == null) { TraceLog.WriteError("Wrong Item ID in drop table : " + item.ItemId.ToString()); } 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); if (piece == null) { Hero newHero = ph.MyHeros.Heros[heroId]; m_ResponsePacket.LobbyHeroInfo.Add(new PBLobbyHeroInfo() { Type = newHero.HeroType, Level = newHero.HeroLv, Exp = newHero.HeroExp, ElevationLevel = newHero.ElevationLevel, ConsciousnessLevel = newHero.ConsciousnessLevel, StarLevel = newHero.HeroStarLevel }); return; } else { AddItem(piece.Id, piece.Count); return; } } AddItem(item.ItemId, item.ItemCount); return; } AddItem(item.ItemId, item.ItemCount); return; }
public int UpgradeEpigraph(int typeId) { if (!m_Package.Epigraphs.ContainsKey(typeId)) { return -1; } int curLevel = m_Package.Epigraphs[typeId]; if (curLevel >= GameConsts.MaxEpigraphLevel) { return -1; } var epigraphData = CacheSet.EpigraphTable.GetData(typeId); ItemListItem cost = new ItemListItem(); cost.Id = epigraphData.PieceId; cost.Count = epigraphData.CostPieceCount[curLevel - 1]; if (!DeductInventory(cost)) { return -1; } m_Package.Epigraphs[typeId] += 1; return cost.Id; }
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); }
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; } }
public override bool TakeAction() { PlayerHeroLogic playerHero = new PlayerHeroLogic(); playerHero.SetUser(m_UserId).SetHero(m_RequestPacket.HeroType); if (!playerHero.DataCheck()) { ErrorCode = (int)ErrorType.CannotOpenChance; ErrorInfo = "wrong HeroId"; return(false); } PlayerPackageLogic package = new PlayerPackageLogic(); package.SetUser(m_UserId); Hero myHero = playerHero.GetHeroInfo(); DTHeroElevationBase heroElevationData = CacheSet.HeroElevationBaseTable.GetData(myHero.ElevationLevel); if (heroElevationData.LevelUpItemId == -1) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "reached max level"; return(false); } ItemListItem item = new ItemListItem() { Id = heroElevationData.LevelUpItemId, Count = heroElevationData.LevelUpItemCount }; if (!package.DeductInventory(item)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "not enough piece"; return(false); } for (int i = 0; i < GameConsts.Hero.ElevationLevelUpGearCount; i++) { if (heroElevationData.LevelUpGearType[i] == -1 || heroElevationData.LevelUpGearMinQuality[i] == -1) { break; } int gearTypeId = 0; if (package.MyPackage.Gears.ContainsKey(m_RequestPacket.GearId[i])) { gearTypeId = package.MyPackage.Gears[m_RequestPacket.GearId[i]]; } else { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "do not have this gear"; return(false); } DTGear gear = CacheSet.GearTable.GetData(gearTypeId); if (gear.Type == heroElevationData.LevelUpGearType[i] && gear.Quality >= heroElevationData.LevelUpGearMinQuality[i]) { package.DeductGear(m_RequestPacket.GearId[i]); } else { ErrorCode = (int)ErrorType.CannotOpenChance; ErrorInfo = "gear" + i.ToString() + " do not match this slot"; return(false); } } playerHero.ElevationLevelUp(); var heroInfo = playerHero.GetHeroInfo(); m_ResponsePacket.LobbyHeroInfo = new PBLobbyHeroInfo() { Type = heroInfo.HeroType, ElevationLevel = heroInfo.ElevationLevel, Might = heroInfo.Might, }; m_ResponsePacket.RemovedGears.AddRange(m_RequestPacket.GearId); m_ResponsePacket.ItemInfo = new PBItemInfo() { Type = item.Id, Count = package.MyPackage.Inventories[item.Id] }; 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; } }