// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2021-06-18 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** using System.Collections.Generic; using CodeStage.AntiCheat.ObscuredTypes; namespace G { /// /// 战斗结果 /// public class BattleResult { public bool success; public int chapterId; private ObscuredInt _levelId; public int levelId { get => _levelId; set => _levelId = value; } private ObscuredInt _stageIndex; public int stageIndex { get => _stageIndex; set => _stageIndex = value; } private ObscuredInt _stageIndexMax; public int stageIndexMax { get => _stageIndexMax; set => _stageIndexMax = value; } public int dropBookId { get; set; } /// /// /// public readonly List equipments = new List(); /// /// /// public readonly Dictionary moneyDict = new Dictionary(); /// /// /// public readonly Dictionary propDict = new Dictionary(); /// /// /// public ObscuredInt exp; /// /// /// public ObscuredInt bossKilled; /// /// /// public ObscuredInt minionKilled; public int playerDeath; public int playerHpPercent; public readonly Dictionary skillDict = new Dictionary(); public int lastGrade; public int currGrade; public float lastExpRatio; public float currExpRatio; /// /// /// public Callback2 callback; /// /// 秒 /// public int duration; /// /// /// public string reason; /// /// /// public int source; /// /// /// public int applyStep = -1; /// /// /// public bool isValid { get { return applyStep != -1; } } /// /// /// public int levelType { get { return ItemProxy.Instance.GetStaticItem(levelId).type; } } /// /// 无尽 /// public bool infinity { get { return levelType == 2; } } /// /// /// public bool isSword { get { return levelType == 4; } } /// /// /// public bool isNormal { get { return levelType == 1; } } /// /// 扫荡 /// public bool shortcut { get { return source == 1; } set { source = 1; } } public int coin { get { moneyDict.TryGetValue(Item.Id.kCoin, out var count); return count; } set { moneyDict[Item.Id.kCoin] = value; } } /// /// /// /// /// public void AddMoney(int id, int amount) { if (moneyDict.TryGetValue(id, out var count)) moneyDict[id] = count + amount; else moneyDict[id] = amount; } /// /// /// /// /// public void AddProp(int id, int amount) { if (amount < 100) { if (propDict.TryGetValue(id, out var count)) propDict[id] = count + amount; else propDict[id] = amount; } } public void CastSkill(int skillId) { if (skillDict.TryGetValue(skillId, out var count)) skillDict[skillId] = count + 1; else skillDict[skillId] = 1; } public void Reset() { } /// /// /// private void ApplyResult() { foreach (var money in moneyDict) { MoneyProxy.Instance.AddMoney(money.Key, money.Value); } foreach (var prop in propDict) { var propItem = ItemProxy.Instance.GetStaticItem(prop.Key); if (propItem.isGem) { ItemProxy.Instance.AddGem(prop.Key, prop.Value); } else { ItemProxy.Instance.AddProp(prop.Key, prop.Value); } } PlayerProxy.Instance.AddExp(exp); MissionProxy.Instance.OnEvent(MissionProxy.闯关次数, 1); MissionProxy.Instance.OnEvent(MissionProxy.击杀小怪数量, minionKilled); MissionProxy.Instance.OnEvent(MissionProxy.击杀大怪数量, bossKilled); } public void ApplyResult2() { foreach (var money in moneyDict) { MoneyProxy.Instance.AddMoney(money.Key, money.Value); } foreach (var prop in propDict) { var propItem = ItemProxy.Instance.GetStaticItem(prop.Key); if (propItem.isGem) { ItemProxy.Instance.AddGem(prop.Key, prop.Value); } else { ItemProxy.Instance.AddProp(prop.Key, prop.Value); } } PlayerProxy.Instance.AddExp(exp); } /// /// /// public void ApplyNormal() { if (applyStep >= 1) return; applyStep = 1; //lastGrade = PlayerProxy.Instance.grade; //lastExpRatio = PlayerProxy.Instance.expRatio; ApplyResult(); //currGrade = PlayerProxy.Instance.grade; //currExpRatio = PlayerProxy.Instance.expRatio; } /// /// /// /// public bool ApplyTreble(IList rewards) { if (applyStep >= 2) return false; applyStep = 2; MoneyProxy.Instance.AddCoin(coin * 2); rewards.Add(new Item.ItemInfo { id = Item.Id.kCoin, count = coin * 3, }); foreach (var equipment in equipments) { BagProxy.Instance.NewEquipment(equipment.itemId); BagProxy.Instance.NewEquipment(equipment.itemId); rewards.Add(new Item.ItemInfo { id = equipment.itemId, count = 3, }); } return true; } /// /// /// /// public bool ApplyDouble(IList rewards) { if (applyStep >= 2) return false; applyStep = 2; ApplyResult(); foreach (var equipment in equipments) { BagProxy.Instance.NewEquipment(equipment.itemId); rewards.Add(new Item.ItemInfo { id = equipment.itemId, count = 2, }); } rewards.Add(new Item.ItemInfo { id = Item.Id.kCoin, count = coin * 2, }); return true; } public bool ApplyMultiple(IList rewards, int multiple) { multiple = UnityEngine.Mathf.Clamp(multiple, 1, 10); MoneyProxy.Instance.AddCoin(coin * 2); rewards.Add(new Item.ItemInfo { id = Item.Id.kCoin, count = coin * 3, }); foreach (var equipment in equipments) { for (int i = 0; i < multiple; i++) { BagProxy.Instance.NewEquipment(equipment.itemId); } rewards.Add(new Item.ItemInfo { id = equipment.itemId, count = multiple, }); } return true; } } }