Esempio n. 1
0
        public ActorInit(uint id, TextNode textNode)
        {
            ID = id;

            Position = textNode.Convert <CPos>();

            var node = new ActorNode(id, Position, textNode.Children);

            Type = node.Type;

            Team     = node.Team;
            IsPlayer = node.IsPlayer;
            IsBot    = node.IsBot;

            var list  = new List <TextNode>();
            var order = (short)(textNode.Order + 1);

            list.Add(new TextNode("ActorInit", order, "Team", node.Team));
            list.Add(new TextNode("ActorInit", order, "Type", ActorCache.Types[node.Type]));
            if (node.IsBot)
            {
                var parent = new TextNode("ActorInit", order, "BotPart", string.Empty);
                list.Add(parent);
                parent.Children.Add(new TextNode("ActorInit", (short)(order + 1), "TargetPosition", node.BotTarget));
            }
            if (node.IsPlayer)
            {
                list.Add(new TextNode("ActorInit", order, "PlayerPart", string.Empty));
            }
            if (node.Health != 1f)
            {
                if (Type.PartInfos.FirstOrDefault(p => p is Parts.HealthPartInfo) is Parts.HealthPartInfo health)
                {
                    var parent = new TextNode("ActorInit", order, "HealthPart", string.Empty);
                    list.Add(parent);
                    parent.Children.Add(new TextNode("ActorInit", (short)(order + 1), "Health", node.Health * health.MaxHealth));
                }
            }
            if (node.IsPlayerSwitch)
            {
                var parent = new TextNode("ActorInit", order, "PlayerSwitchPart", string.Empty);
                list.Add(parent);
                parent.Children.Add(new TextNode("ActorInit", (short)(order + 1), "RelativeHP", node.RelativeHP));
                parent.Children.Add(new TextNode("ActorInit", (short)(order + 1), "ActorType", ActorCache.Types[node.ToActor]));
                parent.Children.Add(new TextNode("ActorInit", (short)(order + 1), "CurrentTick", node.Duration));
            }

            Nodes = list;
        }