From: Sombrio Date: Sun, 25 Oct 2020 21:40:34 +0000 (-0300) Subject: Xml documentation for the GameOptionsData class. (#85) X-Git-Tag: v1.2.2~77 X-Git-Url: https://git.deb.at/?a=commitdiff_plain;h=80c68c1a944ef6d47356a1295bdf4f8bc7e01a6b;p=rhonda%2Fimpostor.git Xml documentation for the GameOptionsData class. (#85) --- diff --git a/src/Impostor.Api/Innersloth/GameOptionsData.cs b/src/Impostor.Api/Innersloth/GameOptionsData.cs index 9bb30cd..98e0a1a 100644 --- a/src/Impostor.Api/Innersloth/GameOptionsData.cs +++ b/src/Impostor.Api/Innersloth/GameOptionsData.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using Impostor.Api.Net.Messages; @@ -6,54 +6,152 @@ namespace Impostor.Api.Innersloth { public class GameOptionsData { + /// + /// The latest major version of the game client. + /// public const int LatestVersion = 2; + /// + /// Gets or sets host's version of the game. + /// public byte Version { get; set; } + /// + /// Gets or sets the maximum amount of players for this lobby. + /// public byte MaxPlayers { get; set; } + /// + /// Gets or sets the language of the lobby as per enum. + /// public GameKeywords Keywords { get; set; } + /// + /// Gets or sets the MapId selected for this lobby as per values in . + /// + /// + /// Skeld = 0, MiraHQ = 1, Polus = 2. + /// public byte MapId { get; set; } + /// + /// Gets or sets the Player speed modifier. + /// public float PlayerSpeedMod { get; set; } + /// + /// Gets or sets the Light modifier for the players that are members of the crew as a multiplier value. + /// public float CrewLightMod { get; set; } + /// + /// Gets or sets the Light modifier for the players that are Impostors as a multiplier value. + /// public float ImpostorLightMod { get; set; } + /// + /// Gets or sets the Impostor cooldown to kill in seconds. + /// public float KillCooldown { get; set; } + /// + /// Gets or sets the number of common tasks. + /// public int NumCommonTasks { get; set; } + /// + /// Gets or sets the number of long tasks. + /// public int NumLongTasks { get; set; } + /// + /// Gets or sets the number of short tasks. + /// public int NumShortTasks { get; set; } + /// + /// Gets or sets the maximum amount of emergency meetings each player can call during the game in seconds. + /// public int NumEmergencyMeetings { get; set; } + /// + /// Gets or sets the cooldown between each time any player can call an emergency meeting in seconds. + /// public int EmergencyCooldown { get; set; } + /// + /// Gets or sets the number of impostors for this lobby. + /// public int NumImpostors { get; set; } + /// + /// Gets or sets a value indicating whether ghosts (dead crew members) can do tasks. + /// public bool GhostsDoTasks { get; set; } - public int KillDistance { get; set; } - + /// + /// Gets or sets the Kill as per values in . + /// + /// + /// Short = 0, Normal = 1, Long = 2. + /// + public KillDistances KillDistance { get; set; } + + /// + /// Gets or sets the time for discussion before voting time in seconds. + /// public int DiscussionTime { get; set; } + /// + /// Gets or sets the time for voting in seconds. + /// public int VotingTime { get; set; } + /// + /// Gets or sets a value indicating whether an ejected player is an impostor or not. + /// public bool ConfirmImpostor { get; set; } + /// + /// Gets or sets a value indicating whether players are able to see tasks being performed by other players. + /// + /// + /// By being set to true, tasks such as Empty Garbage, Submit Scan, Clear asteroids, Prime shields execution will be visible to other players. + /// public bool VisualTasks { get; set; } + /// + /// Gets or sets a value indicating whether the vote is anonymous. + /// public bool AnonymousVotes { get; set; } + /// + /// Gets or sets the task bar update mode as per values in . + /// public TaskBarUpdate TaskBarUpdate { get; set; } + /// + /// Gets or sets a value indicating whether the GameOptions are the default ones. + /// public bool IsDefaults { get; set; } + /// + /// Deserialize a packet/message to a new GameOptionsData object. + /// + /// Message reader object containing the raw message. + /// GameOptionsData object. + public static GameOptionsData DeserializeCreate(IMessageReader reader) + { + var options = new GameOptionsData(); + options.Deserialize(reader.ReadBytesAndSize()); + return options; + } + + /// + /// Serializes this instance of GameOptionsData object to a specified BinaryWriter. + /// + /// The stream to write the message to. + /// The version of the game. public void Serialize(BinaryWriter writer, byte version) { writer.Write((byte)version); @@ -97,6 +195,10 @@ namespace Impostor.Api.Innersloth } } + /// + /// Deserialize a ReadOnlyMemory object to this instance of the GameOptionsData object. + /// + /// Memory containing the message/packet. public void Deserialize(ReadOnlyMemory memory) { var bytes = memory.Span; @@ -118,7 +220,7 @@ namespace Impostor.Api.Innersloth NumEmergencyMeetings = bytes.ReadInt32(); NumImpostors = bytes.ReadByte(); - KillDistance = bytes.ReadByte(); + KillDistance = (KillDistances)bytes.ReadByte(); DiscussionTime = bytes.ReadInt32(); VotingTime = bytes.ReadInt32(); @@ -146,12 +248,5 @@ namespace Impostor.Api.Innersloth throw new ImpostorException($"Unknown GameOptionsData version {Version}."); } } - - public static GameOptionsData DeserializeCreate(IMessageReader reader) - { - var options = new GameOptionsData(); - options.Deserialize(reader.ReadBytesAndSize()); - return options; - } } } \ No newline at end of file diff --git a/src/Impostor.Api/Innersloth/KillDistances.cs b/src/Impostor.Api/Innersloth/KillDistances.cs new file mode 100644 index 0000000..b2ee5d9 --- /dev/null +++ b/src/Impostor.Api/Innersloth/KillDistances.cs @@ -0,0 +1,12 @@ +using System; + +namespace Impostor.Api.Innersloth +{ + [Flags] + public enum KillDistances : byte + { + Short = 0, + Normal = 1, + Long = 2, + } +}