if (Api.PlayerCache[player.Uid].LastConnectIp == null) {
if (player.Ip == Api.PlayerCache[player.Uid].RegisterIp) {
Api.PlayerCache[player.Uid].Auth = Users.PlayerFlags.Idle;
Api.PlayerCache[player.Uid].LastConnectIp = Api.PlayerCache[player.Uid].ConnectIp;
Api.PlayerCache[player.Uid].ConnectIp = player.Ip;
JsonHelper.SaveFile(Api.PlayerCache, "Users.json");
} else {
Api.PlayerCache[player.Uid].Auth = Users.PlayerFlags.Auth;
}
} else {
if (Api.PlayerCache[player.Uid].LastConnectIp == player.Ip) {
Api.PlayerCache[player.Uid].Auth = Users.PlayerFlags.Idle;
Api.PlayerCache[player.Uid].LastConnectIp = Api.PlayerCache[player.Uid].ConnectIp;
Api.PlayerCache[player.Uid].ConnectIp = player.Ip;
JsonHelper.SaveFile(Api.PlayerCache, "Users.json");
} else {
Api.PlayerCache[player.Uid].Auth = Users.PlayerFlags.Auth;
}
}
Возможно хоть чуть-чуть сокрасить? Может дополнение какое-нибудь есть для VS2017? Resharper не предлагать так как он установлен
Если присмотреться, то разница заключается только в том, с чем сравнивается player.Ip. Остальные строки идентичные.
Правило сравнения можно описать так:
Если есть LastConnectIp, то сравнивать с ним, если нет с RegisterIp.
Для этого отлично подойдет оператор ??:
if ((Api.PlayerCache[player.Uid].LastConnectIp ?? Api.PlayerCache[player.Uid].RegisterIp) == player.Ip) {
Api.PlayerCache[player.Uid].Auth = Users.PlayerFlags.Idle;
Api.PlayerCache[player.Uid].LastConnectIp = Api.PlayerCache[player.Uid].ConnectIp;
Api.PlayerCache[player.Uid].ConnectIp = player.Ip;
JsonHelper.SaveFile(Api.PlayerCache, "Users.json");
} else {
Api.PlayerCache[player.Uid].Auth = Users.PlayerFlags.Auth;
}
Ну например так:
var currPlayer = Api.PlayerCache[player.Uid];
var ip = currPlayer.LastConnectIp ?? currPlayer.RegisterIp;
if (ip == player.Ip) {
currPlayer.Auth = Users.PlayerFlags.Idle;
currPlayer.LastConnectIp = currPlayer.ConnectIp;
currPlayer.ConnectIp = player.Ip;
JsonHelper.SaveFile(Api.PlayerCache, "Users.json");
} else {
currPlayer.Auth = Users.PlayerFlags.Auth;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей