public static async Task<HttpResponseMessage> BattlePostAsync( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "battles")]HttpRequestMessage req, [Table("PredictedInfo")] IQueryable<PredictedInfo> predictedInfo, [Table("Tags")] IQueryable<Tag> tags, [Table("BattleResult")]ICollector<BattleResultInfo> outBattleResultTable, TraceWriter log) { dynamic data = await req.Content.ReadAsAsync<object>(); string nameX = data.nameX; string nameY = data.nameY; var infoX = predictedInfo.Where(x => x.PartitionKey == "Upload" && x.RowKey == nameX).First(); var infoY = predictedInfo.Where(x => x.PartitionKey == "Upload" && x.RowKey == nameY).First(); var unitX = BattleLogic.AnalyzeParameter(infoX, tags.ToList()); var unitY = BattleLogic.AnalyzeParameter(infoY, tags.ToList()); var imageX = ImageInfo.FromNameAndResult(nameX, infoX); var imageY = ImageInfo.FromNameAndResult(nameY, infoY); var invertedTicks = string.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks); var resultId = invertedTicks + "-" + Guid.NewGuid(); log.Info(JsonConvert.SerializeObject(unitX)); log.Info(JsonConvert.SerializeObject(unitY)); var result = BattleLogic.Battle(unitX, unitY); log.Info(JsonConvert.SerializeObject(result)); var resultInfo = new BattleResultInfo() { PartitionKey = nameX, RevFlag = false, ThumbnailUrlX = imageX.ThumbnailUrl, ThumbnailUrlY = imageY.ThumbnailUrl, RowKey = resultId, Result = result }; outBattleResultTable.Add(resultInfo); // 検索の便宜上、対戦相手側のキーをパーティションとしたレコードを生成する // XXX 効果検証(有効ではない可能性がある) var resultInfoR = new BattleResultInfo() { PartitionKey = nameY, RevFlag = true, ThumbnailUrlX = imageX.ThumbnailUrl, ThumbnailUrlY = imageY.ThumbnailUrl, RowKey = resultId, Result = result }; outBattleResultTable.Add(resultInfoR); return req.CreateJsonResponse(HttpStatusCode.OK, new { ResultId = resultInfo.RowKey }); }
public override void OnOpenWindow() { BattleResultInfo data = PVEManager.Instance.BattleResult; for (int i = 0; i < 3; ++i) { if (i >= data.star) { _imgStar[i].sprite = _grayStar; } } if (_txtLevel != null) { _txtLevel.text = "Lv " + UserManager.Instance.Level; } _txtExp.text = "x" + data.addPlayerExp; _txtMoney.text = data.addMoney.ToString(); for (int i = 0; i < _heros.Length; ++i) { if (i < data.heroInfo.Count) { BattleResultHeroInfo heroInfo = data.heroInfo[i]; _heros[i].SetInfo(heroInfo.heroID, heroInfo.addExp); } else { _heros[i].gameObject.SetActive(false); } } for (int i = 0; i < _items.Length; ++i) { if (i < data.itemInfo.Count) { ItemInfo itemInfo = data.itemInfo[i]; _items[i].SetInfo(itemInfo.ConfigID, itemInfo.Number); } else { _items[i].gameObject.SetActive(false); } } UpdateClientData(); }
public void SetInfo(BattleResultInfo result, int index) { for (int i = 0; i < _itemWidget.Length; ++i) { SimpleItemWidget itemWidget = _itemWidget[i]; if (i < result.itemInfo.Count) { ItemInfo itemInfo = result.itemInfo[i]; itemWidget.SetInfo(itemInfo.ConfigID, itemInfo.Number); } else { itemWidget.gameObject.SetActive(false); } } _txtPlayerExp.text = "x" + result.addPlayerExp.ToString(); _txtMoney.text = result.addMoney.ToString(); _txtTitle.text = string.Format(Str.Get("UI_PVE_QUICK_FIGHT_RESULT_TITLE"), index + 1); }
public override void OnOpenWindow() { if (PVEManager.Instance.QuickFightResult.Count <= 0) { return; } BattleResultInfo result = PVEManager.Instance.QuickFightResult[0]; _txtMoney.text = result.addMoney.ToString(); _txtPlayerExp.text = "x" + result.addPlayerExp.ToString(); for (int i = 0; i < _itemWidget.Length; ++i) { SimpleItemWidget itemWidget = _itemWidget[i]; if (i >= result.itemInfo.Count) { itemWidget.gameObject.SetActive(false); } else { ItemInfo itemInfo = result.itemInfo[i]; itemWidget.SetInfo(itemInfo.ConfigID, itemInfo.Number); } } for (int i = 0; i < _itemWidgetExtra.Length; ++i) { SimpleItemWidget itemWidget = _itemWidgetExtra[i]; itemWidget.gameObject.SetActive(false); // if (i >= result.itemInfo.Count) { // itemWidget.gameObject.SetActive(false); // } else { // ItemInfo itemInfo = result.itemInfo[i]; // itemWidget.SetInfo(itemInfo.ConfigID, itemInfo.Number); // } } }
private void OnMsgMopUpFuben(byte[] buffer) { MopUpResult ret = Net.Deserialize <MopUpResult>(buffer); if (!Net.CheckErrorCode(ret.errorCode, eCommand.MOP_UP_FUBEN)) { return; } // 添加奖励 QuickFightResult.Clear(); MissionConstConfig cfg = MissionConstConfigLoader.GetConfig(CurrentSelectLevelID); if (cfg == null) { return; } List <ItemInfo> list = new List <ItemInfo>(); int awardExp = 0; int awardMoney = 0; foreach (var item in ret.awardCollections) { BattleResultInfo info = new BattleResultInfo(); info.addPlayerExp = item.awdExp; awardExp += item.awdExp; foreach (var itemData in item.awardItems) { ItemInfo itemInfo = new ItemInfo(); itemInfo.Deserialize(itemData); Debug.Log(itemInfo.ConfigID); if (itemInfo.ConfigID == GameConfig.ITEM_CONFIG_ID_MONEY) { info.addMoney += itemInfo.Number; awardMoney += itemInfo.Number; } else if (itemInfo.ConfigID == GameConfig.ITEM_CONFIG_ID_WOOD) { } else if (itemInfo.ConfigID == GameConfig.ITEM_CONFIG_ID_STONE) { } else if (itemInfo.ConfigID == GameConfig.ITEM_CONFIG_ID_GOLD) { } else { info.itemInfo.Add(itemInfo); list.Add(itemInfo); } } // 减少体力消耗 UserManager.Instance.SP = Mathf.Max(0, UserManager.Instance.SP - cfg.StaminaCost); QuickFightResult.Add(info); } LevelInfo levelInfo = GetLevelInfo(CurrentSelectLevelID); if (levelInfo != null) { levelInfo.fightCount += QuickFightResult.Count; } // 打开界面显示结果 if (QuickFightResult.Count > 1) { // 扫荡10次的结果 UIManager.Instance.OpenWindow <UIPVEQuickFight10ResultView>(); } else { // 扫荡1次 UIManager.Instance.OpenWindow <UIPVEQuickFightResultView>(); } UserManager.Instance.AddItem(list, true); UserManager.Instance.AddMoney(awardMoney, PriceType.MONEY); UserManager.Instance.OnAddUserExp(awardExp); // 刷新体力和金钱 EventDispatcher.TriggerEvent(EventID.EVENT_UI_REFRESH_SP); UIManager.Instance.RefreshWindow <UINewPVEEntranceView>(); }
// 一场战斗胜利,更新level中的星级数据,并且更新最新关卡 public void OnBattleResult(PBattleReport data) { if (data.pos == null) { Log.Error("OnBattleResult error, PBattleReport 没有设置 data.pos"); return; } int levelID = data.pos.x; MissionConstConfig cfg = MissionConstConfigLoader.GetConfig(levelID); if (cfg == null) { return; } UserManager.Instance.SP = Mathf.Max(0, UserManager.Instance.SP - cfg.StaminaCost); bool isAttacker = UserManager.Instance.EntityID == data.attackerId; if (isAttacker) { if (data.winner == eBattleSide.SIDE_DEFENSER) { // 输了 UIManager.Instance.OpenWindow <UIPVEBattleResultFailView>(); return; } } else { if (data.winner == eBattleSide.SIDE_ATTACKER) { // 输了 UIManager.Instance.OpenWindow <UIPVEBattleResultFailView>(); return; } } // 赢了 LevelInfo info = GetLevelInfo(levelID); if (info != null) { info.star = data.star; ++info.fightCount; } else { AddLevelInfo(levelID, cfg.TimesLimit > 0 ? cfg.TimesLimit - 1 : 0, data.star); } ChapterType chapterType = (ChapterType)cfg.MissionDegree; if (chapterType == ChapterType.NORMAL) { LastLevelID = Mathf.Max(LastLevelID, levelID); int normalLastLevelID = GetLastLevelID(ChapterType.NORMAL); // 最后一个关卡打完后,自动跳到下一个 if (levelID == normalLastLevelID) { CurrentSelectLevelID = GetNextLevel(levelID, chapterType); } } else if (chapterType == ChapterType.ELITE) { LastEliteLevelID = Mathf.Max(LastEliteLevelID, levelID); int eliteLastLevelID = GetLastLevelID(ChapterType.ELITE); // 最后一个关卡打完后,自动跳到下一个 if (levelID == eliteLastLevelID) { CurrentSelectLevelID = GetNextLevel(levelID, chapterType); } } // 刷新副本界面 UIManager.Instance.RefreshWindow <UINewPVEEntranceView>(); // 战斗结果 BattleResult = new BattleResultInfo(); BattleResult.addPlayerExp = data.awdExp; BattleResult.star = data.star; foreach (var item in data.awardPoits) { if (item.roleType == eRoleType.ROLE_LORD) { } else if (item.roleType == eRoleType.ROLE_HERO) { BattleResultHeroInfo heroInfo = new BattleResultHeroInfo(); heroInfo.heroID = item.geter; heroInfo.addExp = item.awExp; BattleResult.heroInfo.Add(heroInfo); } foreach (var item2 in item.awardItems) { if (item2.type == eItem.CURRENCY) { // 金钱 BattleResult.addMoney = item2.num; } else { ItemInfo itemInfo = new ItemInfo(); itemInfo.Deserialize(item2); BattleResult.itemInfo.Add(itemInfo); } } } UIManager.Instance.OpenWindow <UIPVEBattleResultView>(); }