48 lines
1.5 KiB
C#
48 lines
1.5 KiB
C#
using PetCompanion.Models;
|
|
using PetCompanion.Repositories;
|
|
|
|
namespace PetCompanion.Services
|
|
{
|
|
public class PetClassService
|
|
{
|
|
private readonly PetClassRepository _petClassRepository;
|
|
|
|
public PetClassService(PetClassRepository petClassRepository)
|
|
{
|
|
_petClassRepository = petClassRepository;
|
|
}
|
|
|
|
public IEnumerable<PetClassInfo> GetAllPetClasses()
|
|
{
|
|
return _petClassRepository.GetAllPetClassesInfo();
|
|
}
|
|
|
|
public Resources CalculateGatheredResources(PetStats stats, int petLevel, PetActionGather action, DateTime actionSince)
|
|
{
|
|
var timeElapsed = (DateTime.UtcNow - actionSince).TotalHours;
|
|
var resources = new Resources();
|
|
|
|
if (action == PetActionGather.IDLE)
|
|
return resources;
|
|
|
|
var baseRate = timeElapsed * 0.5 + petLevel; // Base rate per hour
|
|
resources.Junk = (int)(baseRate * 2);
|
|
|
|
switch (action)
|
|
{
|
|
case PetActionGather.GATHERING_WISDOM:
|
|
resources.Wisdom = (int)(baseRate * (stats.Intelligence * 2));
|
|
break;
|
|
case PetActionGather.GATHERING_GOLD:
|
|
resources.Gold = (int)(baseRate * (stats.Charisma * 2));
|
|
break;
|
|
case PetActionGather.GATHERING_FOOD:
|
|
resources.Food = (int)(baseRate * (stats.Strength * 1.5));
|
|
break;
|
|
}
|
|
|
|
return resources;
|
|
}
|
|
}
|
|
}
|