private void InitFFXIVIntegration() { foreach (var propName in DefaultCombatantFields) { CachedCombatantPropertyInfos.Add(propName, typeof(Combatant).GetProperty(propName)); } repository.RegisterPartyChangeDelegate((partyList, partySize) => DispatchPartyChangeEvent(partyList, partySize)); ffxivPluginPresent = true; }
public MiniParseEventSource(ILogger logger) : base(logger) { this.Name = "MiniParse"; // FileChanged isn't actually raised by this event source. That event is generated in MiniParseOverlay directly. RegisterEventTypes(new List <string> { CombatDataEvent, FileChangedEvent, LogLineEvent, ImportedLogLinesEvent, }); // These events need to deliver cached values to new subscribers. RegisterCachedEventTypes(new List <string> { ChangePrimaryPlayerEvent, ChangeZoneEvent, OnlineStatusChangedEvent, PartyChangedEvent, }); RegisterEventHandler("getLanguage", (msg) => { var lang = FFXIVRepository.GetLanguage(); return(JObject.FromObject(new { language = lang.ToString("g"), languageId = lang.ToString("d"), })); }); ActGlobals.oFormActMain.BeforeLogLineRead += LogLineHandler; NetworkParser.OnOnlineStatusChanged += (o, e) => { var obj = new JObject(); obj["type"] = OnlineStatusChangedEvent; obj["target"] = e.Target; obj["rawStatus"] = e.Status; obj["status"] = StatusMap.ContainsKey(e.Status) ? StatusMap[e.Status] : "Unknown"; DispatchAndCacheEvent(obj); }; FFXIVRepository.RegisterPartyChangeDelegate((partyList, partySize) => DispatchPartyChangeEvent()); InitializeEnmityEventSource(); }
public MiniParseEventSource(ILogger logger) : base(logger) { this.Name = "MiniParse"; // FileChanged isn't actually raised by this event source. That event is generated in MiniParseOverlay directly. RegisterEventTypes(new List <string> { CombatDataEvent, FileChangedEvent, LogLineEvent, ImportedLogLinesEvent, }); // These events need to deliver cached values to new subscribers. RegisterCachedEventTypes(new List <string> { ChangePrimaryPlayerEvent, ChangeZoneEvent, OnlineStatusChangedEvent, PartyChangedEvent, }); RegisterEventHandler("getLanguage", (msg) => { var lang = FFXIVRepository.GetLanguage(); return(JObject.FromObject(new { language = lang.ToString("g"), languageId = lang.ToString("d"), })); }); RegisterEventHandler("getCombatants", (msg) => { List <uint> ids = new List <uint>(); if (msg["ids"] != null) { foreach (var id in ((JArray)msg["ids"])) { ids.Add(id.ToObject <uint>()); } } List <string> names = new List <string>(); if (msg["names"] != null) { foreach (var name in ((JArray)msg["names"])) { names.Add(name.ToString()); } } List <string> props = new List <string>(); if (msg["props"] != null) { foreach (var prop in ((JArray)msg["props"])) { props.Add(prop.ToString()); } } var combatants = GetCombatants(ids, names, props); return(JObject.FromObject(new { combatants })); }); RegisterEventHandler("saveData", (msg) => { var key = msg["key"].ToString(); if (key == null) { return(null); } Config.OverlayData[key] = msg["data"]; return(null); }); RegisterEventHandler("loadData", (msg) => { var key = msg["key"].ToString(); if (key == null) { return(null); } if (!Config.OverlayData.ContainsKey(key)) { return(null); } var ret = new JObject(); ret["key"] = key; ret["data"] = Config.OverlayData[key]; return(ret); }); foreach (var propName in DefaultCombatantFields) { CachedCombatantPropertyInfos.Add(propName, typeof(FFXIV_ACT_Plugin.Common.Models.Combatant).GetProperty(propName)); } ActGlobals.oFormActMain.BeforeLogLineRead += LogLineHandler; NetworkParser.OnOnlineStatusChanged += (o, e) => { var obj = new JObject(); obj["type"] = OnlineStatusChangedEvent; obj["target"] = e.Target; obj["rawStatus"] = e.Status; obj["status"] = StatusMap.ContainsKey(e.Status) ? StatusMap[e.Status] : "Unknown"; DispatchAndCacheEvent(obj); }; FFXIVRepository.RegisterPartyChangeDelegate((partyList, partySize) => DispatchPartyChangeEvent()); }
public MiniParseEventSource(TinyIoCContainer container) : base(container) { this.Name = "MiniParse"; this.repository = container.Resolve <FFXIVRepository>(); // FileChanged isn't actually raised by this event source. That event is generated in MiniParseOverlay directly. RegisterEventTypes(new List <string> { CombatDataEvent, FileChangedEvent, LogLineEvent, ImportedLogLinesEvent, BroadcastMessageEvent, }); // These events need to deliver cached values to new subscribers. RegisterCachedEventTypes(new List <string> { ChangePrimaryPlayerEvent, ChangeZoneEvent, OnlineStatusChangedEvent, PartyChangedEvent, }); RegisterEventHandler("getLanguage", (msg) => { var lang = repository.GetLanguage(); return(JObject.FromObject(new { language = lang.ToString("g"), languageId = lang.ToString("d"), })); }); RegisterEventHandler("getCombatants", (msg) => { List <uint> ids = new List <uint>(); if (msg["ids"] != null) { foreach (var id in ((JArray)msg["ids"])) { ids.Add(id.ToObject <uint>()); } } List <string> names = new List <string>(); if (msg["names"] != null) { foreach (var name in ((JArray)msg["names"])) { names.Add(name.ToString()); } } List <string> props = new List <string>(); if (msg["props"] != null) { foreach (var prop in ((JArray)msg["props"])) { props.Add(prop.ToString()); } } var combatants = GetCombatants(ids, names, props); return(JObject.FromObject(new { combatants })); }); RegisterEventHandler("saveData", (msg) => { var key = msg["key"]?.ToString(); if (key == null) { return(null); } Config.OverlayData[key] = msg["data"]; return(null); }); RegisterEventHandler("loadData", (msg) => { var key = msg["key"]?.ToString(); if (key == null) { return(null); } if (!Config.OverlayData.ContainsKey(key)) { return(null); } var ret = new JObject(); ret["key"] = key; ret["data"] = Config.OverlayData[key]; return(ret); }); RegisterEventHandler("say", (msg) => { var text = msg["text"]?.ToString(); if (text == null) { return(null); } ActGlobals.oFormActMain.TTS(text); return(null); }); RegisterEventHandler("broadcast", (msg) => { if (!msg.ContainsKey("msg") || !msg.ContainsKey("source")) { Log(LogLevel.Error, "Called broadcast handler without specifying a source or message (\"source\" or \"msg\" property are missing)."); return(null); } if (msg["source"].Type != JTokenType.String) { Log(LogLevel.Error, "The source passed to the broadcast handler must be a string!"); return(null); } DispatchEvent(JObject.FromObject(new { type = BroadcastMessageEvent, source = msg["source"], msg = msg["msg"], })); return(null); }); foreach (var propName in DefaultCombatantFields) { CachedCombatantPropertyInfos.Add(propName, typeof(Combatant).GetProperty(propName)); } ActGlobals.oFormActMain.BeforeLogLineRead += LogLineHandler; container.Resolve <NetworkParser>().OnOnlineStatusChanged += (o, e) => { var obj = new JObject(); obj["type"] = OnlineStatusChangedEvent; obj["target"] = e.Target; obj["rawStatus"] = e.Status; obj["status"] = StatusMap.ContainsKey(e.Status) ? StatusMap[e.Status] : "Unknown"; DispatchAndCacheEvent(obj); }; repository.RegisterPartyChangeDelegate((partyList, partySize) => DispatchPartyChangeEvent(partyList, partySize)); }