Skip to content

Commit

Permalink
Merge pull request planetarium#393 from boscohyun/feature/introduce-i…
Browse files Browse the repository at this point in the history
…tradableitem

Make the `Material` tradable on Shop
  • Loading branch information
boscohyun authored May 4, 2021
2 parents 6eea027 + fc13b0f commit 8aa415f
Show file tree
Hide file tree
Showing 76 changed files with 2,763 additions and 693 deletions.
2 changes: 1 addition & 1 deletion .Lib9c.Tests/Action/CombinationConsumable2Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public void Execute()
{
var materialRow = _tableSheets.MaterialItemSheet[materialInfo.Id];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, materialInfo.Count);
_avatarState.inventory.AddItem(material, count: materialInfo.Count);
}

const int requiredStage = GameConfig.RequireClearedStageLevel.CombinationConsumableAction;
Expand Down
2 changes: 1 addition & 1 deletion .Lib9c.Tests/Action/CombinationConsumable3Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public void Execute()
{
var materialRow = _tableSheets.MaterialItemSheet[materialInfo.Id];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, materialInfo.Count);
_avatarState.inventory.AddItem(material, count: materialInfo.Count);
}

const int requiredStage = GameConfig.RequireClearedStageLevel.CombinationConsumableAction;
Expand Down
2 changes: 1 addition & 1 deletion .Lib9c.Tests/Action/CombinationConsumable4Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public void Execute()
{
var materialRow = _tableSheets.MaterialItemSheet[materialInfo.Id];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, materialInfo.Count);
_avatarState.inventory.AddItem(material, count: materialInfo.Count);
}

const int requiredStage = GameConfig.RequireClearedStageLevel.CombinationConsumableAction;
Expand Down
138 changes: 138 additions & 0 deletions .Lib9c.Tests/Action/CombinationConsumable5Test.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
namespace Lib9c.Tests.Action
{
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Libplanet;
using Libplanet.Action;
using Nekoyume;
using Nekoyume.Action;
using Nekoyume.Model.Item;
using Nekoyume.Model.Mail;
using Nekoyume.Model.State;
using Xunit;

public class CombinationConsumable5Test
{
private readonly Address _agentAddress;
private readonly Address _avatarAddress;
private readonly Address _slotAddress;
private readonly Dictionary<string, string> _sheets;
private readonly IRandom _random;
private readonly TableSheets _tableSheets;
private readonly AvatarState _avatarState;
private IAccountStateDelta _initialState;

public CombinationConsumable5Test()
{
_agentAddress = default;
_avatarAddress = _agentAddress.Derive("avatar");
_slotAddress = _avatarAddress.Derive(
string.Format(
CultureInfo.InvariantCulture,
CombinationSlotState.DeriveFormat,
0
)
);
_sheets = TableSheetsImporter.ImportSheets();
_random = new TestRandom();
_tableSheets = new TableSheets(_sheets);

var agentState = new AgentState(_agentAddress);
agentState.avatarAddresses[0] = _avatarAddress;
var gameConfigState = new GameConfigState();

_avatarState = new AvatarState(
_avatarAddress,
_agentAddress,
1,
_tableSheets.GetAvatarSheets(),
gameConfigState,
default
);

_initialState = new State()
.SetState(_agentAddress, agentState.Serialize())
.SetState(_avatarAddress, _avatarState.Serialize());

foreach (var (key, value) in _sheets)
{
_initialState =
_initialState.SetState(Addresses.TableSheet.Derive(key), value.Serialize());
}
}

[Fact]
public void Execute()
{
var row = _tableSheets.ConsumableItemRecipeSheet.Values.First();
foreach (var materialInfo in row.Materials)
{
var materialRow = _tableSheets.MaterialItemSheet[materialInfo.Id];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, count: materialInfo.Count);
}

const int requiredStage = GameConfig.RequireClearedStageLevel.CombinationConsumableAction;
for (var i = 1; i < requiredStage + 1; i++)
{
_avatarState.worldInformation.ClearStage(
1,
i,
0,
_tableSheets.WorldSheet,
_tableSheets.WorldUnlockSheet
);
}

var equipment = ItemFactory.CreateItemUsable(_tableSheets.EquipmentItemSheet.First, default, 0);

var result = new CombinationConsumable.ResultModel()
{
id = default,
gold = 0,
actionPoint = 0,
recipeId = 1,
materials = new Dictionary<Material, int>(),
itemUsable = equipment,
};

for (var i = 0; i < 100; i++)
{
var mail = new CombinationMail(result, i, default, 0);
_avatarState.Update(mail);
}

_initialState = _initialState
.SetState(_avatarAddress, _avatarState.Serialize())
.SetState(_slotAddress, new CombinationSlotState(_slotAddress, requiredStage).Serialize());

var action = new CombinationConsumable5()
{
AvatarAddress = _avatarAddress,
recipeId = row.Id,
slotIndex = 0,
};

var nextState = action.Execute(new ActionContext()
{
PreviousStates = _initialState,
Signer = _agentAddress,
BlockIndex = 1,
Random = _random,
});

var slotState = nextState.GetCombinationSlotState(_avatarAddress, 0);

Assert.NotNull(slotState.Result);

var consumable = (Consumable)slotState.Result.itemUsable;
Assert.NotNull(consumable);

var nextAvatarState = nextState.GetAvatarState(_avatarAddress);

Assert.Equal(30, nextAvatarState.mailBox.Count);
Assert.IsType<CombinationMail>(nextAvatarState.mailBox.First());
}
}
}
2 changes: 1 addition & 1 deletion .Lib9c.Tests/Action/CombinationConsumableTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public void Execute()
{
var materialRow = _tableSheets.MaterialItemSheet[materialInfo.Id];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, materialInfo.Count);
_avatarState.inventory.AddItem(material, count: materialInfo.Count);
}

