Small changes/static refactoring
This commit is contained in:
parent
790b9f6d50
commit
ef393fb6c0
@ -948,7 +948,7 @@ public class GameAccount : PersistentRPCObject
|
||||
.SetName("D3.NotificationMessage.Payload")
|
||||
.SetValue(bgs.protocol.Variant.CreateBuilder().SetMessageValue(update.Build().ToByteString())));
|
||||
|
||||
LoggedInClient.MakeRPC((lid) =>
|
||||
LoggedInClient.MakeRpc((lid) =>
|
||||
bgs.protocol.notification.v1.NotificationListener.CreateStub(LoggedInClient).OnNotificationReceived(
|
||||
new HandlerController()
|
||||
{
|
||||
|
||||
@ -16,19 +16,19 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
{
|
||||
public class BattleBackend
|
||||
{
|
||||
private static readonly Logger Logger = LogManager.CreateLogger("BattleNetEmu");
|
||||
private static readonly Logger Logger = LogManager.CreateLogger("BattleBackend");
|
||||
|
||||
public WatsonTcpServer GameServerSocket;
|
||||
public readonly WatsonTcpServer GameServerSocket;
|
||||
|
||||
public struct ServerDescriptor
|
||||
{
|
||||
public string GameIP;
|
||||
public string GameIp;
|
||||
public int GamePort;
|
||||
};
|
||||
|
||||
public Dictionary<string, ServerDescriptor> GameServers = new Dictionary<string, ServerDescriptor>();
|
||||
public readonly Dictionary<string, ServerDescriptor> GameServers = new();
|
||||
|
||||
public Dictionary<string, ServerDescriptor> PvPGameServers = new Dictionary<string, ServerDescriptor>();
|
||||
private readonly Dictionary<string, ServerDescriptor> _pvPGameServers = new();
|
||||
|
||||
public BattleBackend(string battleHost, int port)
|
||||
{
|
||||
@ -38,33 +38,36 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
|
||||
private bool ReceiverClientConnected(string ipPort)
|
||||
{
|
||||
Logger.Info($"Blizzless server loaded {ipPort} - connecting...");
|
||||
Logger.Info($"Blizzless client connected {ipPort}...");
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool ReceiverClientDisconnected(string ipPort)
|
||||
{
|
||||
Logger.Warn("Blizzless server at {0} was disconnected!", ipPort);
|
||||
Logger.Warn("Blizzless client disconnected $[white]${0}$[/]$!", ipPort);
|
||||
if (GameServers.ContainsKey(ipPort)) GameServers.Remove(ipPort);
|
||||
if (PvPGameServers.ContainsKey(ipPort)) PvPGameServers.Remove(ipPort);
|
||||
if (_pvPGameServers.ContainsKey(ipPort)) _pvPGameServers.Remove(ipPort);
|
||||
|
||||
if (GameServers.Count == 0)
|
||||
Logger.Warn("GameServers list is empty! Unable to use PvE game activities atm.");
|
||||
if (PvPGameServers.Count == 0)
|
||||
if (_pvPGameServers.Count == 0)
|
||||
Logger.Warn("PvPGameServers list is empty! Unable to use PvP game activities atm.");
|
||||
return true;
|
||||
}
|
||||
|
||||
public void CreateGame(string ipPort, int GameId, int level, int act, int difficulty, int questId, int questStepId, bool isHardcore, int gamemode, bool iSseasoned, int perftest_id = 0)
|
||||
public void CreateGame(string ipPort, int gameId, int level, int act, int difficulty, int questId, int questStepId, bool isHardcore, int gameMode, bool isSeasoned, int perftestId = 0)
|
||||
{
|
||||
GameServerSocket.Send(ipPort, Encoding.UTF8.GetBytes(string.Format("diiiscg|{0}/{1}/{2}/{3}/{4}/{5}/{6}/{7}/{8}", GameId, level, act, difficulty, questId, questStepId, isHardcore, gamemode, iSseasoned, perftest_id)));
|
||||
Send(ipPort, $"diiiscg|{gameId}/{level}/{act}/{difficulty}/{questId}/{questStepId}/{isHardcore}/{gameMode}/{isSeasoned}");
|
||||
}
|
||||
|
||||
private void Send(string ipPort, string data)
|
||||
=> GameServerSocket.Send(ipPort, Encoding.UTF8.GetBytes(data));
|
||||
|
||||
private bool ReceiverMessageReceived(string ipPort, byte[] data)
|
||||
{
|
||||
string msg = "";
|
||||
if (data != null && data.Length > 0) msg = Encoding.UTF8.GetString(data);
|
||||
Logger.Trace("Message received from {0}: {1}", ipPort, msg);
|
||||
Logger.Trace("Message received from $[grey69]${0}$[/]$: $[white]${1}$[/]$", ipPort, msg);
|
||||
|
||||
var message = msg.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var args = message[1].Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
@ -72,134 +75,134 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
{
|
||||
case "rngsr":
|
||||
if (GameServers.ContainsKey(ipPort)) GameServers.Remove(ipPort);
|
||||
string rgs_ip = args[0];
|
||||
int rgs_port = int.Parse(args[1].Trim());
|
||||
GameServers.Add(ipPort, new ServerDescriptor { GameIP = rgs_ip, GamePort = rgs_port });
|
||||
Logger.Info("Game server was registered for Blizzless {0}:{1}.", rgs_ip, rgs_port);
|
||||
string rgsIp = args[0];
|
||||
int rgsPort = int.Parse(args[1].Trim());
|
||||
GameServers.Add(ipPort, new ServerDescriptor { GameIp = rgsIp, GamePort = rgsPort });
|
||||
Logger.Info("Game server was registered for Blizzless {0}:{1}.", rgsIp, rgsPort);
|
||||
break;
|
||||
case "rnpvpgsr":
|
||||
if (PvPGameServers.ContainsKey(ipPort)) PvPGameServers.Remove(ipPort);
|
||||
string rpgs_ip = args[0];
|
||||
int rpgs_port = int.Parse(args[1].Trim());
|
||||
PvPGameServers.Add(ipPort, new ServerDescriptor { GameIP = rpgs_ip, GamePort = rpgs_port });
|
||||
Logger.Info("PvP GameServer at {0}:{1} successfully signed and ready to work.", rpgs_ip, rpgs_port);
|
||||
if (_pvPGameServers.ContainsKey(ipPort)) _pvPGameServers.Remove(ipPort);
|
||||
string rpgsIp = args[0];
|
||||
int rpgsPort = int.Parse(args[1].Trim());
|
||||
_pvPGameServers.Add(ipPort, new ServerDescriptor { GameIp = rpgsIp, GamePort = rpgsPort });
|
||||
Logger.Info("PvP GameServer at {0}:{1} successfully signed and ready to work.", rpgsIp, rpgsPort);
|
||||
break;
|
||||
case "grachi":
|
||||
ulong gachi_accId = ulong.Parse(args[0].Trim());
|
||||
ulong gachi_achId = ulong.Parse(args[1].Trim());
|
||||
ulong gachiAccId = ulong.Parse(args[0].Trim());
|
||||
ulong gachiAchId = ulong.Parse(args[1].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
foreach (var gachi_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == gachi_accId))
|
||||
AchievementManager.GrantAchievement(gachi_invokerClient, gachi_achId);
|
||||
foreach (var gachiInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == gachiAccId))
|
||||
AchievementManager.GrantAchievement(gachiInvokerClient, gachiAchId);
|
||||
});
|
||||
break;
|
||||
case "gcrit":
|
||||
ulong gc_accId = ulong.Parse(args[0].Trim());
|
||||
ulong gc_criId = ulong.Parse(args[1].Trim());
|
||||
ulong gcAccId = ulong.Parse(args[0].Trim());
|
||||
ulong gcCriId = ulong.Parse(args[1].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
foreach (var gc_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == gc_accId))
|
||||
AchievementManager.GrantCriteria(gc_invokerClient, gc_criId);
|
||||
foreach (var gcInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == gcAccId))
|
||||
AchievementManager.GrantCriteria(gcInvokerClient, gcCriId);
|
||||
});
|
||||
break;
|
||||
case "upequt":
|
||||
ulong uq_accId = ulong.Parse(args[0].Trim());
|
||||
ulong uq_achId = ulong.Parse(args[1].Trim());
|
||||
uint uq_addCounter = uint.Parse(args[2].Trim());
|
||||
ulong uqAccId = ulong.Parse(args[0].Trim());
|
||||
ulong uqAchId = ulong.Parse(args[1].Trim());
|
||||
uint uqAddCounter = uint.Parse(args[2].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
foreach (var uq_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == uq_accId))
|
||||
AchievementManager.UpdateQuantity(uq_invokerClient, uq_achId, uq_addCounter);
|
||||
foreach (var uqInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == uqAccId))
|
||||
AchievementManager.UpdateQuantity(uqInvokerClient, uqAchId, uqAddCounter);
|
||||
});
|
||||
break;
|
||||
case "uoacce":
|
||||
ulong uac_accId = ulong.Parse(args[0].Trim());
|
||||
int uac_typeId = int.Parse(args[1].Trim());
|
||||
uint uac_addCounter = uint.Parse(args[2].Trim());
|
||||
int uac_comparand = int.Parse(args[3].Trim());
|
||||
ulong uac_achi = ulong.Parse(args[4].Trim());
|
||||
ulong uacAccId = ulong.Parse(args[0].Trim());
|
||||
int uacTypeId = int.Parse(args[1].Trim());
|
||||
uint uacAddCounter = uint.Parse(args[2].Trim());
|
||||
int uacComparand = int.Parse(args[3].Trim());
|
||||
ulong uacAchi = ulong.Parse(args[4].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
if (uac_achi == 0)
|
||||
foreach (var uac_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == uac_accId))
|
||||
AchievementManager.UpdateAllCounters(uac_invokerClient, uac_typeId, uac_addCounter, uac_comparand);
|
||||
if (uacAchi == 0)
|
||||
foreach (var uacInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == uacAccId))
|
||||
AchievementManager.UpdateAllCounters(uacInvokerClient, uacTypeId, uacAddCounter, uacComparand);
|
||||
else
|
||||
foreach (var uac_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == uac_accId))
|
||||
AchievementManager.UpdateAllCounters(uac_invokerClient, uac_typeId, uac_addCounter, uac_comparand);
|
||||
foreach (var uacInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == uacAccId))
|
||||
AchievementManager.UpdateAllCounters(uacInvokerClient, uacTypeId, uacAddCounter, uacComparand);
|
||||
});
|
||||
break;
|
||||
case "upsnaccr": //UpdateSingleAchievementCounter
|
||||
ulong usac_accId = ulong.Parse(args[0].Trim());
|
||||
ulong usac_achId = ulong.Parse(args[1].Trim());
|
||||
uint usac_addCounter = uint.Parse(args[2].Trim());
|
||||
ulong usacAccId = ulong.Parse(args[0].Trim());
|
||||
ulong usacAchId = ulong.Parse(args[1].Trim());
|
||||
uint usacAddCounter = uint.Parse(args[2].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
foreach (var usac_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == usac_accId))
|
||||
AchievementManager.UpdateQuantity(usac_invokerClient, usac_achId, usac_addCounter);
|
||||
foreach (var usacInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == usacAccId))
|
||||
AchievementManager.UpdateQuantity(usacInvokerClient, usacAchId, usacAddCounter);
|
||||
});
|
||||
break;
|
||||
case "cqc": //CheckQuestCriteria
|
||||
ulong cqc_accId = ulong.Parse(args[0].Trim());
|
||||
int cqc_qId = int.Parse(args[1].Trim());
|
||||
bool cqc_isCoop = (args[2].Trim() == "True" ? true : false);
|
||||
ulong cqcAccId = ulong.Parse(args[0].Trim());
|
||||
int cqcQId = int.Parse(args[1].Trim());
|
||||
bool cqcIsCoop = (args[2].Trim() == "True" ? true : false);
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
foreach (var cqc_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == cqc_accId))
|
||||
AchievementManager.CheckQuestCriteria(cqc_invokerClient, cqc_qId, cqc_isCoop);
|
||||
foreach (var cqcInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == cqcAccId))
|
||||
AchievementManager.CheckQuestCriteria(cqcInvokerClient, cqcQId, cqcIsCoop);
|
||||
});
|
||||
break;
|
||||
case "ckmc": //CheckKillMonsterCriteria
|
||||
ulong ckmc_accId = ulong.Parse(args[0].Trim());
|
||||
int ckmc_actorId = int.Parse(args[1].Trim());
|
||||
int ckmc_type = int.Parse(args[2].Trim());
|
||||
bool ckmc_isHardcore = (args[3].Trim() == "True" ? true : false);
|
||||
ulong ckmcAccId = ulong.Parse(args[0].Trim());
|
||||
int ckmcActorId = int.Parse(args[1].Trim());
|
||||
int ckmcType = int.Parse(args[2].Trim());
|
||||
bool ckmcIsHardcore = (args[3].Trim() == "True" ? true : false);
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
foreach (var ckmc_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == ckmc_accId))
|
||||
AchievementManager.CheckKillMonsterCriteria(ckmc_invokerClient, ckmc_actorId, ckmc_type, ckmc_isHardcore);
|
||||
foreach (var ckmcInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == ckmcAccId))
|
||||
AchievementManager.CheckKillMonsterCriteria(ckmcInvokerClient, ckmcActorId, ckmcType, ckmcIsHardcore);
|
||||
});
|
||||
break;
|
||||
case "clc": //CheckLevelCap
|
||||
ulong clc_accId = ulong.Parse(args[0].Trim());
|
||||
ulong clcAccId = ulong.Parse(args[0].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
foreach (var clc_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == clc_accId))
|
||||
AchievementManager.CheckLevelCap(clc_invokerClient);
|
||||
foreach (var clcInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == clcAccId))
|
||||
AchievementManager.CheckLevelCap(clcInvokerClient);
|
||||
});
|
||||
break;
|
||||
case "csic": //CheckSalvageItemCriteria
|
||||
ulong csic_accId = ulong.Parse(args[0].Trim());
|
||||
int csic_itemId = int.Parse(args[1].Trim());
|
||||
ulong csicAccId = ulong.Parse(args[0].Trim());
|
||||
int csicItemId = int.Parse(args[1].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
foreach (var csic_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == csic_accId))
|
||||
AchievementManager.CheckSalvageItemCriteria(csic_invokerClient, csic_itemId);
|
||||
foreach (var csicInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == csicAccId))
|
||||
AchievementManager.CheckSalvageItemCriteria(csicInvokerClient, csicItemId);
|
||||
});
|
||||
break;
|
||||
case "clac": //CheckLevelAreaCriteria
|
||||
ulong clac_accId = ulong.Parse(args[0].Trim());
|
||||
int clac_laId = int.Parse(args[1].Trim());
|
||||
ulong clacAccId = ulong.Parse(args[0].Trim());
|
||||
int clacLaId = int.Parse(args[1].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
foreach (var clac_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == clac_accId))
|
||||
AchievementManager.CheckLevelAreaCriteria(clac_invokerClient, clac_laId);
|
||||
foreach (var clacInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == clacAccId))
|
||||
AchievementManager.CheckLevelAreaCriteria(clacInvokerClient, clacLaId);
|
||||
});
|
||||
break;
|
||||
case "ccc": //CheckConversationCriteria
|
||||
ulong ccc_accId = ulong.Parse(args[0].Trim());
|
||||
int ccc_cId = int.Parse(args[1].Trim());
|
||||
ulong cccAccId = ulong.Parse(args[0].Trim());
|
||||
int cccCId = int.Parse(args[1].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
foreach (var ccc_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == ccc_accId))
|
||||
AchievementManager.CheckConversationCriteria(ccc_invokerClient, ccc_cId);
|
||||
foreach (var cccInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == cccAccId))
|
||||
AchievementManager.CheckConversationCriteria(cccInvokerClient, cccCId);
|
||||
});
|
||||
|
||||
break;
|
||||
case "plu": //ParagonLevelUp
|
||||
ulong plu_accId = ulong.Parse(args[0].Trim());
|
||||
ulong pluAccId = ulong.Parse(args[0].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
var plr_client = PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == plu_accId).FirstOrDefault();
|
||||
if (plr_client != null && plr_client.Account.GameAccount. Clan != null)
|
||||
plr_client.Account.GameAccount.Clan.ParagonRatings[plr_client.Account.GameAccount] = plr_client.Account.GameAccount.DBGameAccount.ParagonLevel;
|
||||
var plrClient = PlayerManager.OnlinePlayers.FirstOrDefault(c => c.Account.GameAccount.PersistentID == pluAccId);
|
||||
if (plrClient != null && plrClient.Account.GameAccount. Clan != null)
|
||||
plrClient.Account.GameAccount.Clan.ParagonRatings[plrClient.Account.GameAccount] = plrClient.Account.GameAccount.DBGameAccount.ParagonLevel;
|
||||
});
|
||||
break;
|
||||
case "uii": //UniqueItemIdentified
|
||||
ulong uii_accId = ulong.Parse(args[0].Trim());
|
||||
ulong uii_itemId = ulong.Parse(args[1].Trim());
|
||||
ulong uiiAccId = ulong.Parse(args[0].Trim());
|
||||
ulong uiiItemId = ulong.Parse(args[1].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
var plr_client = PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == uii_accId).FirstOrDefault();
|
||||
if (plr_client != null && plr_client.Account.GameAccount.Clan != null)
|
||||
var plrClient = PlayerManager.OnlinePlayers.FirstOrDefault(c => c.Account.GameAccount.PersistentID == uiiAccId);
|
||||
if (plrClient != null && plrClient.Account.GameAccount.Clan != null)
|
||||
{
|
||||
var dbItem = DBSessions.SessionGet<DBInventory>(uii_itemId);
|
||||
var dbItem = DBSessions.SessionGet<DBInventory>(uiiItemId);
|
||||
if (dbItem != null)
|
||||
{
|
||||
var generator = D3.Items.Generator.CreateBuilder()
|
||||
@ -219,92 +222,92 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
generator.AddBaseAffixes(result);
|
||||
}
|
||||
|
||||
plr_client.Account.GameAccount.Clan.AddNews(plr_client.Account.GameAccount, 0, generator.Build().ToByteArray());
|
||||
plrClient.Account.GameAccount.Clan.AddNews(plrClient.Account.GameAccount, 0, generator.Build().ToByteArray());
|
||||
}
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "uc": //UpdateClient
|
||||
ulong uc_accId = ulong.Parse(args[0].Trim());
|
||||
int uc_level = int.Parse(args[1].Trim());
|
||||
int uc_screen = int.Parse(args[2].Trim());
|
||||
ulong ucAccId = ulong.Parse(args[0].Trim());
|
||||
int ucLevel = int.Parse(args[1].Trim());
|
||||
int ucScreen = int.Parse(args[2].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
try
|
||||
{
|
||||
foreach (var uc_invokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == uc_accId))
|
||||
foreach (var ucInvokerClient in PlayerManager.OnlinePlayers.Where(c => c.Account.GameAccount.PersistentID == ucAccId))
|
||||
{
|
||||
if (!uc_invokerClient.Account.IsOnline) continue;
|
||||
uc_invokerClient.Account.GameAccount.ChangedFields.SetPresenceFieldValue(uc_invokerClient.Account.GameAccount.CurrentToon.HeroLevelField);
|
||||
uc_invokerClient.Account.GameAccount.ChangedFields.SetPresenceFieldValue(uc_invokerClient.Account.GameAccount.CurrentToon.HeroParagonLevelField);
|
||||
if (uc_screen != -1) uc_invokerClient.Account.GameAccount.ScreenStatus = D3.PartyMessage.ScreenStatus.CreateBuilder().SetScreen(uc_screen).SetStatus(0).Build();
|
||||
uc_invokerClient.Account.GameAccount.NotifyUpdate();
|
||||
if (!ucInvokerClient.Account.IsOnline) continue;
|
||||
ucInvokerClient.Account.GameAccount.ChangedFields.SetPresenceFieldValue(ucInvokerClient.Account.GameAccount.CurrentToon.HeroLevelField);
|
||||
ucInvokerClient.Account.GameAccount.ChangedFields.SetPresenceFieldValue(ucInvokerClient.Account.GameAccount.CurrentToon.HeroParagonLevelField);
|
||||
if (ucScreen != -1) ucInvokerClient.Account.GameAccount.ScreenStatus = D3.PartyMessage.ScreenStatus.CreateBuilder().SetScreen(ucScreen).SetStatus(0).Build();
|
||||
ucInvokerClient.Account.GameAccount.NotifyUpdate();
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
});
|
||||
break;
|
||||
case "gpj": //PlayerJoined
|
||||
int gpj_gameId = int.Parse(args[0].Trim());
|
||||
int gpjGameId = int.Parse(args[0].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
try
|
||||
{
|
||||
GameFactoryManager.FindGameByDynamicId((ulong)gpj_gameId).PlayersCount++;
|
||||
GameFactoryManager.FindGameByDynamicId((ulong)gpjGameId).PlayersCount++;
|
||||
}
|
||||
catch { }
|
||||
});
|
||||
break;
|
||||
case "gpl": //PlayerLeft
|
||||
int gpl_gameId = int.Parse(args[0].Trim());
|
||||
int gplGameId = int.Parse(args[0].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
try
|
||||
{
|
||||
if (GameFactoryManager.FindGameByDynamicId((ulong)gpl_gameId) != null)
|
||||
GameFactoryManager.FindGameByDynamicId((ulong)gpl_gameId).PlayersCount--;
|
||||
if (GameFactoryManager.FindGameByDynamicId((ulong)gplGameId) != null)
|
||||
GameFactoryManager.FindGameByDynamicId((ulong)gplGameId).PlayersCount--;
|
||||
|
||||
}
|
||||
catch { }
|
||||
});
|
||||
break;
|
||||
case "gsp": //SetGamePublic
|
||||
int gsp_gameId = int.Parse(args[0].Trim());
|
||||
int gspGameId = int.Parse(args[0].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
try
|
||||
{
|
||||
GameFactoryManager.FindGameByDynamicId((ulong)gsp_gameId).Public = true;
|
||||
GameFactoryManager.FindGameByDynamicId((ulong)gspGameId).Public = true;
|
||||
}
|
||||
catch { }
|
||||
});
|
||||
break;
|
||||
case "tsc": //ToonStateChanged
|
||||
int tsc_toonId = int.Parse(args[0].Trim());
|
||||
int tscToonId = int.Parse(args[0].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
try
|
||||
{
|
||||
Toons.ToonManager.GetToonByLowID((ulong)tsc_toonId).StateChanged();
|
||||
Toons.ToonManager.GetToonByLowID((ulong)tscToonId).StateChanged();
|
||||
}
|
||||
catch { }
|
||||
});
|
||||
break;
|
||||
case "pvpsp": //PvPSaveProgress
|
||||
ulong pvpsp_gAccId = ulong.Parse(args[0].Trim());
|
||||
int pvpsp_kills = int.Parse(args[1].Trim());
|
||||
int pvpsp_wins = int.Parse(args[2].Trim());
|
||||
int pvpsp_gold = int.Parse(args[3].Trim());
|
||||
ulong pvpspGAccId = ulong.Parse(args[0].Trim());
|
||||
int pvpspKills = int.Parse(args[1].Trim());
|
||||
int pvpspWins = int.Parse(args[2].Trim());
|
||||
int pvpspGold = int.Parse(args[3].Trim());
|
||||
System.Threading.Tasks.Task.Delay(1).ContinueWith((a) => {
|
||||
var gAcc = GameAccountManager.GetAccountByPersistentID(pvpsp_gAccId);
|
||||
var gAcc = GameAccountManager.GetAccountByPersistentID(pvpspGAccId);
|
||||
|
||||
lock (gAcc.DBGameAccount)
|
||||
{
|
||||
var dbGAcc = gAcc.DBGameAccount;
|
||||
dbGAcc.PvPTotalKilled += (ulong)pvpsp_kills;
|
||||
dbGAcc.PvPTotalWins += (ulong)pvpsp_wins;
|
||||
dbGAcc.PvPTotalGold += (ulong)pvpsp_gold;
|
||||
dbGAcc.PvPTotalKilled += (ulong)pvpspKills;
|
||||
dbGAcc.PvPTotalWins += (ulong)pvpspWins;
|
||||
dbGAcc.PvPTotalGold += (ulong)pvpspGold;
|
||||
DBSessions.SessionUpdate(dbGAcc);
|
||||
}
|
||||
});
|
||||
break;
|
||||
default:
|
||||
Logger.Warn("Unknown message type: {0}|{1}", message[0], message[1]);
|
||||
Logger.Warn("Unknown message type: $[white]${0}|{1}$[/]$", message[0], message[1]);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
|
||||
@ -30,33 +30,33 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
public ISocketChannel SocketConnection { get; private set; }
|
||||
public IChannelHandlerContext Connect { get; private set; }
|
||||
public bool AuthenticationStatus = false;
|
||||
public ClientLocale ClientLanguage = ClientLocale.enUS;
|
||||
public ClientLocale ClientLanguage = ClientLocale.EN_US;
|
||||
public IRpcController ListenerController;
|
||||
private uint _tokenCounter = 0;
|
||||
public static NO_RESPONSE NO_RESPONSE = NO_RESPONSE.CreateBuilder().Build();
|
||||
public static NO_RESPONSE NoResponse = NO_RESPONSE.CreateBuilder().Build();
|
||||
private readonly Dictionary<int, RPCCallBack> _pendingResponses = new(); // TODO: Check usage and remove if not needed
|
||||
public bgs.protocol.v2.Attribute AttributeOfServer { get; set; }
|
||||
|
||||
public Account Account { get; set; }
|
||||
public const byte ServiceReply = 0xFE;
|
||||
public const byte SERVICE_REPLY = 0xFE;
|
||||
public SslStream Ssl = null;
|
||||
private static int REQUEST_SERVICE_ID = 0;
|
||||
private static int RESPONSE_SERVICE_ID = 254;
|
||||
private static int _requestServiceId = 0;
|
||||
private static int _responseServiceId = 254;
|
||||
//public object clientLock = new object();
|
||||
public readonly object _serviceLock = new();
|
||||
public object messageLock = new();
|
||||
public readonly object ServiceLock = new();
|
||||
public object MessageLock = new();
|
||||
private ulong _listenerId; // last targeted rpc object.
|
||||
public bool MOTDSent { get; private set; }
|
||||
public bool MotdSent { get; private set; }
|
||||
private ConcurrentDictionary<ulong, ulong> MappedObjects { get; set; }
|
||||
public bool GuildChannelsRevealed = false;
|
||||
public string GameTeamTag = "";
|
||||
public ulong CID = 0;
|
||||
public readonly ulong Cid = 0;
|
||||
|
||||
#region current channel
|
||||
|
||||
public Dictionary<ulong, Channel> Channels = new();
|
||||
public readonly Dictionary<ulong, Channel> Channels = new();
|
||||
|
||||
public List<Channel> ChatChannels = new();
|
||||
public readonly List<Channel> ChatChannels = new();
|
||||
public Channel PartyChannel; //Used for all non game related messages
|
||||
public Channel GameChannel; //Used for all game related messages
|
||||
|
||||
@ -103,7 +103,7 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
.AddAttribute(bgs.protocol.Attribute.CreateBuilder().SetName("whisper")
|
||||
.SetValue(Variant.CreateBuilder().SetStringValue(text).Build()).Build()).Build();
|
||||
|
||||
MakeRPC((lid) => bgs.protocol.notification.v1.NotificationListener.CreateStub(this).
|
||||
MakeRpc((lid) => bgs.protocol.notification.v1.NotificationListener.CreateStub(this).
|
||||
OnNotificationReceived(new HandlerController()
|
||||
{
|
||||
ListenerId = lid
|
||||
@ -120,8 +120,8 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
|
||||
public void LeaveAllChannels()
|
||||
{
|
||||
List<Channel> _channels = Channels.Values.ToList();
|
||||
foreach (var channel in _channels)
|
||||
List<Channel> channels = Channels.Values.ToList();
|
||||
foreach (var channel in channels)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -134,12 +134,12 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
|
||||
#endregion
|
||||
|
||||
public BattleClient(ISocketChannel socketChannel, DotNetty.Handlers.Tls.TlsHandler TLS)
|
||||
public BattleClient(ISocketChannel socketChannel, DotNetty.Handlers.Tls.TlsHandler tls)
|
||||
{
|
||||
SocketConnection = socketChannel;
|
||||
Services = new Dictionary<uint, uint>();
|
||||
MappedObjects = new ConcurrentDictionary<ulong, ulong>();
|
||||
MOTDSent = false;
|
||||
MotdSent = false;
|
||||
if (SocketConnection.Active)
|
||||
Logger.Trace("Client - {0} - successfully encrypted the connection", socketChannel.RemoteAddress);
|
||||
}
|
||||
@ -150,7 +150,7 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
Header header = msg.GetHeader();
|
||||
byte[] payload = (byte[])msg.GetPayload();
|
||||
|
||||
if (msg.GetHeader().ServiceId == RESPONSE_SERVICE_ID)
|
||||
if (msg.GetHeader().ServiceId == _responseServiceId)
|
||||
{
|
||||
if (_pendingResponses.Count == 0) return;
|
||||
RPCCallBack done = _pendingResponses[(int)header.Token];
|
||||
@ -276,7 +276,7 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
#endif
|
||||
|
||||
service.CallMethod(method, controller, message,
|
||||
(IMessage m) => { sendResponse(ctx, (int)header.Token, m, controller.Status); });
|
||||
(IMessage m) => { SendResponse(ctx, (int)header.Token, m, controller.Status); });
|
||||
}
|
||||
}
|
||||
catch (NotImplementedException)
|
||||
@ -319,69 +319,69 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
/// <summary>
|
||||
/// Deutsch.
|
||||
/// </summary>
|
||||
deDE,
|
||||
DE_DE,
|
||||
/// <summary>
|
||||
/// English (EU)
|
||||
/// </summary>
|
||||
enGB,
|
||||
EN_GB,
|
||||
/// <summary>
|
||||
/// English (Singapore)
|
||||
/// </summary>
|
||||
enSG,
|
||||
EN_SG,
|
||||
/// <summary>
|
||||
/// English (US)
|
||||
/// </summary>
|
||||
enUS,
|
||||
EN_US,
|
||||
/// <summary>
|
||||
/// Espanol
|
||||
/// </summary>
|
||||
esES,
|
||||
ES_ES,
|
||||
/// <summary>
|
||||
/// Espanol (Mexico)
|
||||
/// </summary>
|
||||
esMX,
|
||||
ES_MX,
|
||||
/// <summary>
|
||||
/// French
|
||||
/// </summary>
|
||||
frFR,
|
||||
FR_FR,
|
||||
/// <summary>
|
||||
/// Italian
|
||||
/// </summary>
|
||||
itIT,
|
||||
IT_IT,
|
||||
/// <summary>
|
||||
/// Korean
|
||||
/// </summary>
|
||||
koKR,
|
||||
KO_KR,
|
||||
/// <summary>
|
||||
/// Polish
|
||||
/// </summary>
|
||||
plPL,
|
||||
PL_PL,
|
||||
/// <summary>
|
||||
/// Portuguese
|
||||
/// </summary>
|
||||
ptPT,
|
||||
PT_PT,
|
||||
/// <summary>
|
||||
/// Portuguese (Brazil)
|
||||
/// </summary>
|
||||
ptBR,
|
||||
PT_BR,
|
||||
/// <summary>
|
||||
/// Russian
|
||||
/// </summary>
|
||||
ruRU,
|
||||
RU_RU,
|
||||
/// <summary>
|
||||
/// Turkish
|
||||
/// </summary>
|
||||
trTR,
|
||||
TR_TR,
|
||||
/// <summary>
|
||||
/// Chinese
|
||||
/// </summary>
|
||||
zhCN,
|
||||
ZH_CN,
|
||||
/// <summary>
|
||||
/// Chinese (Taiwan)
|
||||
/// </summary>
|
||||
zhTW
|
||||
ZH_TW
|
||||
}
|
||||
public virtual void MakeTargetedRPC(RPCObject targetObject, Action<ulong> rpc)
|
||||
public virtual void MakeTargetedRpc(RPCObject targetObject, Action<ulong> rpc)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
@ -400,7 +400,7 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
//}
|
||||
});
|
||||
}
|
||||
public virtual void MakeRPC(Action<ulong> rpc)
|
||||
public virtual void MakeRpc(Action<ulong> rpc)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
@ -444,12 +444,12 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
|
||||
var serviceId = Services[serviceHash];
|
||||
var token = _tokenCounter++;
|
||||
sendRequest(Connect, serviceHash, GetMethodId(method), token, request, (uint)_listenerId, status);
|
||||
SendRequest(Connect, serviceHash, GetMethodId(method), token, request, (uint)_listenerId, status);
|
||||
}
|
||||
public static void sendRequest(IChannelHandlerContext ctx, uint serviceHash, uint methodId, uint token, IMessage request, uint listenerId, uint status)
|
||||
public static void SendRequest(IChannelHandlerContext ctx, uint serviceHash, uint methodId, uint token, IMessage request, uint listenerId, uint status)
|
||||
{
|
||||
Header.Builder builder = Header.CreateBuilder();
|
||||
builder.SetServiceId((uint)REQUEST_SERVICE_ID);
|
||||
builder.SetServiceId((uint)_requestServiceId);
|
||||
builder.SetServiceHash(serviceHash);
|
||||
builder.SetMethodId(methodId);
|
||||
if (listenerId != 0)
|
||||
@ -462,7 +462,7 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
}
|
||||
/// <param name="localObjectId">The local objectId.</param>
|
||||
/// <param name="remoteObjectId">The remote objectId over client.</param>
|
||||
public void MapLocalObjectID(ulong localObjectId, ulong remoteObjectId)
|
||||
public void MapLocalObjectId(ulong localObjectId, ulong remoteObjectId)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -501,10 +501,10 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
return (uint)(method.Index) + 1;
|
||||
}
|
||||
}
|
||||
public static void sendResponse(IChannelHandlerContext ctx, int token, IMessage response, uint status)
|
||||
public static void SendResponse(IChannelHandlerContext ctx, int token, IMessage response, uint status)
|
||||
{
|
||||
Header.Builder builder = Header.CreateBuilder();
|
||||
builder.SetServiceId((uint)RESPONSE_SERVICE_ID);
|
||||
builder.SetServiceId((uint)_responseServiceId);
|
||||
builder.SetToken((uint)token);
|
||||
builder.SetStatus(status);
|
||||
if (response != null)
|
||||
@ -512,15 +512,15 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
|
||||
ctx.Channel.WriteAndFlushAsync(new BNetPacket(builder.Build(), response));
|
||||
}
|
||||
public void SendMOTD()
|
||||
public void SendMotd()
|
||||
{
|
||||
if (MOTDSent)
|
||||
if (MotdSent)
|
||||
return;
|
||||
|
||||
var motd = "Welcome to BlizzLess.Net Alpha-Build Server!";
|
||||
|
||||
SendServerWhisper(motd);
|
||||
MOTDSent = true;
|
||||
MotdSent = true;
|
||||
}
|
||||
|
||||
public override void ChannelInactive(IChannelHandlerContext context)
|
||||
|
||||
@ -26,9 +26,9 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
public static BattleClient GetClientByEmail(string email) => OnlinePlayers.FirstOrDefault(cli => cli.Account.Email == email);
|
||||
public static BattleClient GetClientByBattleTag(string battleTag) => OnlinePlayers.FirstOrDefault(cli => cli.Account.BattleTag == battleTag);
|
||||
|
||||
public static BattleClient GetClientByCID(ulong cid)
|
||||
public static BattleClient GetClientByCid(ulong cid)
|
||||
{
|
||||
return OnlinePlayers.FirstOrDefault(bc => bc.CID == cid);
|
||||
return OnlinePlayers.FirstOrDefault(bc => bc.Cid == cid);
|
||||
}
|
||||
|
||||
public static void SendWhisper(string message)
|
||||
|
||||
@ -93,7 +93,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
this.IsGuildChatChannel = false;
|
||||
|
||||
if ((client != null) && (remoteObjectId != 0))
|
||||
client.MapLocalObjectID(this.DynamicId, remoteObjectId);
|
||||
client.MapLocalObjectId(this.DynamicId, remoteObjectId);
|
||||
|
||||
if (this.IsChatChannel)
|
||||
Program.Watchdog.AddTask(10, new Action(() =>
|
||||
@ -175,7 +175,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
.AddStateChange(channelMember)
|
||||
.Build();
|
||||
|
||||
client.MakeTargetedRPC(this, (lid) =>
|
||||
client.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(client).OnUpdateMemberState(new HandlerController() { ListenerId = lid } , notification, callback => { }));
|
||||
}
|
||||
|
||||
@ -201,7 +201,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
//Notify all Channel members
|
||||
foreach (var n_member in this.Members.Keys)
|
||||
{
|
||||
n_member.MakeTargetedRPC(this, (lid) =>
|
||||
n_member.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(n_member).OnUpdateMemberState(new HandlerController() { ListenerId = lid }, notification, callback => { }));
|
||||
}
|
||||
}
|
||||
@ -213,7 +213,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
|
||||
public void Join(BattleClient client, ulong remoteObjectId)
|
||||
{
|
||||
client.MapLocalObjectID(this.DynamicId, remoteObjectId);
|
||||
client.MapLocalObjectId(this.DynamicId, remoteObjectId);
|
||||
this.AddMember(client);
|
||||
}
|
||||
|
||||
@ -249,7 +249,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
.AddRangeMember(members)
|
||||
.Build();
|
||||
|
||||
client.MakeTargetedRPC(this, (lid) =>
|
||||
client.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(client).OnJoin(new HandlerController() { ListenerId = lid }, joinNotification, callback => { }));
|
||||
|
||||
|
||||
@ -276,7 +276,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
|
||||
foreach (var pair in this.Members.Where(pair => pair.Value != addedMember)) // only send this to previous members of the channel.
|
||||
{
|
||||
pair.Key.MakeTargetedRPC(this, (lid) =>
|
||||
pair.Key.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(pair.Key).OnMemberAdded(new HandlerController() { ListenerId = lid }, addNotification, callback => { }));
|
||||
}
|
||||
|
||||
@ -348,10 +348,10 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
foreach (var pair in this.Members)
|
||||
{
|
||||
if (pair.Key != client)
|
||||
pair.Key.MakeTargetedRPC(this, (lid) =>
|
||||
pair.Key.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(pair.Key).OnMemberRemoved(new HandlerController() { ListenerId = lid }, removeMessage, callback => { }));
|
||||
}
|
||||
client.MakeTargetedRPC(this, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(client).OnLeave(new HandlerController() { ListenerId = lid }, leaveMessage, callback =>
|
||||
client.MakeTargetedRpc(this, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(client).OnLeave(new HandlerController() { ListenerId = lid }, leaveMessage, callback =>
|
||||
{
|
||||
client.UnmapLocalObjectId(this.DynamicId); }));
|
||||
|
||||
@ -431,7 +431,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
foreach (var pair in this.Members) // send to all members of channel even to the actual one that sent the message else he'll not see his own message.
|
||||
{
|
||||
if (pair.Key.Account.IgnoreIds.Contains(client.Account.PersistentID)) continue;
|
||||
pair.Key.MakeTargetedRPC(this, (lid) =>
|
||||
pair.Key.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(pair.Key).OnSendMessage(new HandlerController() { ListenerId = lid }, notification, callback => { }));
|
||||
}
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
|
||||
var notification = bgs.protocol.channel.v1.InvitationAddedNotification.CreateBuilder().SetInvitation(invitation);
|
||||
|
||||
invitee.MakeTargetedRPC(this, (lid) =>
|
||||
invitee.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelInvitationListener.CreateStub(invitee).OnReceivedInvitationAdded(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
}
|
||||
|
||||
@ -80,7 +80,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
_onGoingInvitations.Remove(invitation.Id);
|
||||
GoingInvitations.Remove(request.InvitationId);
|
||||
|
||||
client.MakeTargetedRPC(this, (lid) =>
|
||||
client.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelInvitationListener.CreateStub(client).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
|
||||
channel.Join(client, request.ObjectId);
|
||||
@ -92,7 +92,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
|
||||
foreach (var member in channel.Members.Keys)
|
||||
{
|
||||
member.MakeTargetedRPC(channel, (lid) =>
|
||||
member.MakeTargetedRpc(channel, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(member).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, stateNotification, callback => { }));
|
||||
}
|
||||
|
||||
@ -157,7 +157,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
.SetStateChange(channelStatePermission)
|
||||
.Build();
|
||||
|
||||
JoinClient.MakeTargetedRPC(JoinClient.CurrentChannel, (lid) =>
|
||||
JoinClient.MakeTargetedRpc(JoinClient.CurrentChannel, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(JoinClient).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notificationPermission, callback => { }));
|
||||
}
|
||||
gameFound.StartGame(clients, gameFound.DynamicId);
|
||||
@ -171,7 +171,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
.SetValue(Variant.CreateBuilder().SetUintValue(gameFound.RequestId).Build());
|
||||
notificationFound.AddAttribute(attrF);
|
||||
|
||||
JoinClient.MakeRPC((lid) =>
|
||||
JoinClient.MakeRpc((lid) =>
|
||||
bgs.protocol.notification.v1.NotificationListener.CreateStub(JoinClient).OnNotificationReceived(new HandlerController() { ListenerId = lid }, notificationFound.Build(), callback => { }));
|
||||
|
||||
|
||||
@ -186,7 +186,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
notification.SetGameHandle(gh);
|
||||
|
||||
System.Threading.Tasks.Task.Delay(2000).ContinueWith(delegate {
|
||||
JoinClient.MakeRPC((lid) => bgs.protocol.matchmaking.v1.GameRequestListener.CreateStub(JoinClient).OnMatchmakingResult(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
JoinClient.MakeRpc((lid) => bgs.protocol.matchmaking.v1.GameRequestListener.CreateStub(JoinClient).OnMatchmakingResult(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
});
|
||||
#endregion
|
||||
|
||||
@ -236,9 +236,9 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
|
||||
foreach (var member in channel.Members.Keys)
|
||||
{
|
||||
member.MakeTargetedRPC(channel, (lid) =>
|
||||
member.MakeTargetedRpc(channel, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(member).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, stateNotification, callback => { }));
|
||||
member.MakeTargetedRPC(channel, (lid) =>
|
||||
member.MakeTargetedRpc(channel, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(member).OnJoin(new HandlerController() { ListenerId = lid }, joinstateNotification, callback => { }));
|
||||
}
|
||||
|
||||
@ -264,7 +264,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
|
||||
|
||||
|
||||
client.MakeTargetedRPC(this, (lid) => bgs.protocol.channel.v1.ChannelInvitationListener.CreateStub(client).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
client.MakeTargetedRpc(this, (lid) => bgs.protocol.channel.v1.ChannelInvitationListener.CreateStub(client).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
|
||||
|
||||
channel.Join(mem, request.ObjectId); // add invitee to channel -- so inviter and other members will also be notified too.
|
||||
@ -281,7 +281,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
|
||||
foreach (var member in channel.Members.Keys)
|
||||
{
|
||||
member.MakeTargetedRPC(channel, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(member).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, stateNotification, callback => { }));
|
||||
member.MakeTargetedRpc(channel, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(member).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, stateNotification, callback => { }));
|
||||
//member.MakeTargetedRPC(channel, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(member).OnJoin(new HandlerController() { ListenerId = lid }, build, callback => { }));
|
||||
}
|
||||
|
||||
@ -305,7 +305,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
_onGoingInvitations.Remove(invitation.Id);
|
||||
GoingInvitations.Remove(request.InvitationId);
|
||||
|
||||
inviter.LoggedInClient.MakeTargetedRPC(inviter.LoggedInClient.CurrentChannel, (lid) =>
|
||||
inviter.LoggedInClient.MakeTargetedRpc(inviter.LoggedInClient.CurrentChannel, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(inviter.LoggedInClient).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
}
|
||||
|
||||
@ -328,7 +328,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
_onGoingInvitations.Remove(request.InvitationId);
|
||||
GoingInvitations.Remove(request.InvitationId);
|
||||
|
||||
inviter.LoggedInClient.MakeTargetedRPC(inviter.LoggedInClient.CurrentChannel, (lid) =>
|
||||
inviter.LoggedInClient.MakeTargetedRpc(inviter.LoggedInClient.CurrentChannel, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(client).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, updateChannelNotification.Build(), callback => { }));
|
||||
|
||||
//notify invitee about revoke
|
||||
@ -339,7 +339,7 @@ namespace DiIiS_NA.LoginServer.ChannelSystem
|
||||
|
||||
if (Subscribers.All(subscriber => subscriber.Key.Account.GameAccount.BnetEntityId.Low != invitation.InviteeIdentity.AccountId.Low)) return;
|
||||
|
||||
client.MakeTargetedRPC(this, (lid) =>
|
||||
client.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelInvitationListener.CreateStub(client).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, invitationRemoved.Build(), callback => { }));
|
||||
}
|
||||
|
||||
|
||||
@ -67,7 +67,7 @@ namespace DiIiS_NA.LoginServer.FriendsSystem
|
||||
.SetInvitation(invitation)
|
||||
.SetAccountId(invitee.BnetEntityId);
|
||||
|
||||
invitee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) =>
|
||||
invitee.GameAccount.LoggedInClient.MakeTargetedRpc(FriendManager.Instance, (lid) =>
|
||||
bgs.protocol.friends.v1.FriendsListener.CreateStub(invitee.GameAccount.LoggedInClient).OnReceivedInvitationAdded(new HandlerController() { ListenerId = lid }, notification.Build(), callback =>
|
||||
{
|
||||
}));
|
||||
@ -89,13 +89,13 @@ namespace DiIiS_NA.LoginServer.FriendsSystem
|
||||
|
||||
if (inviter.GameAccount.IsOnline)
|
||||
{
|
||||
inviter.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) =>
|
||||
inviter.GameAccount.LoggedInClient.MakeTargetedRpc(FriendManager.Instance, (lid) =>
|
||||
bgs.protocol.friends.v1.FriendsListener.CreateStub(inviter.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, declinedNotification, callback => { }));
|
||||
}
|
||||
|
||||
if (invitee.GameAccount.IsOnline)
|
||||
{
|
||||
invitee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) =>
|
||||
invitee.GameAccount.LoggedInClient.MakeTargetedRpc(FriendManager.Instance, (lid) =>
|
||||
bgs.protocol.friends.v1.FriendsListener.CreateStub(invitee.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, declinedNotification, callback => { }));
|
||||
}
|
||||
|
||||
@ -144,19 +144,19 @@ namespace DiIiS_NA.LoginServer.FriendsSystem
|
||||
|
||||
if (inviter.GameAccount.IsOnline)
|
||||
{
|
||||
inviter.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) =>
|
||||
inviter.GameAccount.LoggedInClient.MakeTargetedRpc(FriendManager.Instance, (lid) =>
|
||||
bgs.protocol.friends.v1.FriendsListener.CreateStub(inviter.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, notificationToInviter, callback => { }));
|
||||
|
||||
inviter.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) =>
|
||||
inviter.GameAccount.LoggedInClient.MakeTargetedRpc(FriendManager.Instance, (lid) =>
|
||||
bgs.protocol.friends.v1.FriendsListener.CreateStub(inviter.GameAccount.LoggedInClient).OnFriendAdded(new HandlerController() { ListenerId = lid }, friendAddedNotificationToInviter, callback => { }));
|
||||
}
|
||||
|
||||
if (invitee.GameAccount.IsOnline)
|
||||
{
|
||||
invitee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) =>
|
||||
invitee.GameAccount.LoggedInClient.MakeTargetedRpc(FriendManager.Instance, (lid) =>
|
||||
bgs.protocol.friends.v1.FriendsListener.CreateStub(invitee.GameAccount.LoggedInClient).OnFriendAdded(new HandlerController() { ListenerId = lid }, friendAddedNotificationToInvitee, callback => { }));
|
||||
|
||||
invitee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) =>
|
||||
invitee.GameAccount.LoggedInClient.MakeTargetedRpc(FriendManager.Instance, (lid) =>
|
||||
bgs.protocol.friends.v1.FriendsListener.CreateStub(invitee.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, notificationToInvitee, callback => { }));
|
||||
}
|
||||
|
||||
@ -177,13 +177,13 @@ namespace DiIiS_NA.LoginServer.FriendsSystem
|
||||
|
||||
if (inviter.GameAccount.IsOnline)
|
||||
{
|
||||
inviter.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) =>
|
||||
inviter.GameAccount.LoggedInClient.MakeTargetedRpc(FriendManager.Instance, (lid) =>
|
||||
bgs.protocol.friends.v1.FriendsListener.CreateStub(inviter.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, declinedNotification, callback => { }));
|
||||
}
|
||||
|
||||
if (invitee.GameAccount.IsOnline)
|
||||
{
|
||||
invitee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) =>
|
||||
invitee.GameAccount.LoggedInClient.MakeTargetedRpc(FriendManager.Instance, (lid) =>
|
||||
bgs.protocol.friends.v1.FriendsListener.CreateStub(invitee.GameAccount.LoggedInClient).OnReceivedInvitationRemoved(new HandlerController() { ListenerId = lid }, declinedNotification, callback => { }));
|
||||
}
|
||||
|
||||
@ -215,13 +215,13 @@ namespace DiIiS_NA.LoginServer.FriendsSystem
|
||||
.SetAccountId(remover.BnetEntityId)
|
||||
.Build();
|
||||
|
||||
client.MakeTargetedRPC(FriendManager.Instance, (lid) =>
|
||||
client.MakeTargetedRpc(FriendManager.Instance, (lid) =>
|
||||
bgs.protocol.friends.v1.FriendsListener.CreateStub(client).OnFriendRemoved(new HandlerController() { ListenerId = lid }, notifyRemover, callback => { }));
|
||||
|
||||
if (removee.GameAccount.IsOnline)
|
||||
{
|
||||
var notifyRemovee = bgs.protocol.friends.v1.FriendNotification.CreateBuilder().SetTarget(removerAsFriend).SetAccountId(removee.BnetEntityId).Build();
|
||||
removee.GameAccount.LoggedInClient.MakeTargetedRPC(FriendManager.Instance, (lid) => bgs.protocol.friends.v1.FriendsListener.CreateStub(removee.GameAccount.LoggedInClient).OnFriendRemoved(new HandlerController() { ListenerId = lid }, notifyRemovee, callback => { }));
|
||||
removee.GameAccount.LoggedInClient.MakeTargetedRpc(FriendManager.Instance, (lid) => bgs.protocol.friends.v1.FriendsListener.CreateStub(removee.GameAccount.LoggedInClient).OnFriendRemoved(new HandlerController() { ListenerId = lid }, notifyRemovee, callback => { }));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -39,7 +39,7 @@ namespace DiIiS_NA.LoginServer.FriendsSystem
|
||||
notifyBlock.SetPlayer(blockedPlayer);
|
||||
notifyBlock.SetGameAccountId(blocked.BnetEntityId);
|
||||
|
||||
client.MakeTargetedRPC(UserManager.Instance, (lid) =>
|
||||
client.MakeTargetedRpc(UserManager.Instance, (lid) =>
|
||||
bgs.protocol.user_manager.v1.UserManagerListener.CreateStub(client).OnBlockedPlayerAdded(new HandlerController() { ListenerId = lid }, notifyBlock.Build(), callback => { }));
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ namespace DiIiS_NA.LoginServer.FriendsSystem
|
||||
var notifyUnblock = bgs.protocol.user_manager.v1.BlockedPlayerRemovedNotification.CreateBuilder();
|
||||
notifyUnblock.SetPlayer(blockedPlayer);
|
||||
|
||||
client.MakeTargetedRPC(UserManager.Instance, (lid) =>
|
||||
client.MakeTargetedRpc(UserManager.Instance, (lid) =>
|
||||
bgs.protocol.user_manager.v1.UserManagerListener.CreateStub(client).OnBlockedPlayerRemoved(new HandlerController() { ListenerId = lid }, notifyUnblock.Build(), callback => { }));
|
||||
}
|
||||
|
||||
|
||||
@ -95,7 +95,7 @@ namespace DiIiS_NA.LoginServer.GamesSystem
|
||||
|
||||
foreach (var client in clients)
|
||||
{
|
||||
client.MapLocalObjectID(this.DynamicId, objectId);
|
||||
client.MapLocalObjectId(this.DynamicId, objectId);
|
||||
this.SendConnectionInfo(client);
|
||||
client.Account.GameAccount.ScreenStatus = D3.PartyMessage.ScreenStatus.CreateBuilder().SetScreen(0).SetStatus(0).Build();
|
||||
client.Account.GameAccount.NotifyUpdate();
|
||||
@ -109,7 +109,7 @@ namespace DiIiS_NA.LoginServer.GamesSystem
|
||||
{
|
||||
foreach (var client in clients)
|
||||
{
|
||||
client.MapLocalObjectID(this.DynamicId, objectId);
|
||||
client.MapLocalObjectId(this.DynamicId, objectId);
|
||||
this.SendConnectionInfo(client);
|
||||
client.Account.GameAccount.ScreenStatus = D3.PartyMessage.ScreenStatus.CreateBuilder().SetScreen(1).SetStatus(1).Build();
|
||||
client.Account.GameAccount.NotifyUpdate();
|
||||
@ -119,7 +119,7 @@ namespace DiIiS_NA.LoginServer.GamesSystem
|
||||
public bgs.protocol.games.v2.ConnectInfo GetConnectionInfoForClient(BattleClient client)
|
||||
{
|
||||
return bgs.protocol.games.v2.ConnectInfo.CreateBuilder()
|
||||
.SetAddress(bgs.protocol.Address.CreateBuilder().SetAddress_(this.GServer.Value.GameIP).SetPort((uint)this.GServer.Value.GamePort))
|
||||
.SetAddress(bgs.protocol.Address.CreateBuilder().SetAddress_(this.GServer.Value.GameIp).SetPort((uint)this.GServer.Value.GamePort))
|
||||
.SetToken(Google.ProtocolBuffers.ByteString.CopyFrom(new byte[] { 0x31, 0x33, 0x38, 0x38, 0x35, 0x34, 0x33, 0x33, 0x32, 0x30, 0x38, 0x34, 0x30, 0x30, 0x38, 0x38, 0x35, 0x37, 0x39, 0x36 }))
|
||||
.AddAttribute(bgs.protocol.Attribute.CreateBuilder().SetName("Token").SetValue(bgs.protocol.Variant.CreateBuilder().SetUintValue(0xee34d06ffe821c43L)))
|
||||
|
||||
@ -146,7 +146,7 @@ namespace DiIiS_NA.LoginServer.GamesSystem
|
||||
.SetChannelState(channelStatePrivacyLevel)
|
||||
.Build();
|
||||
|
||||
client.MakeTargetedRPC(client.CurrentChannel, (lid) =>
|
||||
client.MakeTargetedRpc(client.CurrentChannel, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(client).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notificationPrivacyLevel, callback => { }));
|
||||
|
||||
|
||||
@ -166,7 +166,7 @@ namespace DiIiS_NA.LoginServer.GamesSystem
|
||||
.SetChannelState(channelStatePartyLock)
|
||||
.Build();
|
||||
|
||||
client.MakeTargetedRPC(client.CurrentChannel, (lid) =>
|
||||
client.MakeTargetedRpc(client.CurrentChannel, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(client).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notificationPartyLock, callback => { }));
|
||||
}
|
||||
}
|
||||
|
||||
@ -486,7 +486,7 @@ namespace DiIiS_NA.LoginServer.GuildSystem
|
||||
.SetTargetAccountId(account.Owner.BnetEntityId)
|
||||
.Build();
|
||||
|
||||
account.LoggedInClient.MakeRPC((lid) =>
|
||||
account.LoggedInClient.MakeRpc((lid) =>
|
||||
bgs.protocol.notification.v1.NotificationListener.CreateStub(account.LoggedInClient).OnNotificationReceived(new HandlerController() { ListenerId = lid
|
||||
}, notificationBuilder, callback => { }));
|
||||
|
||||
@ -507,7 +507,7 @@ namespace DiIiS_NA.LoginServer.GuildSystem
|
||||
.SetTargetAccountId(account.Owner.BnetEntityId)
|
||||
.Build();
|
||||
|
||||
account.LoggedInClient.MakeRPC((lid) =>
|
||||
account.LoggedInClient.MakeRpc((lid) =>
|
||||
bgs.protocol.notification.v1.NotificationListener.CreateStub(account.LoggedInClient).OnNotificationReceived(new HandlerController() { ListenerId = lid
|
||||
}, chatNotificationBuilder, callback => { }));
|
||||
}
|
||||
@ -540,7 +540,7 @@ namespace DiIiS_NA.LoginServer.GuildSystem
|
||||
|
||||
foreach (var member in this.Channel.Members)
|
||||
//member.Key.MakeTargetedRPC(this.Channel, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(member.Key).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notification, callback => { }));
|
||||
member.Key.MakeTargetedRPC(this.Channel, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(member.Key).OnJoin(new HandlerController() { ListenerId = lid }, altnotification, callback => { }));
|
||||
member.Key.MakeTargetedRpc(this.Channel, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(member.Key).OnJoin(new HandlerController() { ListenerId = lid }, altnotification, callback => { }));
|
||||
}
|
||||
|
||||
public void UpdateMemberAttributes(GameAccount member)
|
||||
@ -565,7 +565,7 @@ namespace DiIiS_NA.LoginServer.GuildSystem
|
||||
.Build();
|
||||
|
||||
foreach (var mbr in this.Channel.Members)
|
||||
mbr.Key.MakeTargetedRPC(this.Channel, (lid) =>
|
||||
mbr.Key.MakeTargetedRpc(this.Channel, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(mbr.Key).OnUpdateMemberState(new HandlerController() { ListenerId = lid }, notification, callback => { }));
|
||||
}
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ namespace DiIiS_NA.LoginServer.Objects
|
||||
{
|
||||
public class EntityIdPresenceFieldList
|
||||
{
|
||||
public List<bgs.protocol.EntityId> Value = new List<bgs.protocol.EntityId>();
|
||||
public List<bgs.protocol.EntityId> Value = new();
|
||||
|
||||
protected FieldKeyHelper.Program _program;
|
||||
protected FieldKeyHelper.OriginatingClass _originatingClass;
|
||||
|
||||
@ -33,7 +33,7 @@ namespace DiIiS_NA.LoginServer.Objects
|
||||
if (this.Subscribers.ContainsKey(client)) return;
|
||||
|
||||
this.Subscribers.TryAdd(client, 0);
|
||||
client.MapLocalObjectID(this.DynamicId, remoteObjectId);
|
||||
client.MapLocalObjectId(this.DynamicId, remoteObjectId);
|
||||
|
||||
if (client.SocketConnection.Active)
|
||||
{
|
||||
@ -56,7 +56,7 @@ namespace DiIiS_NA.LoginServer.Objects
|
||||
return new List<bgs.protocol.presence.v1.FieldOperation>();
|
||||
}
|
||||
|
||||
public Helpers.FieldKeyHelper ChangedFields = new Helpers.FieldKeyHelper();
|
||||
public readonly Helpers.FieldKeyHelper ChangedFields = new();
|
||||
|
||||
protected void NotifySubscriptionAdded(BattleClient client)
|
||||
{
|
||||
@ -96,8 +96,8 @@ namespace DiIiS_NA.LoginServer.Objects
|
||||
var altnotification = bgs.protocol.channel.v1.JoinNotification.CreateBuilder().SetChannelState(channelState);
|
||||
if (gameAccount.LoggedInClient != null)
|
||||
{
|
||||
gameAccount.LoggedInClient.MakeTargetedRPC(this, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(gameAccount.LoggedInClient).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
gameAccount.LoggedInClient.MakeTargetedRPC(this, (lid) =>
|
||||
gameAccount.LoggedInClient.MakeTargetedRpc(this, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(gameAccount.LoggedInClient).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
gameAccount.LoggedInClient.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(gameAccount.LoggedInClient).OnJoin(new HandlerController() { ListenerId = lid }, altnotification.Build(), callback => { }));
|
||||
}
|
||||
}
|
||||
@ -110,10 +110,10 @@ namespace DiIiS_NA.LoginServer.Objects
|
||||
var channelState = bgs.protocol.channel.v1.ChannelState.CreateBuilder().SetExtension(bgs.protocol.presence.v1.ChannelState.Presence, state);
|
||||
var builder = bgs.protocol.channel.v1.JoinNotification.CreateBuilder().SetChannelState(channelState);
|
||||
var notification = bgs.protocol.channel.v1.UpdateChannelStateNotification.CreateBuilder().SetStateChange(channelState);
|
||||
client.MakeTargetedRPC(this, (lid) =>
|
||||
client.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(client).OnJoin(new HandlerController() { ListenerId = lid }, builder.Build(), callback => { }));
|
||||
|
||||
client.MakeTargetedRPC(this, (lid) =>
|
||||
client.MakeTargetedRpc(this, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(client).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ namespace DiIiS_NA.LoginServer.Objects
|
||||
private static readonly Logger Logger = LogManager.CreateLogger();
|
||||
|
||||
private static ulong _nextId = 10000;
|
||||
public static readonly Dictionary<ulong, RPCObject> Objects = new Dictionary<ulong, RPCObject>();
|
||||
public static readonly Dictionary<ulong, RPCObject> Objects = new();
|
||||
|
||||
static RPCObjectManager()
|
||||
{ }
|
||||
|
||||
@ -88,21 +88,21 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
}
|
||||
switch (request.Locale)
|
||||
{
|
||||
case "deDE": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.deDE; break;
|
||||
case "enGB": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.enGB; break;
|
||||
case "enSG": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.enSG; break;
|
||||
case "enUS": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.enUS; break;
|
||||
case "esES": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.esES; break;
|
||||
case "esMX": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.esMX; break;
|
||||
case "frFR": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.frFR; break;
|
||||
case "itIT": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.itIT; break;
|
||||
case "koKR": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.koKR; break;
|
||||
case "plPL": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.plPL; break;
|
||||
case "ptBR": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.ptBR; break;
|
||||
case "ptPT": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.ptPT; break;
|
||||
case "ruRU": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.ruRU; break;
|
||||
case "trTR": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.trTR; break;
|
||||
case "zhCN": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.zhCN; break;
|
||||
case "deDE": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.DE_DE; break;
|
||||
case "enGB": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.EN_GB; break;
|
||||
case "enSG": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.EN_SG; break;
|
||||
case "enUS": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.EN_US; break;
|
||||
case "esES": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.ES_ES; break;
|
||||
case "esMX": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.ES_MX; break;
|
||||
case "frFR": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.FR_FR; break;
|
||||
case "itIT": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.IT_IT; break;
|
||||
case "koKR": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.KO_KR; break;
|
||||
case "plPL": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.PL_PL; break;
|
||||
case "ptBR": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.PT_BR; break;
|
||||
case "ptPT": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.PT_PT; break;
|
||||
case "ruRU": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.RU_RU; break;
|
||||
case "trTR": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.TR_TR; break;
|
||||
case "zhCN": ((HandlerController)controller).Client.ClientLanguage = BattleClient.ClientLocale.ZH_CN; break;
|
||||
}
|
||||
done(NoData.CreateBuilder().Build());
|
||||
var builder = ChallengeExternalRequest.CreateBuilder();
|
||||
@ -124,7 +124,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
builder.SetPayload(ByteString.CopyFromUtf8(
|
||||
$"http://{Program.RESTSERVERIP}:{REST.Config.Instance.PORT}/battlenet/login"));
|
||||
|
||||
((HandlerController)controller).Client.MakeRPC((lid) => ChallengeListener.CreateStub(((HandlerController)controller).Client).OnExternalChallenge(controller, builder.Build(), callback => { }));
|
||||
((HandlerController)controller).Client.MakeRpc((lid) => ChallengeListener.CreateStub(((HandlerController)controller).Client).OnExternalChallenge(controller, builder.Build(), callback => { }));
|
||||
#endregion
|
||||
}
|
||||
break;
|
||||
@ -191,7 +191,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
if (((HandlerController)controller).Client.Account == null)
|
||||
{
|
||||
var complete = LogonResult.CreateBuilder().SetErrorCode(2);
|
||||
((HandlerController)controller).Client.MakeRPC((lid) => AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnLogonComplete(controller, complete.Build(), callback => { }));
|
||||
((HandlerController)controller).Client.MakeRpc((lid) => AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnLogonComplete(controller, complete.Build(), callback => { }));
|
||||
((HandlerController)controller).Client.SocketConnection.CloseAsync();
|
||||
((HandlerController)controller).Client.Connect.CloseAsync();
|
||||
}
|
||||
@ -210,12 +210,12 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
.SetErrorCode(0)
|
||||
.AddGameAccountId(((HandlerController)controller).Client.Account.GameAccount.BnetEntityId); //D3
|
||||
((HandlerController)controller).Client.Account.GameAccount.LoggedInClient = ((HandlerController)controller).Client;
|
||||
((HandlerController)controller).Client.MakeRPC((lid) => AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnLogonComplete(controller, complete.Build(), callback => { }));
|
||||
((HandlerController)controller).Client.MakeRpc((lid) => AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnLogonComplete(controller, complete.Build(), callback => { }));
|
||||
|
||||
PlayerManager.PlayerConnected(((HandlerController)controller).Client);
|
||||
|
||||
var selectedGameAccount = GameAccountSelectedRequest.CreateBuilder().SetResult(0).SetGameAccountId(((HandlerController)controller).Client.Account.GameAccount.BnetEntityId);
|
||||
((HandlerController)controller).Client.MakeRPC((lid) =>
|
||||
((HandlerController)controller).Client.MakeRpc((lid) =>
|
||||
AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnGameAccountSelected(new HandlerController() { ListenerId = lid }, selectedGameAccount.Build(), callback => { }));
|
||||
}
|
||||
#endregion
|
||||
|
||||
@ -101,9 +101,9 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
|
||||
var builder = JoinNotification.CreateBuilder().SetChannelState(ChannelState.CreateBuilder().AddInvitation(invitation.Clone()));
|
||||
|
||||
((HandlerController) controller).Client.MakeTargetedRPC(channel, (lid) => ChannelListener.CreateStub(((HandlerController) controller).Client)
|
||||
((HandlerController) controller).Client.MakeTargetedRpc(channel, (lid) => ChannelListener.CreateStub(((HandlerController) controller).Client)
|
||||
.OnUpdateChannelState(controller, notification.Build(), callback => { }));
|
||||
((HandlerController) controller).Client.MakeTargetedRPC(channel, (lid) =>
|
||||
((HandlerController) controller).Client.MakeTargetedRpc(channel, (lid) =>
|
||||
ChannelListener.CreateStub(((HandlerController) controller).Client).OnJoin(new HandlerController() { ListenerId = lid }, builder.Build(), callback => { }));
|
||||
|
||||
_invitationManager.HandleInvitation(((HandlerController) controller).Client, invitation.Build());
|
||||
@ -137,7 +137,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
|
||||
var notification = SuggestionAddedNotification.CreateBuilder().SetSuggestion(suggestion);
|
||||
|
||||
suggestee.LoggedInClient.MakeTargetedRPC(_invitationManager, (lid) =>
|
||||
suggestee.LoggedInClient.MakeTargetedRpc(_invitationManager, (lid) =>
|
||||
ChannelInvitationListener.CreateStub(suggestee.LoggedInClient).OnReceivedSuggestionAdded(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
}
|
||||
|
||||
|
||||
@ -346,7 +346,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
//Notify all Channel members
|
||||
foreach (var member in channel.Members.Keys)
|
||||
{
|
||||
member.MakeTargetedRPC(channel, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(member).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notification, callback => { }));
|
||||
member.MakeTargetedRpc(channel, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub(member).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notification, callback => { }));
|
||||
}
|
||||
}
|
||||
|
||||
@ -401,7 +401,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
//Notify all Channel members
|
||||
foreach (var member in channel.Members.Keys)
|
||||
{
|
||||
member.MakeTargetedRPC(channel, (lid) =>
|
||||
member.MakeTargetedRpc(channel, (lid) =>
|
||||
bgs.protocol.channel.v1.ChannelListener.CreateStub(member).OnUpdateMemberState(new HandlerController() { ListenerId = lid }, notification, callback => { }));
|
||||
}
|
||||
//*/
|
||||
|
||||
@ -72,7 +72,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
|
||||
QueueEntryNotification.Builder qen = QueueEntryNotification.CreateBuilder();
|
||||
qen.SetRequestId(id).SetWaitTimes(timers).AddMember(member).SetRequestInitiator(member);
|
||||
((HandlerController) controller).Client.MakeRPC((lid) => GameRequestListener.CreateStub(((HandlerController) controller).Client).OnQueueEntry(new HandlerController() { ListenerId = lid }, qen.Build(), callback => { }));
|
||||
((HandlerController) controller).Client.MakeRpc((lid) => GameRequestListener.CreateStub(((HandlerController) controller).Client).OnQueueEntry(new HandlerController() { ListenerId = lid }, qen.Build(), callback => { }));
|
||||
#endregion
|
||||
|
||||
#region Update Queue
|
||||
@ -80,7 +80,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
qun.SetRequestId(id)
|
||||
.SetWaitTimes(timers)
|
||||
.SetIsMatchmaking(true);
|
||||
((HandlerController) controller).Client.MakeRPC((lid) => GameRequestListener.CreateStub(((HandlerController) controller).Client).OnQueueUpdate(new HandlerController() { ListenerId = lid }, qun.Build(), callback => { }));
|
||||
((HandlerController) controller).Client.MakeRpc((lid) => GameRequestListener.CreateStub(((HandlerController) controller).Client).OnQueueUpdate(new HandlerController() { ListenerId = lid }, qun.Build(), callback => { }));
|
||||
#endregion
|
||||
|
||||
|
||||
@ -124,7 +124,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
|
||||
var joinNotification = bgs.protocol.channel.v1.JoinNotification.CreateBuilder().SetChannelState(channelStatePermission).Build();
|
||||
|
||||
(((HandlerController) controller).Client).MakeTargetedRPC((((HandlerController) controller).Client).CurrentChannel, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub((((HandlerController) controller).Client)).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notificationPermission, callback => { }));
|
||||
(((HandlerController) controller).Client).MakeTargetedRpc((((HandlerController) controller).Client).CurrentChannel, (lid) => bgs.protocol.channel.v1.ChannelListener.CreateStub((((HandlerController) controller).Client)).OnUpdateChannelState(new HandlerController() { ListenerId = lid }, notificationPermission, callback => { }));
|
||||
}
|
||||
gameFound.StartGame(clients, gameFound.DynamicId);
|
||||
|
||||
@ -137,7 +137,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
.SetValue(Variant.CreateBuilder().SetUintValue(gameFound.RequestId).Build());
|
||||
notificationFound.AddAttribute(attrF);
|
||||
|
||||
(((HandlerController) controller).Client).MakeRPC((lid) =>
|
||||
(((HandlerController) controller).Client).MakeRpc((lid) =>
|
||||
bgs.protocol.notification.v1.NotificationListener.CreateStub((((HandlerController) controller).Client)).OnNotificationReceived(new HandlerController() { ListenerId = lid }, notificationFound.Build(), callback => { }));
|
||||
|
||||
|
||||
@ -152,7 +152,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
notification.SetGameHandle(gh);
|
||||
|
||||
System.Threading.Tasks.Task.Delay(2000).ContinueWith(delegate {
|
||||
((HandlerController) controller).Client.MakeRPC((lid) => GameRequestListener.CreateStub(((HandlerController) controller).Client).OnMatchmakingResult(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
((HandlerController) controller).Client.MakeRpc((lid) => GameRequestListener.CreateStub(((HandlerController) controller).Client).OnMatchmakingResult(new HandlerController() { ListenerId = lid }, notification.Build(), callback => { }));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -197,7 +197,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
builder.AddAttribute(messageId);
|
||||
builder.AddAttribute(payload);
|
||||
|
||||
Client.MakeRPC((lid) =>
|
||||
Client.MakeRpc((lid) =>
|
||||
NotificationListener.CreateStub(Client)
|
||||
.OnNotificationReceived(new HandlerController() { ListenerId = lid }, builder.Build(),
|
||||
callback => { }));
|
||||
|
||||
@ -42,7 +42,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
.SetSenderAccountId(((HandlerController) controller).Client.Account.BnetEntityId)
|
||||
.Build();
|
||||
|
||||
targetAccount.LoggedInClient.MakeRPC((lid) =>
|
||||
targetAccount.LoggedInClient.MakeRpc((lid) =>
|
||||
NotificationListener.CreateStub(targetAccount.LoggedInClient).OnNotificationReceived(controller, notification, callback => { }));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -28,7 +28,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
n.SetIdentity(request.Identity)
|
||||
.SetReason(0)
|
||||
.SetSessionId(session);
|
||||
((HandlerController) controller).Client.MakeRPC((lid) => SessionListener.CreateStub(((HandlerController) controller).Client).OnSessionCreated(controller, n.Build(), callback => { }));
|
||||
((HandlerController) controller).Client.MakeRpc((lid) => SessionListener.CreateStub(((HandlerController) controller).Client).OnSessionCreated(controller, n.Build(), callback => { }));
|
||||
}
|
||||
|
||||
private void DisconnectClient(HandlerController controller)
|
||||
|
||||
@ -175,7 +175,7 @@ namespace DiIiS_NA.GameServer.AchievementSystem
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
lock (client._serviceLock)
|
||||
lock (client.ServiceLock)
|
||||
{
|
||||
Logger.MethodTrace(MethodBase.GetCurrentMethod(), "id {0}", achievementId);
|
||||
if (client.Account.GameAccount.Achievements.Where(a => a.AchievementId == achievementId && a.Completion != -1).Count() > 0) return;
|
||||
@ -240,7 +240,7 @@ namespace DiIiS_NA.GameServer.AchievementSystem
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
lock (client._serviceLock)
|
||||
lock (client.ServiceLock)
|
||||
{
|
||||
Logger.MethodTrace(MethodBase.GetCurrentMethod(), "id {0}", criteriaId);
|
||||
D3.AchievementsStaticData.StaticCriteriaDefinition definition = null;
|
||||
@ -375,7 +375,7 @@ namespace DiIiS_NA.GameServer.AchievementSystem
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
lock (client._serviceLock)
|
||||
lock (client.ServiceLock)
|
||||
{
|
||||
if (additionalQuantity == 0) return;
|
||||
Logger.MethodTrace(MethodBase.GetCurrentMethod(), "id {0}", achievementId);
|
||||
|
||||
@ -26,18 +26,18 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.GameSystem
|
||||
{
|
||||
public class QuestManager
|
||||
{
|
||||
private static readonly Logger Logger = new Logger("QuestManager");
|
||||
private static readonly Logger Logger = new(nameof(QuestManager));
|
||||
|
||||
/// <summary>
|
||||
/// Accessor for quests
|
||||
/// </summary>
|
||||
/// <param name="snoQuest">snoId of the quest to retrieve</param>
|
||||
/// <returns></returns>
|
||||
public Dictionary<int, QuestRegistry.Quest> Quests = new Dictionary<int, QuestRegistry.Quest>();
|
||||
public readonly Dictionary<int, QuestRegistry.Quest> Quests = new();
|
||||
|
||||
public Dictionary<int, QuestRegistry.Quest> SideQuests = new Dictionary<int, QuestRegistry.Quest>();
|
||||
public readonly Dictionary<int, QuestRegistry.Quest> SideQuests = new();
|
||||
|
||||
public List<Bounty> Bounties = new List<Bounty>();
|
||||
public readonly List<Bounty> Bounties = new();
|
||||
|
||||
public Game Game { get; set; }
|
||||
|
||||
@ -191,7 +191,7 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.GameSystem
|
||||
if (!Game.Empty)
|
||||
{
|
||||
SaveQuestProgress(true);
|
||||
Logger.Trace(" (Advance) quest {0} completed: {1}", Game.CurrentQuest, Quests[Game.CurrentQuest].Completed);
|
||||
Logger.Trace($"$[white]$(Advance)$[/]$ Game {Game.GameId} Advanced to quest $[underline white]${Game.CurrentQuest}$[/], completed $[underline white]${Quests[Game.CurrentQuest].Completed}$[/]$");
|
||||
foreach (var player in Game.Players.Values)
|
||||
{
|
||||
int xpReward = (int)(Quests[Game.CurrentQuest].RewardXp * Game.XPModifier);
|
||||
@ -269,7 +269,7 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.GameSystem
|
||||
}
|
||||
OnQuestProgress();
|
||||
AutoSetQuestMarker();
|
||||
Logger.Trace(" (Advance) Advanced to quest {0}, step {1}", Game.CurrentQuest, Game.CurrentStep);
|
||||
Logger.Trace($"$[white]$(Advance)$[/]$ Game {Game.GameId} Advanced to quest $[underline white]${Game.CurrentQuest}$[/], step $[underline white]${Game.CurrentStep}$[/]$");
|
||||
}
|
||||
|
||||
public void SideAdvance()
|
||||
@ -295,7 +295,7 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.GameSystem
|
||||
SideQuests[Game.CurrentSideQuest].Steps[Game.CurrentSideStep] == SideQuests[Game.CurrentSideQuest].Steps.Last().Value)
|
||||
{
|
||||
SideQuests[Game.CurrentSideQuest].Completed = true;
|
||||
Logger.Trace(" (SideAdvance) quest {0} completed: {1}", Game.CurrentSideQuest, SideQuests[Game.CurrentSideQuest].Completed);
|
||||
Logger.Trace($"$[white]$(Side-Advance)$[/]$ Game {Game.GameId} Side-Advanced to quest {Game.CurrentSideQuest} completed: {SideQuests[Game.CurrentSideQuest].Completed}");
|
||||
|
||||
foreach (var player in Game.Players.Values)
|
||||
{
|
||||
@ -339,7 +339,7 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.GameSystem
|
||||
}
|
||||
|
||||
OnQuestProgress();
|
||||
Logger.Trace(" (SideAdvance) Advanced to side quest {0}, step {1}", Game.CurrentSideQuest, Game.CurrentSideStep);
|
||||
Logger.Trace($"$[white]$(Side-Advance)$[/]$ Game {Game.GameId} Side-Advanced to side-quest {Game.CurrentSideQuest} completed: {Game.CurrentSideStep}");
|
||||
}
|
||||
|
||||
public void LaunchSideQuest(int questId, bool forceAbandon = false)
|
||||
@ -855,7 +855,7 @@ namespace DiIiS_NA.D3_GameServer.GSSystem.GameSystem
|
||||
public List<int> LevelAreaChecks { get; set; }
|
||||
public bool Finished = false;
|
||||
|
||||
public static Dictionary<int, int> LevelAreaOverrides = new Dictionary<int, int>() //first is in-game, second is in-data
|
||||
public static Dictionary<int, int> LevelAreaOverrides = new() //first is in-game, second is in-data
|
||||
{
|
||||
{338602, 377700}, //battlefields of eterntity
|
||||
{271234, 370512}, //x1 fortress lv1
|
||||
|
||||
Loading…
Reference in New Issue
user.block.title