public class AmongUsModifier
{
private const string RegionName = "Impostor";
+ public const ushort DefaultPort = 22023;
private readonly string _amongUsDir;
private readonly string _regionFile;
_regionFile = Path.Combine(amongUsDir, "regionInfo.dat");
}
- public async Task SaveIp(string ip)
+ public async Task SaveIp(string input)
{
// Filter out whitespace.
- ip = ip.Trim();
+ input = input.Trim();
+
+ // Split port from ip.
+ // Only IPv4 is supported so just do it simple.
+ var ip = string.Empty;
+ var port = DefaultPort;
+
+ var parts = input.Split(':');
+ if (parts.Length >= 1)
+ {
+ ip = parts[0];
+ }
+
+ if (parts.Length >= 2)
+ {
+ ushort.TryParse(parts[1], out port);
+ }
// Check if a valid IP address was entered.
if (!IPAddress.TryParse(ip, out var ipAddress))
return;
}
- WriteIp(ipAddress);
+ WriteIp(ipAddress, port);
}
/// <summary>
/// Writes an IP Address to the Among Us region file.
/// </summary>
/// <param name="ipAddress">The IPv4 address to write.</param>
- private void WriteIp(IPAddress ipAddress)
+ /// <param name="port"></param>
+ private void WriteIp(IPAddress ipAddress, ushort port)
{
if (ipAddress == null ||
ipAddress.AddressFamily != AddressFamily.InterNetwork)
var ip = ipAddress.ToString();
var region = new RegionInfo(RegionName, ip, new[]
{
- new ServerInfo($"{RegionName}-Master-1", ip, 22023)
+ new ServerInfo($"{RegionName}-Master-1", ip, port)
});
region.Serialize(writer);
- OnSaved(ip);
+ OnSaved(ip, port);
}
}
Error?.Invoke(this, new ErrorEventArgs(message));
}
- private void OnSaved(string ipAddress)
+ private void OnSaved(string ipAddress, ushort port)
{
- Saved?.Invoke(this, new SavedEventArgs(ipAddress));
+ Saved?.Invoke(this, new SavedEventArgs(ipAddress, port));
}
public event EventHandler<ErrorEventArgs> Error;