inventory working :D
This commit is contained in:
@@ -52,7 +52,7 @@ namespace PetCompanion.Services
|
||||
|
||||
var createdPet = petRepository.CreatePet(pet);
|
||||
|
||||
var inventory = petInventoryService.CreateInventory(petId).Result;
|
||||
var inventory = petInventoryService.CreateInventory(petId);
|
||||
|
||||
return createdPet;
|
||||
}
|
||||
@@ -155,98 +155,6 @@ namespace PetCompanion.Services
|
||||
return petRepository.UpdatePetResources(pet);
|
||||
}
|
||||
|
||||
public Pet UseItem(string petId, string userId, int itemId)
|
||||
{
|
||||
var pet = petRepository.GetPetById(petId, userId);
|
||||
if (pet == null)
|
||||
throw new Exception("Pet not found");
|
||||
|
||||
var inventoryItem = pet.Inventory.Items.FirstOrDefault(i => i.GameItemId == itemId);
|
||||
if (inventoryItem == null || inventoryItem.Quantity <= 0)
|
||||
throw new Exception("Item not found in inventory");
|
||||
|
||||
gameItemService.ApplyItemEffect(pet, inventoryItem.GameItem);
|
||||
|
||||
inventoryItem.Quantity--;
|
||||
if (inventoryItem.Quantity <= 0)
|
||||
pet.Inventory.Items.Remove(inventoryItem);
|
||||
|
||||
return petRepository.UpdatePet(pet);
|
||||
}
|
||||
|
||||
public Pet EquipItem(string petId, string userId, int itemId)
|
||||
{
|
||||
var pet = petRepository.GetPetById(petId, userId);
|
||||
if (pet == null)
|
||||
throw new Exception("Pet not found");
|
||||
|
||||
var inventoryItem = pet.Inventory.Items.FirstOrDefault(i => i.GameItemId == itemId);
|
||||
if (inventoryItem == null || inventoryItem.Quantity <= 0)
|
||||
throw new Exception("Item not found in inventory");
|
||||
|
||||
if (inventoryItem.GameItem.Type != ItemType.Equipment)
|
||||
throw new Exception("Item is not equipment");
|
||||
|
||||
// If there's already an item equipped in that slot, unequip it first
|
||||
if (pet.EquippedItems.ContainsKey(inventoryItem.GameItem.EquipTarget))
|
||||
{
|
||||
UnequipItem(pet, inventoryItem.GameItem.EquipTarget);
|
||||
}
|
||||
|
||||
// Apply equipment effects
|
||||
gameItemService.ApplyItemEffect(pet, inventoryItem.GameItem);
|
||||
|
||||
// Mark item as equipped
|
||||
pet.EquippedItems[inventoryItem.GameItem.EquipTarget] = itemId;
|
||||
|
||||
// Remove from inventory
|
||||
inventoryItem.Quantity--;
|
||||
if (inventoryItem.Quantity <= 0)
|
||||
pet.Inventory.Items.Remove(inventoryItem);
|
||||
|
||||
return petRepository.UpdatePet(pet);
|
||||
}
|
||||
|
||||
public Pet UnequipItem(string petId, string userId, ItemEquipTarget equipTarget)
|
||||
{
|
||||
var pet = petRepository.GetPetById(petId, userId);
|
||||
if (pet == null)
|
||||
throw new Exception("Pet not found");
|
||||
|
||||
UnequipItem(pet, equipTarget);
|
||||
return petRepository.UpdatePet(pet);
|
||||
}
|
||||
|
||||
private void UnequipItem(Pet pet, ItemEquipTarget equipTarget)
|
||||
{
|
||||
if (!pet.EquippedItems.ContainsKey(equipTarget))
|
||||
return;
|
||||
|
||||
var equippedItemId = pet.EquippedItems[equipTarget];
|
||||
var equippedItem = gameItemsRepository.GetById(equippedItemId);
|
||||
|
||||
if (equippedItem != null)
|
||||
{
|
||||
// Remove equipment effects
|
||||
gameItemService.RemoveItemEffect(pet, equippedItem);
|
||||
|
||||
// Add item back to inventory
|
||||
var inventoryItem = pet.Inventory.Items.FirstOrDefault(i => i.GameItemId == equippedItemId);
|
||||
if (inventoryItem != null)
|
||||
inventoryItem.Quantity++;
|
||||
else
|
||||
pet.Inventory.Items.Add(new InventoryItem
|
||||
{
|
||||
GameItemId = equippedItemId,
|
||||
Quantity = 1,
|
||||
GameItem = equippedItem,
|
||||
InventoryId = pet.Id
|
||||
});
|
||||
}
|
||||
|
||||
pet.EquippedItems.Remove(equipTarget);
|
||||
}
|
||||
|
||||
public Pet GetPet(string petId, string userId)
|
||||
{
|
||||
var pet = petRepository.GetPetById(petId, userId);
|
||||
@@ -254,47 +162,5 @@ namespace PetCompanion.Services
|
||||
throw new Exception("Pet not found");
|
||||
return pet;
|
||||
}
|
||||
|
||||
public Pet DropItem(string petId, string userId, int itemId)
|
||||
{
|
||||
var pet = GetPet(petId, userId);
|
||||
|
||||
var inventoryItem = pet.Inventory.Items.FirstOrDefault(i => i.GameItemId == itemId);
|
||||
if (inventoryItem == null || inventoryItem.Quantity <= 0)
|
||||
throw new Exception("Item not found in inventory");
|
||||
|
||||
inventoryItem.Quantity--;
|
||||
if (inventoryItem.Quantity <= 0)
|
||||
pet.Inventory.Items.Remove(inventoryItem);
|
||||
|
||||
return petRepository.UpdatePet(pet);
|
||||
}
|
||||
|
||||
public Pet AddItemToPet(string petId, string userId, int itemId, int quantity)
|
||||
{
|
||||
var pet = GetPet(petId, userId);
|
||||
var gameItem = gameItemsRepository.GetById(itemId);
|
||||
|
||||
if (gameItem == null)
|
||||
throw new Exception("Item not found");
|
||||
|
||||
var inventoryItem = pet.Inventory.Items.FirstOrDefault(i => i.GameItemId == itemId);
|
||||
if (inventoryItem != null)
|
||||
{
|
||||
inventoryItem.Quantity += quantity;
|
||||
}
|
||||
else
|
||||
{
|
||||
pet.Inventory.Items.Add(new InventoryItem
|
||||
{
|
||||
GameItemId = itemId,
|
||||
Quantity = quantity,
|
||||
GameItem = gameItem,
|
||||
InventoryId = pet.Id
|
||||
});
|
||||
}
|
||||
|
||||
return petRepository.UpdatePet(pet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user