Moonbase 64273ab651 Code Cleanup
Rework How Room OPs Are Handled Per Room (if the game server itself isn't handling it, just send it to the room every time)
2026-10-09 14:36:32 -07:00

39 lines
1.7 KiB
C#

namespace ReboundEmulator.Core.Rooms.GameRooms
{
[GameRoom("seaball")]
public class SkeeballRoom : IGameRoom
{
public Task OnGameJoinAsync(Room room, Player player) => Task.CompletedTask;
public Task<bool> OnMessageAsync(Room room, Player player, string op, Dictionary<string, string> msg)
{
return op switch
{
"sb.redy" => StartGame(room, player),
_ => Task.FromResult(false),
};
}
private static async Task<bool> StartGame(Room room, Player player)
{
string roundString = $"0;f;c;0;0;0;0,0,0,0,0~0,0,0,0,0~0,0,0,0,0~0,0,0,0,0~0,0,0,0,0~0~0,0,0,0,0~-~-~-~-~-~f,f,f,f,f~0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0~0,0,0,0~0,0,0,0~0,0,0,0~-~-1~0~t~0~1000,1000,1000,1000~0~0~t~-1~0~-~;-;-;-;0;0;0;{player.ScreenName};-;0;0.1~5~10~1,2,3,3,2,1~1,2,3,3,2,1~1,2,3,3,2,1~2,4,6,6,4,2~10,20,30,30,20,10~20,40,60,60,40,20~-~100~1000~500~1,2,3,4,5~100~10,20,30,40,50~200~10~50~50~500~100,200,300~200,300,500~-100,-50~100,200,300~100~1000~5~5000~-1~;";
await player.SendAsync(("msg.op", "sb.state"), ("gs", roundString));
await Task.Delay(TimeSpan.FromSeconds(15));
await player.SendAsync(("msg.op", "sb.prep"), ("id", "1"), ("rnd", "0"), ("mode", "0"), ("opac", "1.0"), ("dur", "5000"));
await Task.Delay(TimeSpan.FromSeconds(5));
await player.SendAsync(("msg.op", "sb.play"), ("id", "1"), ("dur", "25000"));
return true;
}
public Task OnPlayerJoinedAsync(Room room, Player player) => Task.CompletedTask;
public Task OnPlayerLeftAsync(Room room, Player player) => Task.CompletedTask;
}
}