public static BasePieceMetadataProcessor FromMetaData(BasePieceMetadata metadata)
        {
            if (processorsByType.TryGetValue(metadata.GetType(), out BasePieceMetadataProcessor processor))
            {
                return(processor);
            }

            return(noOpProcessor);
        }
示例#2
0
        public void UpdateBasePieceMetadata(NitroxId id, BasePieceMetadata metadata)
        {
            BasePiece basePiece;

            lock (basePiecesById)
            {
                if (basePiecesById.TryGetValue(id, out basePiece))
                {
                    basePiece.Metadata = Optional <BasePieceMetadata> .OfNullable(metadata);
                }
            }
        }
示例#3
0
        public void UpdateBasePieceMetadata(string guid, BasePieceMetadata metadata)
        {
            BasePiece basePiece;

            lock (basePiecesByGuid)
            {
                if (basePiecesByGuid.TryGetValue(guid, out basePiece))
                {
                    basePiece.Metadata = Optional <BasePieceMetadata> .OfNullable(metadata);
                }
            }
        }
示例#4
0
            public void AssignBasePieceMetadata(object sender, EventArgs eventArgs)
            {
                ThrottledBuilder.main.QueueDrained -= AssignBasePieceMetadata;

                foreach (KeyValuePair <string, BasePieceMetadata> guidWithMetadata in metadataByBasePieceGuid)
                {
                    string            guid     = guidWithMetadata.Key;
                    BasePieceMetadata metadata = guidWithMetadata.Value;

                    BasePieceMetadataProcessor metadataProcessor = BasePieceMetadataProcessor.FromMetaData(metadata);
                    metadataProcessor.UpdateMetadata(guid, metadata);
                }
            }
示例#5
0
        public void UpdateBasePieceMetadata(NitroxId id, BasePieceMetadata metadata)
        {
            BasePiece basePiece;

            lock (completedBasePieceHistory)
            {
                basePiece = completedBasePieceHistory.Find(piece => piece.Id == id);

                if (basePiece != null)
                {
                    basePiece.Metadata = Optional <BasePieceMetadata> .OfNullable(metadata);
                }
            }
        }
        public override void Process(InitialPlayerSync packet)
        {
            int basePieceMetadatas = 0;

            foreach (BasePiece basePiece in packet.BasePieces)
            {
                if (basePiece.Metadata.IsPresent())
                {
                    BasePieceMetadata          metadata          = basePiece.Metadata.Get();
                    BasePieceMetadataProcessor metadataProcessor = BasePieceMetadataProcessor.FromMetaData(metadata);
                    metadataProcessor.UpdateMetadata(basePiece.Id, metadata);

                    basePieceMetadatas++;
                }
            }

            Log.Info("Received initial sync packet with " + basePieceMetadatas + " base piece meta data");
        }
        public override IEnumerator Process(InitialPlayerSync packet, WaitScreen.ManualWaitItem waitScreenItem)
        {
            int basePiecesWithMetadata = 0;
            int basePiecesChecked      = 0;

            foreach (BasePiece basePiece in packet.BasePieces)
            {
                waitScreenItem.SetProgress(basePiecesChecked, packet.BasePieces.Count);

                if (basePiece.Metadata.HasValue)
                {
                    BasePieceMetadata          metadata          = basePiece.Metadata.Value;
                    BasePieceMetadataProcessor metadataProcessor = BasePieceMetadataProcessor.FromMetaData(metadata);
                    metadataProcessor.UpdateMetadata(basePiece.Id, metadata);
                    basePiecesWithMetadata++;
                }

                basePiecesChecked++;
                yield return(null);
            }

            Log.Info("Received initial sync packet having " + basePiecesWithMetadata + " base pieces with meta data");
        }
示例#8
0
 public override void UpdateMetadata(string guid, BasePieceMetadata metadata)
 {
     UpdateMetadata(guid, (T)metadata);
 }
 public abstract void UpdateMetadata(NitroxId id, BasePieceMetadata metadata);
示例#10
0
 public abstract void UpdateMetadata(string guid, BasePieceMetadata metadata);
示例#11
0
        public void MetadataChanged(NitroxId pieceId, BasePieceMetadata metadata)
        {
            BasePieceMetadataChanged changePacket = new BasePieceMetadataChanged(pieceId, metadata);

            packetSender.Send(changePacket);
        }
示例#12
0
 public override void UpdateMetadata(NitroxId id, BasePieceMetadata metadata)
 {
     UpdateMetadata(id, (T)metadata);
 }
示例#13
0
 public override void UpdateMetadata(string guid, BasePieceMetadata metadata)
 {
     // No-op
 }
 public BasePieceMetadataChanged(NitroxId pieceId, BasePieceMetadata metadata)
 {
     PieceId  = pieceId;
     Metadata = metadata;
 }
 public override void UpdateMetadata(NitroxId id, BasePieceMetadata metadata)
 {
     // No-op
 }