1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using MafiaTelegramBot.DataBase;
- using MafiaTelegramBot.Models;
- using MafiaTelegramBot.Resources;
- namespace MafiaTelegramBot.Game
- {
- public class GameRoom
- {
- private bool _isRunning;
-
- public int MaxPlayers = 10;
- private int _minPlayers = Constants.PLAYER_LIMITS_MIN;
- public virtual bool IsPrivate { get; protected set; } = false;
- public bool IsExtended { get; init; } = false;
- public string RoomName { get; init; } = "NoNameRoom";
- public User Creator { get; init; } = new();
- public readonly Dictionary<long, User> Players = new();
- public readonly Dictionary<string, string> Settings = new();
- public async Task<ResultCode> Start()
- {
- return await Task.Run(() =>
- {
- if (Players.Count < _minPlayers) return ResultCode.TooFewPlayers;
- if (Players.Count > MaxPlayers) return ResultCode.TooManyPlayers;
- if (_isRunning) return ResultCode.GameAlreadyRunning;
- _isRunning = true;
- //TODO game start logic
- return ResultCode.CodeOk;
- });
- }
- public async Task<List<User>> GetPlayers()
- {
- return await Task.Run(() =>
- {
- var players = Players.Values.ToList();
- players.Remove(Creator);
- return players;
- });
- }
- public bool IsFilled()
- {
- return Players.Count == MaxPlayers;
- }
- public async Task NotifyUserConnect(User user)
- {
- foreach (var player in Players.Values.Where(player => user.Id != player.Id))
- {
- await Bot.SendWithMarkdown2(player.ChatId, $"{strings.entry_another_user} _*{user.NickName}*_");
- }
- }
- }
- }
|