Example #1
0
        public static JsonActorCombatReplayData BuildJsonActorCombatReplayDataBuilder(AbstractSingleActor actor, ParsedEvtcLog log, RawFormatSettings settings)
        {
            CombatReplayMap map = log.FightData.Logic.GetCombatReplayMap(log);
            AbstractSingleActorCombatReplayDescription description = actor.GetCombatReplayDescription(map, log);
            var actorCombatReplayData = new JsonActorCombatReplayData()
            {
                IconURL = description.Img,
                Start   = description.Start,
                End     = description.End
            };

            if (settings.RawFormatTimelineArrays)
            {
                //
                var jsonPositions = new List <float[]>();
                for (int i = 0; i < description.Positions.Count; i += 2)
                {
                    jsonPositions.Add(new float[2] {
                        description.Positions[i], description.Positions[i + 1]
                    });
                }
                actorCombatReplayData.Positions = jsonPositions;
                //
                if (description.Dead != null)
                {
                    var jsonDeads = new List <long[]>();
                    for (int i = 0; i < description.Dead.Count; i += 2)
                    {
                        jsonDeads.Add(new long[2] {
                            description.Dead[i], description.Dead[i + 1]
                        });
                    }
                    actorCombatReplayData.Dead = jsonDeads;
                }
                if (description.Dc != null)
                {
                    var jsonDcs = new List <long[]>();
                    for (int i = 0; i < description.Dc.Count; i += 2)
                    {
                        jsonDcs.Add(new long[2] {
                            description.Dc[i], description.Dc[i + 1]
                        });
                    }
                    actorCombatReplayData.Dc = jsonDcs;
                }
                if (description.Down != null)
                {
                    var jsonDowns = new List <long[]>();
                    for (int i = 0; i < description.Down.Count; i += 2)
                    {
                        jsonDowns.Add(new long[2] {
                            description.Down[i], description.Down[i + 1]
                        });
                    }
                    actorCombatReplayData.Down = jsonDowns;
                }
                //
                IReadOnlyList <GenericDecoration> decorations = actor.GetCombatReplayDecorations(log);
                foreach (GenericDecoration decoration in decorations)
                {
                    GenericDecorationCombatReplayDescription decDescription = decoration.GetCombatReplayDescription(map, log);
                    if (decDescription is FacingDecorationCombatReplayDescription facingDescription)
                    {
                        actorCombatReplayData.Orientations = facingDescription.FacingData;
                    }
                }
            }

            //
            return(actorCombatReplayData);
        }