Keyboards.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using System.Collections.Generic;
  2. using MafiaTelegramBot.Game;
  3. using Telegram.Bot.Types.ReplyMarkups;
  4. namespace MafiaTelegramBot.Resources
  5. {
  6. public static class Keyboards
  7. {
  8. public static readonly ReplyKeyboardMarkup MainMenu = new(new[]
  9. {
  10. new KeyboardButton[] {keyboard.create_game},
  11. new KeyboardButton[] {keyboard.connect_game, keyboard.show_profile}
  12. }, true
  13. );
  14. public static readonly ReplyKeyboardMarkup OwnerGameMenu = new(new[]
  15. {
  16. new KeyboardButton[] {keyboard.begin_game, keyboard.room_settings},
  17. new KeyboardButton[] {keyboard.kick_player, keyboard.look_players_list},
  18. new KeyboardButton[] {keyboard.show_profile, keyboard.leave}
  19. }, true
  20. );
  21. public static readonly ReplyKeyboardMarkup PlayerGameMenu = new(new[]
  22. {
  23. new KeyboardButton[] {keyboard.show_profile, keyboard.look_players_list},
  24. new KeyboardButton[] {keyboard.leave}
  25. }, true
  26. );
  27. public static InlineKeyboardMarkup ConnectToRoomKeyboard(long userId)
  28. {
  29. return new(new[]
  30. {
  31. new[] {InlineKeyboardButton.WithCallbackData(strings.connect_to_public_room, $"{callback.connect_to_public_room}|{userId}")},
  32. new[] {InlineKeyboardButton.WithCallbackData(strings.connect_to_private_room, $"{callback.connect_to_private_room}|{userId}")}
  33. });
  34. }
  35. public static InlineKeyboardMarkup MakeRoomKeyboard(long userId)
  36. {
  37. return new(new[]
  38. {
  39. new[] {InlineKeyboardButton.WithCallbackData(strings.make_public_room, $"{callback.make_public_room}|{userId}")},
  40. new[] {InlineKeyboardButton.WithCallbackData(strings.make_private_room, $"{callback.make_private_room}|{userId}")}
  41. });
  42. }
  43. public static InlineKeyboardMarkup SetMaximumKeyboard(long userId)
  44. {
  45. return new (new[]
  46. {
  47. new[] {
  48. InlineKeyboardButton.WithCallbackData(strings.minimum_players_count, $"{callback.set_players_maximum}|{userId}|6"),
  49. },
  50. new[] {
  51. InlineKeyboardButton.WithCallbackData("7", $"{callback.set_players_maximum}|{userId}|7"),
  52. InlineKeyboardButton.WithCallbackData("8", $"{callback.set_players_maximum}|{userId}|8"),
  53. InlineKeyboardButton.WithCallbackData("9", $"{callback.set_players_maximum}|{userId}|9"),
  54. },
  55. new[] {
  56. InlineKeyboardButton.WithCallbackData("10", $"{callback.set_players_maximum}|{userId}|10"),
  57. InlineKeyboardButton.WithCallbackData("11", $"{callback.set_players_maximum}|{userId}|11"),
  58. InlineKeyboardButton.WithCallbackData("12", $"{callback.set_players_maximum}|{userId}|12"),
  59. },
  60. new[] {
  61. InlineKeyboardButton.WithCallbackData("13", $"{callback.set_players_maximum}|{userId}|13"),
  62. InlineKeyboardButton.WithCallbackData("14", $"{callback.set_players_maximum}|{userId}|14"),
  63. InlineKeyboardButton.WithCallbackData("15", $"{callback.set_players_maximum}|{userId}|15"),
  64. },
  65. new[] {
  66. InlineKeyboardButton.WithCallbackData(strings.maximum_players_count, $"{callback.set_players_maximum}|{userId}|16"),
  67. }
  68. });
  69. }
  70. public static InlineKeyboardMarkup ProfileKeyboard(long userId)
  71. {
  72. return new (new[]
  73. {
  74. new[] {
  75. InlineKeyboardButton.WithCallbackData(strings.shop, $"{callback.shop}|{userId}"),
  76. InlineKeyboardButton.WithCallbackData(strings.my_roles, $"{callback.my_roles}|{userId}")
  77. },
  78. new[] {InlineKeyboardButton.WithCallbackData(strings.settings, $"{callback.settings_profile}|{userId}")}
  79. });
  80. }
  81. public static InlineKeyboardMarkup StandartExtendedKeyboard(long userId, string type)
  82. {
  83. return new (new[]
  84. {
  85. new[] {
  86. InlineKeyboardButton.WithCallbackData(strings.standart, $"{callback.standart}|{userId}|{type}"),
  87. InlineKeyboardButton.WithCallbackData(strings.extended, $"{callback.extended}|{userId}|{type}")
  88. }
  89. });
  90. }
  91. public static InlineKeyboardMarkup ChangeNameKeyboard(long userId)
  92. {
  93. return new(InlineKeyboardButton.WithCallbackData(strings.change_name, $"{callback.change_nick_name}|{userId}"));
  94. }
  95. public static InlineKeyboardMarkup RoomsKeyboard(List<GameRoom> rooms, long userId)
  96. {
  97. var inlineButtons = new InlineKeyboardButton[rooms.Count];
  98. for (var i = 0; i < rooms.Count && i < Constants.MAX_SHOWING_ROOMS; ++i) // buttons
  99. {
  100. inlineButtons[i] = new InlineKeyboardButton
  101. {
  102. Text =
  103. $"{rooms[i].RoomName} ({rooms[i].Players.Values.Count.ToString()}/{rooms[i].MaxPlayers.ToString()})",
  104. CallbackData = $"{callback.connect_to_selected_room}|{userId}|{RoomEncrypter.FullToShort(rooms[i].RoomName)}"
  105. };
  106. }
  107. return new InlineKeyboardMarkup(inlineButtons);
  108. }
  109. }
  110. }