|
@@ -1,4 +1,5 @@
|
|
using System;
|
|
using System;
|
|
|
|
+using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using System.Threading.Tasks;
|
|
using MafiaTelegramBot.Controllers;
|
|
using MafiaTelegramBot.Controllers;
|
|
using MafiaTelegramBot.Game.GameRooms;
|
|
using MafiaTelegramBot.Game.GameRooms;
|
|
@@ -30,22 +31,26 @@ namespace MafiaTelegramBot.Models.Inlines
|
|
switch (action)
|
|
switch (action)
|
|
{
|
|
{
|
|
case "+":
|
|
case "+":
|
|
- if(!_room.CustomRoomSettings.ContainsKey(role)) _room.CustomRoomSettings.Add(role, 1);
|
|
|
|
- else if (_room.CustomRoomSettings[role] < _room.MaxPlayers)
|
|
|
|
|
|
+ if (role is Roles.Mafia)
|
|
{
|
|
{
|
|
- if (role is Roles.Mafia)
|
|
|
|
|
|
+ var blackRolesCount = _room.CustomRoomSettings.Count(pair => pair.Key
|
|
|
|
+ is Roles.Dame or Roles.Don or Roles.Werewolf or Roles.Lawyer);
|
|
|
|
+ if (_room.CustomRoomSettings.ContainsKey(Roles.Mafia))
|
|
|
|
+ blackRolesCount += _room.CustomRoomSettings[Roles.Mafia];
|
|
|
|
+ if (blackRolesCount < _room.Max[_room.Players.Count])
|
|
{
|
|
{
|
|
- var maximum = _room.Players.Count % 3 == 0
|
|
|
|
- ? _room.Players.Count / 3
|
|
|
|
- : _room.Players.Count / 3 - 1;
|
|
|
|
- if(_room.CustomRoomSettings[role] < maximum) _room.CustomRoomSettings[role]++;
|
|
|
|
|
|
+ if(!_room.CustomRoomSettings.ContainsKey(role)) _room.CustomRoomSettings.Add(role, 1);
|
|
|
|
+ else _room.CustomRoomSettings[role]++;
|
|
}
|
|
}
|
|
- else _room.CustomRoomSettings[role]++;
|
|
|
|
}
|
|
}
|
|
|
|
+ else if (_room.CustomRoomSettings[role] < _room.MaxPlayers) _room.CustomRoomSettings[role]++;
|
|
break;
|
|
break;
|
|
case "-":
|
|
case "-":
|
|
- if (_room.CustomRoomSettings[role] > 1) _room.CustomRoomSettings[role]--;
|
|
|
|
- else _room.CustomRoomSettings.Remove(role);
|
|
|
|
|
|
+ if (_room.CustomRoomSettings.ContainsKey(role))
|
|
|
|
+ {
|
|
|
|
+ if (_room.CustomRoomSettings[role] > 1) _room.CustomRoomSettings[role]--;
|
|
|
|
+ else _room.CustomRoomSettings.Remove(role);
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -53,7 +58,52 @@ namespace MafiaTelegramBot.Models.Inlines
|
|
private void SwitchRole(Roles role)
|
|
private void SwitchRole(Roles role)
|
|
{
|
|
{
|
|
if (_room.CustomRoomSettings.ContainsKey(role)) _room.CustomRoomSettings.Remove(role);
|
|
if (_room.CustomRoomSettings.ContainsKey(role)) _room.CustomRoomSettings.Remove(role);
|
|
- else _room.CustomRoomSettings.Add(role, 1);
|
|
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ switch (role)
|
|
|
|
+ {
|
|
|
|
+ case Roles.Don:
|
|
|
|
+ _room.CustomRoomSettings.Remove(Roles.Dame);
|
|
|
|
+ break;
|
|
|
|
+ case Roles.Dame:
|
|
|
|
+ _room.CustomRoomSettings.Remove(Roles.Don);
|
|
|
|
+ break;
|
|
|
|
+ case Roles.Cop:
|
|
|
|
+ _room.CustomRoomSettings.Remove(Roles.Journalist);
|
|
|
|
+ _room.CustomRoomSettings.Remove(Roles.Detective);
|
|
|
|
+ break;
|
|
|
|
+ case Roles.Journalist:
|
|
|
|
+ _room.CustomRoomSettings.Remove(Roles.Cop);
|
|
|
|
+ _room.CustomRoomSettings.Remove(Roles.Detective);
|
|
|
|
+ break;
|
|
|
|
+ case Roles.Detective:
|
|
|
|
+ _room.CustomRoomSettings.Remove(Roles.Cop);
|
|
|
|
+ _room.CustomRoomSettings.Remove(Roles.Journalist);
|
|
|
|
+ break;
|
|
|
|
+ case Roles.Doctor:
|
|
|
|
+ _room.CustomRoomSettings.Remove(Roles.Necromancer);
|
|
|
|
+ break;
|
|
|
|
+ case Roles.Necromancer:
|
|
|
|
+ _room.CustomRoomSettings.Remove(Roles.Doctor);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ if (role is Roles.Dame or Roles.Don or Roles.Werewolf or Roles.Lawyer)
|
|
|
|
+ {
|
|
|
|
+ var blackRolesCount = _room.CustomRoomSettings.Count(pair => pair.Key
|
|
|
|
+ is Roles.Dame or Roles.Don or Roles.Werewolf or Roles.Lawyer);
|
|
|
|
+ if (_room.CustomRoomSettings.ContainsKey(Roles.Mafia)) blackRolesCount += _room.CustomRoomSettings[Roles.Mafia];
|
|
|
|
+ if (blackRolesCount < _room.Max[_room.Players.Count])
|
|
|
|
+ {
|
|
|
|
+ if (role is Roles.Werewolf)
|
|
|
|
+ {
|
|
|
|
+ if(_room.CustomRoomSettings.Keys.Any(k => k
|
|
|
|
+ is Roles.Dame or Roles.Don or Roles.Mafia)) _room.CustomRoomSettings.Add(role, 1);
|
|
|
|
+ }
|
|
|
|
+ else _room.CustomRoomSettings.Add(role, 1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else _room.CustomRoomSettings.Add(role, 1);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|