mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-12-05 16:16:33 +00:00
68 lines
2.2 KiB
C#
68 lines
2.2 KiB
C#
using Milimoe.FunGame.Core.Interface.Entity;
|
|
using Milimoe.FunGame.Core.Library.Constant;
|
|
|
|
namespace Milimoe.FunGame.Core.Entity
|
|
{
|
|
public class Market : BaseEntity
|
|
{
|
|
public string Description { get; set; } = "";
|
|
public DateTime? StartTime { get; set; } = null;
|
|
public DateTime? EndTime { get; set; } = null;
|
|
public DateTime? StartTimeOfDay { get; set; } = null;
|
|
public DateTime? EndTimeOfDay { get; set; } = null;
|
|
public Dictionary<long, MarketItem> MarketItems { get; } = [];
|
|
|
|
public Market(string name)
|
|
{
|
|
Name = name;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return Name;
|
|
}
|
|
|
|
public void AddItem(User user, Item item, double price, int stock, string name = "")
|
|
{
|
|
if (MarketItems.Values.FirstOrDefault(m => m.Item.Id == item.Id && m.Item.Name == item.Name && m.Price == price && m.User == user.Id && m.Status == MarketItemState.Listed) is MarketItem marketItem)
|
|
{
|
|
marketItem.Stock += stock;
|
|
marketItem.Item.Price = (marketItem.Item.Price + item.Price) / marketItem.Stock;
|
|
}
|
|
else
|
|
{
|
|
long id = MarketItems.Count > 0 ? MarketItems.Keys.Max() + 1 : 1;
|
|
if (name.Trim() == "")
|
|
{
|
|
name = item.Name;
|
|
}
|
|
marketItem = new()
|
|
{
|
|
Id = id,
|
|
User = user.Id,
|
|
Username = user.Username,
|
|
Item = item,
|
|
Price = price,
|
|
Stock = stock,
|
|
Name = name
|
|
};
|
|
MarketItems.Add(id, marketItem);
|
|
}
|
|
}
|
|
|
|
public void AddItems(User user, Item[] items, double price)
|
|
{
|
|
for (int index = 0; index < items.Length; index++)
|
|
{
|
|
Item item = items[index];
|
|
AddItem(user, item, price, 1);
|
|
}
|
|
}
|
|
|
|
public override bool Equals(IBaseEntity? other)
|
|
{
|
|
return other is Market && other.GetIdName() == GetIdName();
|
|
}
|
|
}
|
|
}
|