mirror of
https://github.com/MSWS/TTT.git
synced 2025-12-08 23:36:38 -08:00
``` - Rename property `Name` to `Id` across various commands and classes for consistency and clarity, affecting files like `Test/SetRoleCommand.cs`, `GameHandlers/KarmaSyncer.cs`, and `Command/Test/TestCommand.cs`. - Add new interface `IIconManager` to manage player visibility with methods for handling up to 64 players using a bitmask in `API/Player/IIconManager.cs`. - Introduce `ShowIconsCommand` and `IndexCommand` classes to enhance game command functionality, leveraging the new `IIconManager` for icon management. - Implement a new shop item "Stickers" with associated classes `Stickers.cs`, `StickerListener.cs`, and `StickerMsgs.cs`, providing role-revealing capabilities for detective players. - Refactor shop item and command structures to use a new `BaseItem` abstract class, enhancing code organization and inheritance patterns. - Update logging in `Plugin/TTT.cs` to use `Id` instead of `Name` for module identification, standardizing log outputs. - Adjust visibility and color duration settings in `Listeners/ScreenColorApplier.cs` for improved gameplay feedback. - Refactor service registration and command handling to remove redundancies and improve icon manager integrations in files like `CS2ServiceCollection.cs` and `Command/Test/ScreenColorCommand.cs`. ```
33 lines
896 B
C#
33 lines
896 B
C#
using CounterStrikeSharp.API;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using TTT.API.Command;
|
|
using TTT.API.Game;
|
|
using TTT.API.Player;
|
|
|
|
namespace TTT.CS2.Command.Test;
|
|
|
|
public class StopCommand(IServiceProvider provider) : ICommand {
|
|
private readonly IGameManager games =
|
|
provider.GetRequiredService<IGameManager>();
|
|
|
|
public void Dispose() { }
|
|
public string Id => "stop";
|
|
|
|
public void Start() { }
|
|
|
|
public Task<CommandResult>
|
|
Execute(IOnlinePlayer? executor, ICommandInfo info) {
|
|
Server.NextWorldUpdate(() => {
|
|
if (games.ActiveGame is not {
|
|
State: State.COUNTDOWN or State.IN_PROGRESS
|
|
}) {
|
|
info.ReplySync("No game is currently running.");
|
|
return;
|
|
}
|
|
|
|
games.ActiveGame?.EndGame(
|
|
new EndReason($"Force stopped by {executor?.Name ?? "Console"}"));
|
|
});
|
|
return Task.FromResult(CommandResult.SUCCESS);
|
|
}
|
|
} |