Exemple #1
0
        private SolverNode Assemble(
            SolverNode parent,
            StagingSolverNode flat,
            ImmutableDictionary <int, StagingSolverNode> all,
            ImmutableDictionary <int, ImmutableArray <StagingSolverNode> > parents)
        {
            var n = new SolverNode(parent,
                                   new VectorInt2(flat.PlayerBeforeX, flat.PlayerBeforeY),
                                   new VectorInt2(flat.PushX, flat.PushY),
                                   flat.CrateMap,
                                   flat.MoveMap,
                                   flat.SolverNodeId
                                   );

            n.Status = (SolverNodeStatus)flat.Status;

            if (parents.TryGetValue(flat.SolverNodeId, out var kids))
            {
                foreach (var kid in kids)
                {
                    n.Add(Assemble(n, kid, all, parents));
                }
            }



            return(n);
        }
Exemple #2
0
        public StagingSolverNode Read(BinaryReader sr)
        {
            var temp = new StagingSolverNode
            {
                SolverNodeId  = sr.ReadInt32(),
                ParentId      = sr.ReadInt32(),
                PlayerBeforeX = sr.ReadInt32(),
                PlayerBeforeY = sr.ReadInt32(),
                PushX         = sr.ReadInt32(),
                PushY         = sr.ReadInt32(),
                Status        = sr.ReadByte(),
                HashCode      = sr.ReadInt32(),
            };

            var l = sr.ReadInt32();

            temp.Crate = sr.ReadBytes(l);

            l         = sr.ReadInt32();
            temp.Move = sr.ReadBytes(l);
            return(temp);
        }