const int requiredStage = GameConfig.RequireClearedStageLevel.CombinationConsumableAction;
Expand Down
2 changes: 1 addition & 1 deletion .Lib9c.Tests/Action/CombinationEquipment2Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public void Execute()
var row = _tableSheets.EquipmentItemRecipeSheet.Values.First();
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

const int requiredStage = GameConfig.RequireClearedStageLevel.CombinationEquipmentAction;
for (var i = 1; i < requiredStage + 1; i++)
Expand Down
8 changes: 4 additions & 4 deletions .Lib9c.Tests/Action/CombinationEquipment3Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ public void Execute()
var row = _tableSheets.EquipmentItemRecipeSheet[109];
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

foreach (var materialInfo in _tableSheets.EquipmentItemSubRecipeSheet[255].Materials)
{
var subMaterial = ItemFactory.CreateItem(_tableSheets.MaterialItemSheet[materialInfo.Id], _random);
_avatarState.inventory.AddItem(subMaterial, materialInfo.Count);
_avatarState.inventory.AddItem(subMaterial, count: materialInfo.Count);
}

const int requiredStage = 19;
Expand Down Expand Up @@ -165,12 +165,12 @@ public void ExecuteThrowInsufficientBalanceException()
var row = _tableSheets.EquipmentItemRecipeSheet[2];
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

foreach (var materialInfo in _tableSheets.EquipmentItemSubRecipeSheet[3].Materials)
{
var subMaterial = ItemFactory.CreateItem(_tableSheets.MaterialItemSheet[materialInfo.Id], _random);
_avatarState.inventory.AddItem(subMaterial, materialInfo.Count);
_avatarState.inventory.AddItem(subMaterial, count: materialInfo.Count);
}

const int requiredStage = 11;
Expand Down
8 changes: 4 additions & 4 deletions .Lib9c.Tests/Action/CombinationEquipment4Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ public void Execute()
var row = _tableSheets.EquipmentItemRecipeSheet[109];
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

foreach (var materialInfo in _tableSheets.EquipmentItemSubRecipeSheet[255].Materials)
{
var subMaterial = ItemFactory.CreateItem(_tableSheets.MaterialItemSheet[materialInfo.Id], _random);
_avatarState.inventory.AddItem(subMaterial, materialInfo.Count);
_avatarState.inventory.AddItem(subMaterial, count: materialInfo.Count);
}

const int requiredStage = 19;
Expand Down Expand Up @@ -164,12 +164,12 @@ public void ExecuteThrowInsufficientBalanceException()
var row = _tableSheets.EquipmentItemRecipeSheet[2];
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

foreach (var materialInfo in _tableSheets.EquipmentItemSubRecipeSheet[3].Materials)
{
var subMaterial = ItemFactory.CreateItem(_tableSheets.MaterialItemSheet[materialInfo.Id], _random);
_avatarState.inventory.AddItem(subMaterial, materialInfo.Count);
_avatarState.inventory.AddItem(subMaterial, count: materialInfo.Count);
}

const int requiredStage = 11;
Expand Down
18 changes: 9 additions & 9 deletions .Lib9c.Tests/Action/CombinationEquipment5Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public void Execute()
var row = _tableSheets.EquipmentItemRecipeSheet.Values.First();
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

