Skip to content

Commit

Permalink
Optimize QuestReward deserialize
Browse files Browse the repository at this point in the history
  • Loading branch information
ipdae committed Jul 18, 2023
1 parent 8f4aef5 commit 3975e55
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 15 deletions.
17 changes: 8 additions & 9 deletions Lib9c/Model/Quest/QuestReward.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,28 @@ namespace Nekoyume.Model.Quest
[Serializable]
public class QuestReward : IState
{
public readonly Dictionary<int, int> ItemMap;
public readonly IEnumerable<Tuple<int, int>> ItemMap;

public QuestReward(Dictionary<int, int> map)
{
ItemMap = map
.ToDictionary(kv => kv.Key, kv => kv.Value
);
#pragma warning disable LAA1002
ItemMap = map.Select(kv => new Tuple<int, int>(kv.Key, kv.Value));
}

public QuestReward(Dictionary serialized)
{
ItemMap = serialized.ToDictionary(
kv => kv.Key.ToInteger(),
kv => kv.Value.ToInteger()
ItemMap = serialized.Select(
kv => new Tuple<int, int>(kv.Key.ToInteger(), kv.Value.ToInteger())
);
#pragma warning restore LAA1002
}

public IValue Serialize() => new Dictionary(
#pragma warning disable LAA1002
ItemMap.Select(kv =>
new KeyValuePair<IKey, IValue>(
(Text)kv.Key.ToString(CultureInfo.InvariantCulture),
(Text)kv.Value.ToString(CultureInfo.InvariantCulture)
(Text)kv.Item1.ToString(CultureInfo.InvariantCulture),
(Text)kv.Item2.ToString(CultureInfo.InvariantCulture)
)
)
#pragma warning restore LAA1002
Expand Down
12 changes: 6 additions & 6 deletions Lib9c/Model/State/AvatarState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -488,11 +488,11 @@ public void UpdateFromAddCostume(Costume costume, bool canceled)
public void UpdateFromQuestReward(Quest.Quest quest, MaterialItemSheet materialItemSheet)
{
var items = new List<Material>();
foreach (var pair in quest.Reward.ItemMap.OrderBy(kv => kv.Key))
foreach (var pair in quest.Reward.ItemMap.OrderBy(kv => kv.Item1))
{
var row = materialItemSheet.OrderedList.First(itemRow => itemRow.Id == pair.Key);
var row = materialItemSheet.OrderedList.First(itemRow => itemRow.Id == pair.Item1);
var item = ItemFactory.CreateMaterial(row);
var map = inventory.AddItem(item, count: pair.Value);
var map = inventory.AddItem(item, count: pair.Item2);
itemMap.Add(map);
items.Add(item);
}
Expand All @@ -507,11 +507,11 @@ public void UpdateFromQuestReward(Quest.Quest quest, MaterialItemSheet materialI
public void UpdateFromQuestReward2(Quest.Quest quest, MaterialItemSheet materialItemSheet)
{
var items = new List<Material>();
foreach (var pair in quest.Reward.ItemMap.OrderBy(kv => kv.Key))
foreach (var pair in quest.Reward.ItemMap.OrderBy(kv => kv.Item1))
{
var row = materialItemSheet.OrderedList.First(itemRow => itemRow.Id == pair.Key);
var row = materialItemSheet.OrderedList.First(itemRow => itemRow.Id == pair.Item2);
var item = ItemFactory.CreateMaterial(row);
var map = inventory.AddItem2(item, count: pair.Value);
var map = inventory.AddItem2(item, count: pair.Item2);
itemMap.Add(map);
items.Add(item);
}
Expand Down

0 comments on commit 3975e55

Please sign in to comment.