public async Task Update() { if (ACTWebSocketCore.CheckIsActReady()) { if (prevEncounterId == ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.EncId && prevEndDateTime == ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.EndTime && prevEncounterActive == ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.Active) { return; } prevEncounterId = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.EncId; prevEndDateTime = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.EndTime; prevEncounterActive = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.Active; core.Broadcast("/MiniParse", CreateEncounterJsonData()); } }
public void Update() { if (ACTWebSocketCore.CheckIsActReady()) { if (prevEncounterId == ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.EncId && prevEndDateTime == ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.EndTime && prevEncounterActive == ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.Active) { return; } prevEncounterId = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.EncId; prevEndDateTime = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.EndTime; prevEncounterActive = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.Active; core.Broadcast("/MiniParse", SendMessageType.CombatData.ToString(), CreateEncounterJsonData()); } }
public string CreateEncounterJsonData() { if (DateTime.Now - ACTWebSocketCore.updateStringCacheLastUpdate < ACTWebSocketCore.updateStringCacheExpireInterval) { return(ACTWebSocketCore.updateStringCache); } if (!ACTWebSocketCore.CheckIsActReady()) { return(""); } var allies = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.GetAllies(); Dictionary <string, string> encounter = null; List <KeyValuePair <CombatantData, Dictionary <string, string> > > combatant = null; var encounterTask = Task.Run(() => { encounter = GetEncounterDictionary(allies); }); var combatantTask = Task.Run(() => { combatant = GetCombatantList(allies); core.SortCombatantList(combatant); }); Task.WaitAll(encounterTask, combatantTask); var builder = new StringBuilder(); builder.Append("{\"typeText\": \"encounter\", \"detail\": {"); builder.Append("\"Encounter\": {"); var isFirst1 = true; foreach (var pair in encounter) { if (isFirst1) { isFirst1 = false; } else { builder.Append(","); } var valueString = pair.Value.ReplaceNaN().JSONSafeString(); builder.AppendFormat("\"{0}\":\"{1}\"", pair.Key.JSONSafeString(), valueString); } builder.Append("},"); builder.Append("\"Combatant\": {"); var isFirst2 = true; foreach (var pair in combatant) { if (isFirst2) { isFirst2 = false; } else { builder.Append(","); } builder.AppendFormat("\"{0}\": {{", pair.Key.Name.JSONSafeString()); var isFirst3 = true; foreach (var pair2 in pair.Value) { if (isFirst3) { isFirst3 = false; } else { builder.Append(","); } var valueString = pair2.Value.ReplaceNaN().JSONSafeString(); builder.AppendFormat("\"{0}\":\"{1}\"", pair2.Key.JSONSafeString(), valueString); } builder.Append("}"); } builder.Append("},"); builder.AppendFormat("\"isActive\": {0}", ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.Active ? "true" : "false"); builder.Append("}}"); var result = builder.ToString(); ACTWebSocketCore.updateStringCache = result; ACTWebSocketCore.updateStringCacheLastUpdate = DateTime.Now; return(result); }
internal JObject CreateEncounterJsonData() { if (DateTime.Now - updateStringCacheLastUpdate < updateStringCacheExpireInterval) { return(updateStringCache); } if (!ACTWebSocketCore.CheckIsActReady()) { return(new JObject()); } object o0 = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.GetCombatant("YOU"); object o1 = null; if (CurrentPlayerID != 0) { o1 = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.GetCombatant(CurrentPlayerName); } // CharName Adjust if (o0 != null) { ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.CharName = "YOU"; } else if (o1 != null) { ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.CharName = CurrentPlayerName; } var allies = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.GetAllies(); Dictionary <string, string> encounter = null; List <KeyValuePair <CombatantData, Dictionary <string, string> > > combatant = null; var encounterTask = Task.Run(() => { encounter = GetEncounterDictionary(allies); }); var combatantTask = Task.Run(() => { combatant = GetCombatantList(allies); SortCombatantList(combatant); }); Task.WaitAll(encounterTask, combatantTask); JObject obj = new JObject(); { JObject Encounter = new JObject(); foreach (var pair in encounter) { Encounter[pair.Key] = pair.Value.ReplaceNaN(); } obj["Encounter"] = Encounter; JObject Combatant = new JObject(); foreach (var pair in combatant) { JObject o = new JObject(); foreach (var pair2 in pair.Value) { o[pair2.Key] = pair2.Value.ReplaceNaN(); } if (CurrentPlayerID != 0 && pair.Key.Name == CurrentPlayerName) { // CharName Adjust Combatant["YOU"] = o; Combatant["YOU"]["name"] = "YOU"; } else { Combatant[pair.Key.Name] = o; } } obj["Combatant"] = Combatant; obj["isActive"] = ActGlobals.oFormActMain.ActiveZone.ActiveEncounter.Active; } updateStringCache = obj; updateStringCacheLastUpdate = DateTime.Now; return(obj); }