feat(CS): on-map siege countdown timer (S6 client protocol C1 B2 17/1E)
Some checks failed
.NET Core / build (push) Has been cancelled
Some checks failed
.NET Core / build (push) Has been cancelled
Client already renders the siege-map countdown but never received the packets. New ICastleSiegeStatusViewPlugIn + RemoteView impl send the raw S6 packets: C1 B2 17 (battle start/stop flag, arms the countdown) and C1 B2 1E (remaining hour/minute). CastleSiegeEventPlugIn broadcasts them to players on the battle map every 10s during Siege and sends stop at Settlement. No client changes. +1 test. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
// <copyright file="ICastleSiegeStatusViewPlugIn.cs" company="MUnique">
|
||||
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
|
||||
// </copyright>
|
||||
|
||||
namespace MUnique.OpenMU.GameLogic.Views.CastleSiege;
|
||||
|
||||
/// <summary>
|
||||
/// Interface of a view which drives the client's on-map Castle Siege countdown (Season 6 protocol
|
||||
/// C1 B2 17 = battle start/stop flag, C1 B2 1E = remaining hour/minute).
|
||||
/// </summary>
|
||||
public interface ICastleSiegeStatusViewPlugIn : IViewPlugIn
|
||||
{
|
||||
/// <summary>
|
||||
/// Sends the siege battle start/stop flag (C1 B2 17). The client only ticks its countdown while this is set.
|
||||
/// </summary>
|
||||
/// <param name="started">Whether the siege battle is running.</param>
|
||||
ValueTask SetBattleStateAsync(bool started);
|
||||
|
||||
/// <summary>
|
||||
/// Sends the remaining siege time as hour/minute (C1 B2 1E) to (re)seed the countdown.
|
||||
/// </summary>
|
||||
/// <param name="hour">The remaining hours.</param>
|
||||
/// <param name="minute">The remaining minutes.</param>
|
||||
ValueTask SetTimerAsync(byte hour, byte minute);
|
||||
}
|
||||
Reference in New Issue
Block a user