public override bool TakeAction() { // TODO: Add code here. GearLogic gearlogic = new GearLogic(); gearlogic.SetGear(m_RequestPacket.GearId); PlayerLogic player = new PlayerLogic(); player.SetUser(m_UserId); if (gearlogic.MyGear.Level >= player.MyPlayer.Level) { ErrorCode = (int)ErrorType.CannotOpenChance; ErrorInfo = "Can not upgrade,gear reached max level."; return(false); } int targetLevel; if (m_RequestPacket.IsUpToMax) { targetLevel = player.MyPlayer.Level; } else { targetLevel = gearlogic.MyGear.Level + 1; } int totalcost = gearlogic.GetLevelUpCost(targetLevel); if (!player.DeductCoin(totalcost)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "Can not upgrade, coin not enough."; return(false); } gearlogic.GearLevelUp(targetLevel, m_UserId); if (m_RequestPacket.HeroType > 0) { PlayerHeroLogic ph = new PlayerHeroLogic(); ph.SetUser(m_UserId).SetHero(m_RequestPacket.HeroType); ph.RefreshMight(); var heroInfo = ph.GetHeroInfo(); m_ResponsePacket.HeroInfo = new PBLobbyHeroInfo() { Type = heroInfo.HeroType, Might = heroInfo.Might }; } m_ResponsePacket.LevelUpedGear = new PBGearInfo() { Id = m_RequestPacket.GearId, Level = gearlogic.MyGear.Level }; m_ResponsePacket.PlayerInfo = new PBPlayerInfo() { Id = m_UserId, Coin = player.MyPlayer.Coin }; return(true); }
public Dictionary <int, DropItem> OpenAllChance() { Dictionary <int, DropItem> dropItems = new Dictionary <int, DropItem>(); var dataRow = CacheSet.ChanceCostTable.GetData(m_Chance.OpenedChanceRewards.Count + 1); if (dataRow == null) { return(null); } PlayerLogic p = new PlayerLogic(); p.SetUser(m_UserId); switch (m_Type) { case ChanceType.Coin: if (!p.DeductCoin(dataRow.CoinCostAll)) { return(null); } AnnouncementLogic.PushOpenTenCoinChanceAnnouncement(m_UserId); break; case ChanceType.Money: if (!p.DeductMoney(dataRow.MoneyCostAll)) { return(null); } AnnouncementLogic.PushOpenTenMoneyChanceAnnouncement(m_UserId); PlayerAchievementLogic.GetInstance(m_UserId).UpdateAchievement(AchievementType.OpenedMoneyChanceCount, m_Chance.UnopenedChanceRewards.Count); break; default: return(null); } int i = 0; foreach (var item in m_Chance.UnopenedChanceRewards) { while (m_Chance.OpenedChanceRewards.ContainsKey(i)) { i++; } m_Chance.OpenedChanceRewards.Add(i, item.Value.Clone() as DropItem); dropItems.Add(i, item.Value); i++; } m_Chance.UnopenedChanceRewards.Clear(); return(dropItems); }
public bool ResetRewards(bool IsFree) { RandomDropLogic random = RandomDropLogic.GetInstance(); PlayerLogic player = new PlayerLogic(); player.SetUser(m_UserId); m_Chance.OpenedChanceRewards.Clear(); m_Chance.UnopenedChanceRewards.Clear(); switch (m_Type) { case ChanceType.Coin: if (!IsFree) { if (!player.DeductCoin(GameConfigs.GetInt("ChanceRefreshCost0"))) { return(false); } } for (int i = GameConsts.Chance.MinCoinChancePackId; i <= GameConsts.Chance.MaxCoinChancePackId; i++) { m_Chance.UnopenedChanceRewards.Add(i, random.GetChanceRewards(i)); } m_Chance.TotalFreeCount = 0; break; case ChanceType.Money: if (!IsFree) { if (!player.DeductMoney(GameConfigs.GetInt("ChanceRefreshCost1"))) { return(false); } } for (int i = GameConsts.Chance.MinMoneyChancePackId; i <= GameConsts.Chance.MaxMoneyChancePackId; i++) { m_Chance.UnopenedChanceRewards.Add(i - GameConsts.Chance.MaxCoinChancePackId, random.GetChanceRewards(i)); } m_Chance.TotalFreeCount = 0; break; default: break; } m_Chance.OpenedChanceRewards.Clear(); return(true); }
public override bool TakeAction() { PlayerHeroLogic ph = new PlayerHeroLogic(); ph.SetUser(m_UserId).SetHero(m_RequestPacket.HeroType); Hero hero = ph.GetHeroInfo(); int skillLevel = hero.SkillLevels[m_RequestPacket.SkillIndex]; DTSkillLevelUp skillData = CacheSet.SkillLevelUpTable.GetData(h => (h.HeroType == m_RequestPacket.HeroType && h.SkillIndex == m_RequestPacket.SkillIndex && h.SkillLevel == skillLevel)); PlayerLogic p = new PlayerLogic(); p.SetUser(m_UserId); if (hero.HeroLv < skillData.RequiresHeroLevel || hero.HeroStarLevel < skillData.RequiresHeroStarLevel) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "require not met"; return(false); } PlayerPackageLogic pp = new PlayerPackageLogic(); pp.SetUser(m_UserId); if (!p.DeductCoin(skillData.CoinCost)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "You do not have enough coin"; return(false); } if (!ph.SkillLevelUp(m_RequestPacket.SkillIndex, skillData.CostEXP)) { ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "You do not have enough exp"; return(false); } m_ResponsePacket.HeroInfo = new PBLobbyHeroInfo() { Type = hero.HeroType, }; m_ResponsePacket.HeroInfo.SkillLevels.AddRange(hero.SkillLevels); m_ResponsePacket.HeroInfo.SkillExps.AddRange(hero.SkillExps); return(true); }
public bool PurchaseItem(int index, int type, int count) { var itemData = m_Shop.ShopItems[index]; if (itemData.ItemType != type || itemData.ItemCount != count || itemData.PurchasedTimes >= 1) { return(false); } PlayerLogic player = new PlayerLogic(); player.SetUser(m_UserId); switch ((GiftItemType)itemData.CurrencyType) { case GiftItemType.Money: if (!player.DeductMoney(itemData.OriginalPrice)) { return(false); } break; case GiftItemType.Coin: if (!player.DeductCoin(itemData.OriginalPrice)) { return(false); } break; case GiftItemType.Spirit: if (!player.DeductSpirit(itemData.OriginalPrice)) { return(false); } break; default: break; } m_Shop.ShopItems[index].PurchasedTimes += 1; return(true); }
public override bool TakeAction() { Transaction t = new Transaction(); PlayerLogic player = new PlayerLogic(); player.SetUser(m_UserId); PlayerPackageLogic package = new PlayerPackageLogic(); package.SetUser(m_UserId); GearLogic gear = new GearLogic(); gear.SetGear(m_RequestPacket.GearId[0]); int quality = CacheSet.GearTable.GetData(gear.MyGear.TypeId).Quality; t.DumpEntity(package.MyPackage); t.DumpEntity(player.MyPlayer); int costCoin = gear.GetComposeCost(quality); if (quality == (int)GearQuality.Orange) { t.RollBack(); ErrorCode = (int)ErrorType.CannotOpenChance; ErrorInfo = "wrong gearId"; return(false); } if (!player.DeductCoin(costCoin)) { t.RollBack(); ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "You don't have enough Coin"; return(false); } foreach (int gearId in m_RequestPacket.GearId) { gear.SetGear(gearId); if (quality != CacheSet.GearTable.GetData(gear.MyGear.TypeId).Quality) { t.RollBack(); ErrorCode = (int)ErrorType.CannotOpenChance; ErrorInfo = "wrong gearId"; return(false); } if (!package.DeductGear(gearId)) { t.RollBack(); ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "You don't have enough Gear"; return(false); } gear.RemoveGear(); } int position = 0; if (m_RequestPacket.HasItemId && m_RequestPacket.ItemId != 0) { if (!package.DeductInventory(new ItemListItem() { Id = m_RequestPacket.ItemId, Count = 1 })) { t.RollBack(); ErrorCode = (int)ErrorType.RequireNotMet; ErrorInfo = "You don't have enough Item"; return(false); } position = int.Parse(CacheSet.ItemTable.GetData(m_RequestPacket.ItemId).FunctionParams); m_ResponsePacket.ItemInfo = new PBItemInfo() { Type = m_RequestPacket.ItemId, Count = package.MyPackage.Inventories[m_RequestPacket.ItemId] }; } m_ResponsePacket.PlayerInfo = new PBPlayerInfo() { Id = player.MyPlayer.Id, Coin = player.MyPlayer.Coin }; m_ResponsePacket.RemovedGears.AddRange(m_RequestPacket.GearId); Gears newGear = gear.GetComposeResult(quality, position, m_UserId); if (newGear == null) { return(true); } package.AddGear(newGear.Id, newGear.TypeId); m_ResponsePacket.NewGear = new PBGearInfo() { Id = newGear.Id, Type = newGear.TypeId, Level = newGear.Level }; return(true); }
public DropItem OpenChance(int index, bool isFree) { if (isFree) { if (DateTime.UtcNow.Ticks < m_Chance.NextFreeTime) { return(null); } switch (m_Type) { case ChanceType.Coin: PlayerCoinChance coinChance = m_Chance as PlayerCoinChance; if (coinChance.TotalFreeCount >= GameConsts.Chance.MaxFreeCountForCoinChance) { return(null); } coinChance.TotalFreeCount += 1; m_Chance.NextFreeTime = DateTime.UtcNow.AddSeconds(GameConsts.Chance.FreeCoinChanceCDSeconds).Ticks; break; case ChanceType.Money: m_Chance.NextFreeTime = DateTime.UtcNow.AddSeconds(GameConsts.Chance.FreeMoneyChanceCDSeconds).Ticks; PlayerAchievementLogic.GetInstance(m_UserId).UpdateAchievement(AchievementType.OpenedMoneyChanceCount, 1); break; default: return(null); } } else { var dataRow = CacheSet.ChanceCostTable.GetData(m_Chance.OpenedChanceRewards.Count + 1); PlayerLogic p = new PlayerLogic(); p.SetUser(m_UserId); switch (m_Type) { case ChanceType.Coin: if (!p.DeductCoin(dataRow.CoinCost)) { return(null); } break; case ChanceType.Money: if (!p.DeductMoney(dataRow.MoneyCost)) { return(null); } PlayerAchievementLogic.GetInstance(m_UserId).UpdateAchievement(AchievementType.OpenedMoneyChanceCount, 1); break; default: return(null); } } RandomDropLogic random = RandomDropLogic.GetInstance(); int id = random.OpenChanceBox(m_Chance.UnopenedChanceRewards); DropItem di = m_Chance.UnopenedChanceRewards[id]; try { m_Chance.OpenedChanceRewards.Add(index, di.Clone() as DropItem); } catch { return(null); } m_Chance.UnopenedChanceRewards.Remove(id); return(di); }