const int requiredStage = GameConfig.RequireClearedStageLevel.CombinationEquipmentAction;
for (var i = 1; i < requiredStage + 1; i++)
Expand Down Expand Up @@ -121,14 +121,14 @@ public void ExecuteWithSubRecipe()
var subRecipeId = row.SubRecipeIds.First();
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

var subRecipeRow = _tableSheets.EquipmentItemSubRecipeSheet.Values.First(r => r.Id == subRecipeId);
foreach (var materialInfo in subRecipeRow.Materials)
{
materialRow = _tableSheets.MaterialItemSheet[materialInfo.Id];
material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, materialInfo.Count);
_avatarState.inventory.AddItem(material, count: materialInfo.Count);
}

for (var i = 1; i < row.UnlockStage + 1; i++)
Expand Down Expand Up @@ -192,14 +192,14 @@ public void ExecuteThrowCombinationSlotUnlockException()
var subRecipeId = row.SubRecipeIds.First();
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

var subRecipeRow = _tableSheets.EquipmentItemSubRecipeSheet.Values.First(r => r.Id == subRecipeId);
foreach (var materialInfo in subRecipeRow.Materials)
{
materialRow = _tableSheets.MaterialItemSheet[materialInfo.Id];
material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, materialInfo.Count);
_avatarState.inventory.AddItem(material, count: materialInfo.Count);
}

for (var i = 1; i < row.UnlockStage + 1; i++)
Expand Down Expand Up @@ -242,7 +242,7 @@ public void ExecuteThrowSheetRowNotFoundException()
var row = _tableSheets.EquipmentItemRecipeSheet.Values.First();
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

const int requiredStage = GameConfig.RequireClearedStageLevel.CombinationEquipmentAction;
for (var i = 1; i < requiredStage + 1; i++)
Expand Down Expand Up @@ -282,14 +282,14 @@ public void ExecuteThrowSheetRowColumnException()
var subRecipeId = row.SubRecipeIds.First();
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

var subRecipeRow = _tableSheets.EquipmentItemSubRecipeSheet.Values.First(r => r.Id == subRecipeId);
foreach (var materialInfo in subRecipeRow.Materials)
{
materialRow = _tableSheets.MaterialItemSheet[materialInfo.Id];
material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, materialInfo.Count);
_avatarState.inventory.AddItem(material, count: materialInfo.Count);
}

for (var i = 1; i < row.UnlockStage + 1; i++)
Expand Down Expand Up @@ -328,7 +328,7 @@ public void ExecuteThrowNotEnoughClearedStageLevelException()
var row = _tableSheets.EquipmentItemRecipeSheet.Values.First(r => r.UnlockStage > requiredStage);
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

for (var i = 1; i < requiredStage + 1; i++)
{
Expand Down
8 changes: 4 additions & 4 deletions .Lib9c.Tests/Action/CombinationEquipmentTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,12 @@ public void Execute()
var row = _tableSheets.EquipmentItemRecipeSheet[109];
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

foreach (var materialInfo in _tableSheets.EquipmentItemSubRecipeSheet[255].Materials)
{
var subMaterial = ItemFactory.CreateItem(_tableSheets.MaterialItemSheet[materialInfo.Id], _random);
_avatarState.inventory.AddItem(subMaterial, materialInfo.Count);
_avatarState.inventory.AddItem(subMaterial, count: materialInfo.Count);
}

const int requiredStage = 19;
Expand Down Expand Up @@ -164,12 +164,12 @@ public void ExecuteThrowInsufficientBalanceException()
var row = _tableSheets.EquipmentItemRecipeSheet[2];
var materialRow = _tableSheets.MaterialItemSheet[row.MaterialId];
var material = ItemFactory.CreateItem(materialRow, _random);
_avatarState.inventory.AddItem(material, row.MaterialCount);
_avatarState.inventory.AddItem(material, count: row.MaterialCount);

foreach (var materialInfo in _tableSheets.EquipmentItemSubRecipeSheet[3].Materials)
{
var subMaterial = ItemFactory.CreateItem(_tableSheets.MaterialItemSheet[materialInfo.Id], _random);
_avatarState.inventory.AddItem(subMaterial, materialInfo.Count);
_avatarState.inventory.AddItem(subMaterial, count: materialInfo.Count);
}

const int requiredStage = 11;
Expand Down
Loading

0 comments on commit 8aa415f

Please sign in to comment.