Skip to content

Commit

Permalink
fix dungeon battle type BattleAndRelicReinforce
Browse files Browse the repository at this point in the history
  • Loading branch information
moonheart committed Sep 11, 2023
1 parent af52757 commit 95caf88
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 28 deletions.
4 changes: 4 additions & 0 deletions MementoMori/Extensions/UserSyncDataExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ public static UserCharacterInfo GetUserCharacterInfoByUserCharacterDtoInfo(this
public static UserCharacterInfo GetUserCharacterInfoByUserCharacterGuid(this UserSyncData userSyncData, string userCharacterGuid)
{
UserCharacterDtoInfo userCharacterDtoInfoByGuid = userSyncData.GetUserCharacterDtoInfoByGuid(userCharacterGuid);
if (userCharacterDtoInfoByGuid == null)
{
return null;
}
return userSyncData.GetUserCharacterInfoByUserCharacterDtoInfo(userCharacterDtoInfoByGuid);
}

Expand Down
97 changes: 69 additions & 28 deletions MementoMori/MementoMoriFuncs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.Xml;
using MementoMori.Exceptions;
using MementoMori.Extensions;
using MementoMori.Ortega.Common.Utils;
using MementoMori.Ortega.Share;
using MementoMori.Ortega.Share.Data;
using MementoMori.Ortega.Share.Data.ApiInterface;
Expand Down Expand Up @@ -116,7 +117,7 @@ public MementoMoriFuncs(IOptions<AuthOption> authOption, IOptions<GameConfig> ga
// UserSyncData = new UserSyncData();
UserSyncData = ReadFromJson<UserSyncData>("usersyncdata.json");

Observable.Timer(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(10)).Where(_=> !IsQuickActionExecuting).Subscribe(t =>
Observable.Timer(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(10)).Where(_ => !IsQuickActionExecuting).Subscribe(t =>
{
WriteToJson("runtimeinfo.json", RuntimeInfo);
WriteToJson("usersyncdata.json", UserSyncData);
Expand Down Expand Up @@ -294,15 +295,11 @@ public async Task AutoDungeonBattle(Action<string> log)

async Task DoBattle()
{
var userSyncData = (await UserGetUserData()).UserSyncData;
// battleInfoResponse.UserDungeonBattleCharacterDtoInfos.Where(d =>
// {
// // todo 选择出战斗力最高的5个角色
// var characterMb = Masters.CharacterTable.GetById(d.CharacterId);
// return d.CurrentHpPerMill>0 && characterMb.
// })
var userDeckDtoInfo = userSyncData.UserDeckDtoInfos.First(d =>
d.DeckUseContentType == DeckUseContentType.DungeonBattle);
// 选择出战斗力最高的5个角色
var characters = battleInfoResponse.UserDungeonBattleCharacterDtoInfos.Where(d => d.CurrentHpPerMill != 0).OrderByDescending(d =>
{
return BattlePowerCalculatorUtil.GetUserCharacterBattlePower(d.Guid);
}).ToList();
// todo 处理角色挂掉的情况
var execBattleResponse = await GetResponse<ExecBattleRequest, ExecBattleResponse>(
new ExecBattleRequest()
Expand All @@ -311,11 +308,11 @@ async Task DoBattle()
DungeonGridGuid = currentGrid.Grid.DungeonGridGuid,
CharacterGuids = new List<string>()
{
userDeckDtoInfo.UserCharacterGuid1,
userDeckDtoInfo.UserCharacterGuid2,
userDeckDtoInfo.UserCharacterGuid3,
userDeckDtoInfo.UserCharacterGuid4,
userDeckDtoInfo.UserCharacterGuid5,
characters[0].Guid,
characters[1].Guid,
characters[2].Guid,
characters[3].Guid,
characters[4].Guid,
}.Where(d => !d.IsNullOrEmpty()).ToList()
});
var finishBattleResponse = await GetResponse<FinishBattleRequest, FinishBattleResponse>(
Expand Down Expand Up @@ -494,25 +491,69 @@ async Task DoBattle()
break;
case DungeonBattleGridState.Reward:
{
// 选择加成奖励
var relicId = 0L;
foreach (var info in _gameConfig.DungeonBattleRelicSort)
if (type == DungeonBattleGridType.BattleAndRelicReinforce)
{
if (battleInfoResponse.RewardRelicIds.Contains(info.Id))
// 选择加成奖励
var relicId = 0L;
var upgradableRelics = battleInfoResponse.UserDungeonDtoInfo.RelicIds.Where(d =>
{
relicId = info.Id;
break;
var mb = Masters.DungeonBattleRelicTable.GetByReinforceFrom(d);
if (mb == null)
{
// 不可升级
return false;
}
if (battleInfoResponse.UserDungeonDtoInfo.RelicIds.Contains(mb.Id))
{
// 升级后的已经存在了
return false;
}
return true;
}).ToList();
foreach (var info in _gameConfig.DungeonBattleRelicSort)
{
if (upgradableRelics.Contains(info.Id))
{
// relicId = Masters.DungeonBattleRelicTable.GetByReinforceFrom(info.Id).Id;
relicId = info.Id;
break;
}
}

var rewardBattleReceiveRelicResponse =
await GetResponse<RewardBattleReinforceRelicRequest, RewardBattleReinforceRelicResponse>(
new RewardBattleReinforceRelicRequest()
{
CurrentTermId = battleInfoResponse.CurrentTermId,
DungeonGridGuid = currentGrid.Grid.DungeonGridGuid,
SelectedRelicId = relicId,
});
}
else
{
// 选择加成奖励
var relicId = 0L;

var rewardBattleReceiveRelicResponse =
await GetResponse<RewardBattleReceiveRelicRequest, RewardBattleReceiveRelicResponse>(
new RewardBattleReceiveRelicRequest()
foreach (var info in _gameConfig.DungeonBattleRelicSort)
{
if (battleInfoResponse.RewardRelicIds.Contains(info.Id))
{
CurrentTermId = battleInfoResponse.CurrentTermId,
DungeonGridGuid = currentGrid.Grid.DungeonGridGuid,
SelectedRelicId = relicId,
});
relicId = info.Id;
break;
}
}

var rewardBattleReceiveRelicResponse =
await GetResponse<RewardBattleReceiveRelicRequest, RewardBattleReceiveRelicResponse>(
new RewardBattleReceiveRelicRequest()
{
CurrentTermId = battleInfoResponse.CurrentTermId,
DungeonGridGuid = currentGrid.Grid.DungeonGridGuid,
SelectedRelicId = relicId,
});
}

break;
}
Expand Down
4 changes: 4 additions & 0 deletions MementoMori/Utils/BattlePowerCalculatorUtil.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ public static long GetCharacterBattlePower(List<long> characterIds)
public static long GetUserCharacterBattlePower(string userCharacterGuid, LockEquipmentDeckType lockEquipmentDeckType = LockEquipmentDeckType.None)
{
var info = Services.Get<MementoMoriFuncs>().UserSyncData.GetUserCharacterInfoByUserCharacterGuid(userCharacterGuid);
if (info == null)
{
return 0;
}
return GetUserCharacterBattlePower(info, lockEquipmentDeckType);
}

Expand Down

0 comments on commit 95caf88

Please sign in to comment.