Skip to content

Commit

Permalink
use equipped runes
Browse files Browse the repository at this point in the history
  • Loading branch information
area363 committed Jun 10, 2024
1 parent faa9b82 commit 9013d17
Showing 1 changed file with 42 additions and 5 deletions.
47 changes: 42 additions & 5 deletions NineChronicles.DataProvider/DataRendering/AvatarData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,20 +55,41 @@ public static AvatarModel GetAvatarInfo(
: new ItemSlotState(BattleType.Adventure);
var equipmentList = SetEquipments(avatarState, itemSlotState, battleType);
var costumeList = SetCostumes(avatarState, itemSlotState, battleType);
var runeOptionSheet = sheets.GetSheet<RuneOptionSheet>();
var runeOptions = new List<RuneOptionSheet.Row.RuneOptionInfo>();
var runeStates = outputStates.GetRuneState(avatarAddress, out _);
var runeAddresses = RuneSlotState.DeriveAddress(avatarAddress, battleType);
var runeSlotState = outputStates.TryGetLegacyState(runeAddresses, out List rawRuneSlotState)
? new RuneSlotState(rawRuneSlotState)
: new RuneSlotState(BattleType.Adventure);
var runeSlotStates = new List<RuneSlotState>();
runeSlotStates.Add(runeSlotState);
var runes = SetRunes(runeSlotStates, battleType);

var equippedRuneStates = new List<RuneState>();
var runeIds = runes[battleType].GetRuneSlot()
.Where(slot => slot.RuneId.HasValue)
.Select(slot => slot.RuneId!.Value);

foreach (var runeId in runeIds)
{
var runeState = runeStates.Runes!.FirstOrDefault(x => x.Value.RuneId == runeId);
if (runeStates.Runes != null)
{
equippedRuneStates.Add(runeState.Value);
}
}

foreach (var runeState in runeStates.Runes.Values)
var runeOptions = new List<RuneOptionSheet.Row.RuneOptionInfo>();
var runeOptionSheet = sheets.GetSheet<RuneOptionSheet>();
foreach (var runeState in equippedRuneStates)
{
if (!runeOptionSheet.TryGetValue(runeState.RuneId, out var optionRow))
{
throw new SheetRowNotFoundException("RuneOptionSheet", runeState.RuneId);
continue;
}

if (!optionRow.LevelOptionMap.TryGetValue(runeState.Level, out var option))
{
throw new SheetRowNotFoundException("RuneOptionSheet", runeState.Level);
continue;
}

runeOptions.Add(option);
Expand Down Expand Up @@ -188,5 +209,21 @@ private static Dictionary<BattleType, List<Costume>> SetCostumes(

return costumes;
}

private static Dictionary<BattleType, RuneSlotState> SetRunes(
List<RuneSlotState> runeSlotStates,
BattleType battleType)
{
Dictionary<BattleType, RuneSlotState> runes = new ();
runes.Add(BattleType.Adventure, new RuneSlotState(BattleType.Adventure));
runes.Add(BattleType.Arena, new RuneSlotState(BattleType.Arena));
runes.Add(BattleType.Raid, new RuneSlotState(BattleType.Raid));
foreach (var state in runeSlotStates)
{
runes[battleType] = state;
}

return runes;
}
}
}

0 comments on commit 9013d17

Please sign in to comment.