testing something, won't compile

This commit is contained in:
Master Kwoth 2017-10-19 14:10:22 +02:00
parent 9050291e85
commit fa0b9e4f80
3 changed files with 107 additions and 0 deletions

View File

@ -0,0 +1,40 @@
using NadekoBot.Core.Services;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace NadekoBot.Core.Modules.Gambling.Common
{
public class CurrencyRaffleGame
{
private readonly HashSet<(string, ulong)> _users = new HashSet<(string, ulong)>();
private readonly int _amount;
private readonly CurrencyService _cs;
private readonly DbService _db;
private bool running;
public CurrencyRaffleGame(int amount, CurrencyService cs, DbService db)
{
if (amount < 1)
throw new ArgumentOutOfRangeException();
_amount = amount;
_cs = cs;
_db = db;
}
public async Task<bool> AddUser(string username, ulong userId)
{
}
public void ForceStop()
{
lock (_locker)
{
running = false;
}
}
}
}

View File

@ -0,0 +1,22 @@
using NadekoBot.Common.Attributes;
using NadekoBot.Core.Modules.Gambling.Services;
using System.Threading.Tasks;
namespace NadekoBot.Modules.Gambling
{
public partial class Gambling
{
public class CurrencyRaffleCommands : NadekoSubmodule<CurrencyRaffleService>
{
[NadekoCommand, Usage, Description, Aliases]
public async Task RaffleCur(int amount)
{
if (_service.Games.TryAdd(Context.Channel.Id,
))
{
}
}
}
}
}

View File

@ -0,0 +1,45 @@
using System.Threading.Tasks;
using NadekoBot.Core.Services;
using System.Collections.Concurrent;
using NadekoBot.Core.Modules.Gambling.Common;
using System.Threading;
namespace NadekoBot.Core.Modules.Gambling.Services
{
public class CurrencyRaffleService : INService
{
private readonly SemaphoreSlim _locker = new SemaphoreSlim(1, 1);
private readonly DbService _db;
public ConcurrentDictionary<ulong, CurrencyRaffleGame> Games { get; }
public CurrencyRaffleService(DbService db)
{
_db = db;
}
public async Task JoinOrCreateGame(ulong channelId, string username,
ulong userId)
{
await _locker.WaitAsync().ConfigureAwait(false);
try
{
using (var uow = _db.UnitOfWork)
{
//remove money
if (!await _cs.RemoveAsync(userId, "Currency Raffle Join", _amount).ConfigureAwait(false))
return false;
}
//add to to list
if (_users.Add((username, userId)))
return false;
return true;
}
finally
{
_locker.Release();
}
}
}
}