Example #1
0
        private void OnBlockStabilized(Block block)
        {
            if (BlockMap.ContainsKey(block.Position))
            {
                throw new Exception($"Attempted to add block, but one already exists at {block.Position}!");
            }
            else
            {
                BlockMap[block.Position] = block;
            }

            _log.Info($"Block stabilized at {block.Position}.");

            OnChunkChanged.Raise(this);
        }
Example #2
0
        private void CreateEdges( )
        {
            foreach (var block in Blocks)
            {
                BlockMap[block.Number] = block;
            }

            foreach (var block in Blocks)
            {
                var numbers = block.GetOutEdges( );
                foreach (var number in numbers)
                {
                    if (!BlockMap.ContainsKey(number))
                    {
                        continue;
                    }
                    block.OutEdges.Add(BlockMap[number]);
                    BlockMap[number].InEdges.Add(block);
                }
            }
        }
Example #3
0
        /// <inheritdoc />
        public override object?ReadJson(JsonReader reader, Type objectType, object?existingValue, JsonSerializer serializer)
        {
            BlockMap result = new BlockMap();

            var ob = JToken.Load(reader);

            if (ob is JObject obj)
            {
                foreach (var item in obj)
                {
                    if (item.Value == null)
                    {
                        continue;
                    }

                    var key = item.Key;
                    if (result.ContainsKey(key))
                    {
                        continue;
                    }

                    BlockMappingEntry a = new BlockMappingEntry();
                    a.BedrockStates = new Dictionary <string, string>();

                    JObject itemValue = (JObject)item.Value;

                    foreach (var itemKey in itemValue)
                    {
                        if (itemKey.Key == "bedrock_identifier")
                        {
                            a.BedrockIdentifier = itemKey.Value.ToObject <string>();
                        }
                        else if (itemKey.Key == "bedrock_states")
                        {
                            if (itemKey.Value.Type == JTokenType.Object)
                            {
                                foreach (var state in (JObject)itemKey.Value)
                                {
                                    switch (state.Value.Type)
                                    {
                                    case JTokenType.Boolean:
                                        a.BedrockStates.TryAdd(state.Key, state.Value.ToObject <bool>() ? "1" : "0");
                                        break;

                                    default:
                                        a.BedrockStates.TryAdd(state.Key, state.Value.ToObject <string>());
                                        break;
                                    }
                                }
                            }
                        }
                    }

                    //var a     = item.Value.ToObject<BlockMappingEntry>(serializer);
                    //var match = Regex.Match(key);

                    result.Add(key, a);
                }
            }

            return(result);
        }