mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-31 21:03:43 +01:00
Implement service locator
This commit is contained in:
parent
06b1163a52
commit
ff1d7f2829
101 changed files with 1614 additions and 1436 deletions
|
|
@ -5,6 +5,9 @@ using System.Linq;
|
|||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Dalamud.Configuration.Internal;
|
||||
using Dalamud.Data;
|
||||
using Dalamud.Game.Gui;
|
||||
using Dalamud.Game.Network.Internal.MarketBoardUploaders;
|
||||
using Dalamud.Game.Network.Internal.MarketBoardUploaders.Universalis;
|
||||
using Dalamud.Game.Network.Structures;
|
||||
|
|
@ -18,8 +21,6 @@ namespace Dalamud.Game.Network.Internal
|
|||
/// </summary>
|
||||
internal class NetworkHandlers
|
||||
{
|
||||
private readonly Dalamud dalamud;
|
||||
|
||||
private readonly List<MarketBoardItemRequest> marketBoardRequests = new();
|
||||
|
||||
private readonly bool optOutMbUploads;
|
||||
|
|
@ -30,16 +31,13 @@ namespace Dalamud.Game.Network.Internal
|
|||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="NetworkHandlers"/> class.
|
||||
/// </summary>
|
||||
/// <param name="dalamud">The Dalamud instance.</param>
|
||||
/// <param name="optOutMbUploads">Whether the client should opt out of market board uploads.</param>
|
||||
public NetworkHandlers(Dalamud dalamud, bool optOutMbUploads)
|
||||
public NetworkHandlers()
|
||||
{
|
||||
this.dalamud = dalamud;
|
||||
this.optOutMbUploads = optOutMbUploads;
|
||||
this.optOutMbUploads = Service<DalamudStartInfo>.Get().OptOutMbCollection;
|
||||
|
||||
this.uploader = new UniversalisMarketBoardUploader(dalamud);
|
||||
this.uploader = new UniversalisMarketBoardUploader();
|
||||
|
||||
dalamud.Framework.Network.OnNetworkMessage += this.OnNetworkMessage;
|
||||
Service<GameNetwork>.Get().OnNetworkMessage += this.OnNetworkMessage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -49,14 +47,18 @@ namespace Dalamud.Game.Network.Internal
|
|||
|
||||
private void OnNetworkMessage(IntPtr dataPtr, ushort opCode, uint sourceActorId, uint targetActorId, NetworkMessageDirection direction)
|
||||
{
|
||||
if (!this.dalamud.Data.IsDataReady)
|
||||
var dataManager = Service<DataManager>.GetNullable();
|
||||
|
||||
if (dataManager?.IsDataReady == false)
|
||||
return;
|
||||
|
||||
var configuration = Service<DalamudConfiguration>.Get();
|
||||
|
||||
if (direction == NetworkMessageDirection.ZoneUp)
|
||||
{
|
||||
if (!this.optOutMbUploads)
|
||||
{
|
||||
if (opCode == this.dalamud.Data.ClientOpCodes["MarketBoardPurchaseHandler"])
|
||||
if (opCode == Service<DataManager>.Get().ClientOpCodes["MarketBoardPurchaseHandler"])
|
||||
{
|
||||
this.marketBoardPurchaseHandler = MarketBoardPurchaseHandler.Read(dataPtr);
|
||||
}
|
||||
|
|
@ -65,7 +67,7 @@ namespace Dalamud.Game.Network.Internal
|
|||
return;
|
||||
}
|
||||
|
||||
if (opCode == this.dalamud.Data.ServerOpCodes["CfNotifyPop"])
|
||||
if (opCode == dataManager.ServerOpCodes["CfNotifyPop"])
|
||||
{
|
||||
var data = new byte[64];
|
||||
Marshal.Copy(dataPtr, data, 0, 64);
|
||||
|
|
@ -76,7 +78,7 @@ namespace Dalamud.Game.Network.Internal
|
|||
if (notifyType != 3)
|
||||
return;
|
||||
|
||||
var contentFinderCondition = this.dalamud.Data.GetExcelSheet<ContentFinderCondition>().GetRow(contentFinderConditionId);
|
||||
var contentFinderCondition = dataManager.GetExcelSheet<ContentFinderCondition>().GetRow(contentFinderConditionId);
|
||||
|
||||
if (contentFinderCondition == null)
|
||||
{
|
||||
|
|
@ -91,7 +93,7 @@ namespace Dalamud.Game.Network.Internal
|
|||
contentFinderCondition.Image = 112324;
|
||||
}
|
||||
|
||||
if (this.dalamud.Configuration.DutyFinderTaskbarFlash && !NativeFunctions.ApplicationIsActivated())
|
||||
if (configuration.DutyFinderTaskbarFlash && !NativeFunctions.ApplicationIsActivated())
|
||||
{
|
||||
var flashInfo = new NativeFunctions.FlashWindowInfo
|
||||
{
|
||||
|
|
@ -106,8 +108,10 @@ namespace Dalamud.Game.Network.Internal
|
|||
|
||||
Task.Run(() =>
|
||||
{
|
||||
if (this.dalamud.Configuration.DutyFinderChatMessage)
|
||||
this.dalamud.Framework.Gui.Chat.Print("Duty pop: " + cfcName);
|
||||
if (configuration.DutyFinderChatMessage)
|
||||
{
|
||||
Service<ChatGui>.Get().Print("Duty pop: " + cfcName);
|
||||
}
|
||||
|
||||
this.CfPop?.Invoke(this, contentFinderCondition);
|
||||
});
|
||||
|
|
@ -117,7 +121,7 @@ namespace Dalamud.Game.Network.Internal
|
|||
|
||||
if (!this.optOutMbUploads)
|
||||
{
|
||||
if (opCode == this.dalamud.Data.ServerOpCodes["MarketBoardItemRequestStart"])
|
||||
if (opCode == dataManager.ServerOpCodes["MarketBoardItemRequestStart"])
|
||||
{
|
||||
var catalogId = (uint)Marshal.ReadInt32(dataPtr);
|
||||
var amount = Marshal.ReadByte(dataPtr + 0xB);
|
||||
|
|
@ -134,7 +138,7 @@ namespace Dalamud.Game.Network.Internal
|
|||
return;
|
||||
}
|
||||
|
||||
if (opCode == this.dalamud.Data.ServerOpCodes["MarketBoardOfferings"])
|
||||
if (opCode == dataManager.ServerOpCodes["MarketBoardOfferings"])
|
||||
{
|
||||
var listing = MarketBoardCurrentOfferings.Read(dataPtr);
|
||||
|
||||
|
|
@ -200,7 +204,7 @@ namespace Dalamud.Game.Network.Internal
|
|||
return;
|
||||
}
|
||||
|
||||
if (opCode == this.dalamud.Data.ServerOpCodes["MarketBoardHistory"])
|
||||
if (opCode == dataManager.ServerOpCodes["MarketBoardHistory"])
|
||||
{
|
||||
var listing = MarketBoardHistory.Read(dataPtr);
|
||||
|
||||
|
|
@ -237,7 +241,7 @@ namespace Dalamud.Game.Network.Internal
|
|||
}
|
||||
}
|
||||
|
||||
if (opCode == this.dalamud.Data.ServerOpCodes["MarketTaxRates"])
|
||||
if (opCode == dataManager.ServerOpCodes["MarketTaxRates"])
|
||||
{
|
||||
var category = (uint)Marshal.ReadInt32(dataPtr);
|
||||
|
||||
|
|
@ -267,7 +271,7 @@ namespace Dalamud.Game.Network.Internal
|
|||
}
|
||||
}
|
||||
|
||||
if (opCode == this.dalamud.Data.ServerOpCodes["MarketBoardPurchase"])
|
||||
if (opCode == dataManager.ServerOpCodes["MarketBoardPurchase"])
|
||||
{
|
||||
if (this.marketBoardPurchaseHandler == null)
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue