Example #1
0
        private static void InitializeMulti(IMultiBlockParent parent, MultiBlockInfo info, byte rotation,
                                            BlockPosition position, KeyValuePair <BlockPosition, BlockSides>[] partPositions,
                                            Function <int, IMultiBlockPart[]> partsArrayConstructor,
                                            Function <KeyValuePair <BlockPosition, BlockSides>, IMultiBlockPart> partConstructor,
                                            out IMultiBlockPart[] parts)
        {
            BlockSides parentSides = BlockSides.None;

            parts = partsArrayConstructor(partPositions.Length - 1);
            int partsIndex = 0;

            foreach (KeyValuePair <BlockPosition, BlockSides> pair in partPositions)
            {
                if (pair.Key.Equals(position))
                {
                    parentSides = pair.Value;
                }
                else
                {
                    parts[partsIndex++] = partConstructor(pair);
                }
            }

            foreach (IMultiBlockPart part in parts)
            {
                part.Initialize(parent);
            }
            parent.Initialize(parentSides, position, info, rotation, parts);
        }
Example #2
0
 public void Initialize(IMultiBlockParent parent)
 {
     Parent = (PlacedMultiBlockParent)parent;
 }
Example #3
0
 public void Initialize(IMultiBlockParent parent)
 {
     Parent = (LiveMultiBlockParent)parent;
 }