コード例 #1
0
        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());
            }
        }
コード例 #2
0
        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());
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }