public void Serialize() { var orderLock = new OrderLock(Guid.NewGuid()); var deserialized = new OrderLock((List)orderLock.Serialize()); Assert.Equal(LockType.Order, deserialized.Type); Assert.Equal(orderLock.OrderId, deserialized.OrderId); }
public void Lock() { var row = TableSheets.MaterialItemSheet.First; Assert.NotNull(row); var material = ItemFactory.CreateMaterial(row); var item = new Inventory.Item(material, 1); var orderLock = new OrderLock(Guid.NewGuid()); Assert.False(item.Locked); item.LockUp(orderLock); Assert.True(item.Locked); item.Unlock(); Assert.False(item.Locked); }
public void Execute(int avatarLevel, int worldId, int stageId, int playCount, bool backward, bool isLock, bool isClearedBefore) { Assert.True(_tableSheets.WorldSheet.TryGetValue(worldId, out var worldRow)); Assert.True(stageId >= worldRow.StageBegin); Assert.True(stageId <= worldRow.StageEnd); Assert.True(_tableSheets.StageSheet.TryGetValue(stageId, out _)); var previousAvatarState = _initialState.GetAvatarStateV2(_avatarAddress); previousAvatarState.level = avatarLevel; var clearedStageId = _tableSheets.StageSheet.First?.Id ?? 0; clearedStageId = isClearedBefore ? Math.Max(clearedStageId, stageId - 1) : stageId - 1; clearedStageId = playCount > 1 ? clearedStageId + 1 : clearedStageId; previousAvatarState.worldInformation = new WorldInformation( 0, _tableSheets.WorldSheet, clearedStageId); List <Guid> costumes = new List <Guid>(); IRandom random = new TestRandom(); if (avatarLevel >= GameConfig.RequireCharacterLevel.CharacterFullCostumeSlot) { var costumeId = _tableSheets .CostumeItemSheet .Values .First(r => r.ItemSubType == ItemSubType.FullCostume) .Id; var costume = (Costume)ItemFactory.CreateItem( _tableSheets.ItemSheet[costumeId], random); previousAvatarState.inventory.AddItem(costume); costumes.Add(costume.ItemId); } List <Guid> equipments = new List <Guid>(); if (avatarLevel >= GameConfig.RequireCharacterLevel.CharacterEquipmentSlotWeapon) { var weaponId = _tableSheets .EquipmentItemSheet .Values .Where(r => r.ItemSubType == ItemSubType.Weapon) .OrderBy(r => r.Stat.ValueAsInt) .Last() .Id; var weapon = ItemFactory.CreateItem( _tableSheets.EquipmentItemSheet[weaponId], random) as Equipment; equipments.Add(weapon.ItemId); OrderLock?orderLock = null; if (isLock) { orderLock = new OrderLock(Guid.NewGuid()); } previousAvatarState.inventory.AddItem(weapon, iLock: orderLock); } if (avatarLevel >= GameConfig.RequireCharacterLevel.CharacterEquipmentSlotArmor) { var armorId = _tableSheets .EquipmentItemSheet .Values .Where(r => r.ItemSubType == ItemSubType.Armor) .OrderBy(r => r.Stat.ValueAsInt) .Last() .Id; var armor = ItemFactory.CreateItem( _tableSheets.EquipmentItemSheet[armorId], random) as Equipment; equipments.Add(armor.ItemId); previousAvatarState.inventory.AddItem(armor); } var mailEquipmentRow = _tableSheets.EquipmentItemSheet.Values.First(); var mailEquipment = ItemFactory.CreateItemUsable(mailEquipmentRow, default, 0);
public void TryGetTradableItems(ItemType itemType, long blockIndex, bool isLock, bool expected) { ItemSheet.Row row; switch (itemType) { case ItemType.Consumable: row = TableSheets.EquipmentItemSheet.First; break; case ItemType.Costume: row = TableSheets.CostumeItemSheet.First; break; case ItemType.Equipment: row = TableSheets.ConsumableItemSheet.First; break; case ItemType.Material: row = TableSheets.MaterialItemSheet.First; break; default: throw new Exception(); } var inventory = new Inventory(); ITradableItem tradableItem; if (itemType == ItemType.Material) { tradableItem = ItemFactory.CreateTradableMaterial((MaterialItemSheet.Row)row); } else { tradableItem = (ITradableItem)ItemFactory.CreateItem(row, new TestRandom()); } tradableItem.RequiredBlockIndex = blockIndex; OrderLock?orderLock = null; if (isLock) { orderLock = new OrderLock(Guid.NewGuid()); } inventory.AddItem((ItemBase)tradableItem, 1, orderLock); Assert.Single(inventory.Items); Assert.Equal( expected, inventory.TryGetTradableItems(tradableItem.TradableId, 0, 1, out var items) ); if (expected) { Assert.Single(items); Assert.Equal((ITradableItem)items.First().item, tradableItem); } else { Assert.Empty(items); } }