示例#1
0
        public override void ProcessRow(IList <object> row)
        {
            bool idExists = int.TryParse((string)row[IdIndex], out int id);

            if (idExists == false)
            {
                id = 0;
            }
            string unitName = (string)row[UnitNameIndex];

            UnitModel model = new UnitModel()
            {
                Id   = id,
                Unit = unitName
            };

            GlobalConfig.Connection.CreateUnit(model);

            IList <object> updateRow = new object[]
            {
                model.Id,
                model.Unit.ToString()
            };

            UpdateValues.Add(updateRow);
        }
示例#2
0
        public override void ProcessRow(IList <object> row)
        {
            bool idExists = int.TryParse((string)row[IdIndex], out int id);

            if (idExists == false)
            {
                id = 0;
            }

            int    unitId   = Convert.ToInt32(row[UnitIdIndex]);
            string itemName = (string)row[ItemNameIndex];

            NutrientModel model = new NutrientModel()
            {
                Id       = id,
                UnitId   = unitId,
                ItemName = itemName
            };

            GlobalConfig.Connection.CreateNutrient(model);

            IList <object> updateRow = new object[]
            {
                model.Id,
                model.ItemName.ToString(),
                row[UnitNameIndex],
                model.UnitId
            };

            UpdateValues.Add(updateRow);
        }
        public override void ProcessRow(IList <object> row)
        {
            bool idExists = int.TryParse((string)row[IdIndex], out int id);

            if (idExists == false)
            {
                id = 0;
            }

            AnalysisModel newAnalysisModel = new AnalysisModel
            {
                Id        = id,
                ProductId = Convert.ToInt32(row[ProductIdIndex]),
                Nutrients = new List <AnalysisNutrientModel>()
            };

            foreach (var key in NutrientMappings.Keys)
            {
                AnalysisNutrientModel newNutrientRecord = CreateAnalysisNutrientRecord(row, newAnalysisModel, key);
                newAnalysisModel.Nutrients.Add(newNutrientRecord);
            }
            GlobalConfig.Connection.CreateAnalysis(newAnalysisModel);

            IList <object> updateRow = new object[]
            {
                newAnalysisModel.Id,
            };

            UpdateValues.Add(updateRow);
        }
        public VisualizerForm(Settings settings)
        {
            m_Settings = settings;
            InitializeComponent();
            InitBinding();
            InitTypeConverters();
            IClientService client = new Client(m_Settings);

            client.Options.LegacyFieldFlagEncoding = false;
            client.MessageReceived     += ClientOnMessageReceived;
            client.MetaMessageReceived += ClientOnMessageReceived;
            BlockingCollection <Publisher> publisherQueue = new BlockingCollection <Publisher>();

            m_PublisherBindings = new ConcurrentDictionary <string, ConcurrentDictionary <ushort, BindingSource> >();
            BlockingCollection <DataPointCollection> valueQueue = new BlockingCollection <DataPointCollection>();
            Parser parser = new Parser(publisherQueue, valueQueue, this, m_PublisherBindings);

            client.MessageReceived     += parser.OnMessageDecoded;
            client.MetaMessageReceived += parser.OnMessageDecoded;
            client.FileReceived        += parser.ClientOnFileReceived;
            m_UpdatePublisher           = new UpdatePublisher(publisherQueue, m_PublisherBindingSource, this);
            m_UpdateValues              = new UpdateValues(valueQueue, m_PublisherBindings, this);

            // there was a decoding standard violation in a part of the meta frame
            // which has been fixed and we enable it here to use this fix
            client.Options.LegacyFieldFlagEncoding = false;
            if (m_Settings.Client.UseTls)
            {
                // with TLS for use e.g. with MQTT-Broker as MDSP simulation

                // Broker CA certificate
                if (SettingManager.TryGetCertificateAsArray(m_Settings.Client.BrokerCACert, out byte[] brokerCaCert))
 public static long GetIntOrDefault(this UpdateValues update, string field)
 {
     if (update.TryGetInt(field, out var v))
     {
         return(v);
     }
     return(0);
 }
示例#6
0
 public override void ProcessRows()
 {
     UpdateValues.Add(Headers);
     foreach (IList <object> row in Rows)
     {
         ProcessRow(row);
     }
 }
示例#7
0
    public static bool TryGetInt(this UpdateValues update, string field, out long value)
    {
        if (update.ValuesCase == UpdateValues.ValuesOneofCase.Legacy)
        {
            return(update.Legacy.Ints.TryGetValue(field, out value));
        }

        var val = GetInt(update.Fields, field);

        value = val ?? 0;
        return(val.HasValue);
    }
示例#8
0
    public static bool TryGetGuid(this UpdateValues update, string field, out UniversalGuid value)
    {
        if (update.ValuesCase == UpdateValues.ValuesOneofCase.Legacy)
        {
            return(update.Legacy.Guids.TryGetValue(field, out value));
        }

        var val = GetGuid(update.Fields, field);

        value = val ?? null !;
        return(val != null);
    }
        public override void ProcessRows()
        {
            ColumnProcessor.MapColumns();

            NutrientMappings = ColumnProcessor.NutrientMappings;

            UpdateValues.Add(new object[] { Headers[0] });

            foreach (var row in Rows)
            {
                ProcessRow(row);
            }
        }
示例#10
0
        public override void ProcessRow(IList <object> row)
        {
            OperationModel operation = new OperationModel();

            operation.AnalysisId    = Convert.ToInt32(row[AnalysisIndex]);
            operation.AppliedAmount = Convert.ToDecimal(row[AmountIndex]);
            operation.Timestamp     = Convert.ToDateTime(row[TimestampIndex]);
            operation.FieldId       = Convert.ToInt32(row[FieldIndex]);

            GlobalConfig.Connection.CreateOperation(operation);

            UpdateValues.Add(new string[] { "", "", "", "" });
        }
示例#11
0
        internal static void InitHooks()
        {
            // late hook.
            On.RoR2.PreGameController.Awake += (origAwake, selfPreGameController) => {
                origAwake(selfPreGameController);

                On.RoR2.RuleBook.ApplyChoice += (orig, self, def) => {
                    orig(self, def);

                    UpdateValues?.Invoke(self, null);
                };
            };
        }
示例#12
0
        public override void ProcessRow(IList <object> row)
        {
            FieldModel newField = new FieldModel()
            {
                Field   = (string)row[FieldNameIndex],
                Farm    = (string)row[FarmNameIndex],
                Id      = Convert.ToInt32(row[IdIndex]),
                Acreage = 0.0M
            };

            bool validDecimal = decimal.TryParse((string)row[AcreageIndex], out decimal acreage);

            if (validDecimal && acreage > 0)
            {
                newField.Acreage = acreage;
            }


            foreach (var rotationColumn in RotationColumns)
            {
                int           columnIndex = rotationColumn.Value;
                RotationModel newRotation = new RotationModel()
                {
                    FieldId      = newField.Id,
                    RotationYear = rotationColumn.Key
                };
                string plannedCrop = (string)row[columnIndex];

                if (plannedCrop.Length > 0)
                {
                    // convert names to lowercase so just the text is being compared
                    ProductModel matchedCrop = Crops.Where(crop => crop.ItemName.ToLower() == plannedCrop.ToLower())
                                               .ToList().First();

                    if (matchedCrop == null)
                    {
                        throw new Exception($"Crop matching error. Current crop count is: {plannedCrop}");
                    }
                    else
                    {
                        newRotation.ProductId = matchedCrop.Id;
                        newField.Rotations.Add(newRotation);
                    }
                }
            }
            GlobalConfig.Connection.CreateField(newField);
            Fields.Add(newField);
            IList <object> updateRow = new string[] { newField.Farm, newField.Field, newField.Id.ToString() };

            UpdateValues.Add(updateRow);
        }
示例#13
0
        public static void HandleUpdateObject(Packet packet)
        {
            var  updateObject = packet.Holder.UpdateObject = new();
            uint map          = updateObject.MapId = packet.ReadUInt16("Map");
            var  count        = packet.ReadUInt32("Count");

            for (var i = 0; i < count; i++)
            {
                var type = (UpdateTypeCataclysm)packet.ReadByte();

                var partWriter = new StringBuilderProtoPart(packet.Writer);
                packet.AddValue("UpdateType", type.ToString(), i);
                switch (type)
                {
                case UpdateTypeCataclysm.Values:
                {
                    var guid         = packet.ReadPackedGuid("GUID", i);
                    var updateValues = new UpdateValues();
                    CoreParsers.UpdateHandler.ReadValuesUpdateBlock(packet, updateValues, guid, i);
                    updateObject.Updated.Add(new UpdateObject {
                            Guid = guid, Values = updateValues, Text = partWriter.Text
                        });
                    break;
                }

                case UpdateTypeCataclysm.CreateObject1:
                case UpdateTypeCataclysm.CreateObject2:     // Might != CreateObject1 on Cata
                {
                    var guid         = packet.ReadPackedGuid("GUID", i);
                    var createObject = new CreateObject()
                    {
                        Guid = guid, Values = new(), CreateType = type.ToCreateObjectType()
                    };
                    ReadCreateObjectBlock(packet, createObject, guid, map, i);
                    createObject.Text = partWriter.Text;
                    updateObject.Created.Add(createObject);
                    break;
                }

                case UpdateTypeCataclysm.DestroyObjects:
                {
                    CoreParsers.UpdateHandler.ReadDestroyObjectsBlock(packet, i);
                    break;
                }
                }
            }
        }
示例#14
0
        public static void HandleUpdateObject(Packet packet)
        {
            var  updateObject = packet.Holder.UpdateObject = new();
            uint map          = updateObject.MapId = packet.ReadUInt16("Map");
            var  count        = packet.ReadUInt32("Count");

            for (var i = 0; i < count; i++)
            {
                var type       = packet.ReadByte();
                var typeString = ((UpdateTypeCataclysm)type).ToString();

                packet.AddValue("UpdateType", typeString, i);
                switch (typeString)
                {
                case "Values":
                {
                    var guid         = packet.ReadPackedGuid("GUID", i);
                    var updateValues = new UpdateValues();
                    CoreParsers.UpdateHandler.ReadValuesUpdateBlock(packet, updateValues, guid, i);
                    updateObject.Updated.Add(new UpdateObject {
                            Guid = guid, Values = updateValues
                        });
                    break;
                }

                case "CreateObject1":
                case "CreateObject2":     // Might != CreateObject1 on Cata
                {
                    var guid         = packet.ReadPackedGuid("GUID", i);
                    var createObject = new CreateObject()
                    {
                        Guid = guid, Values = new()
                    };
                    ReadCreateObjectBlock(packet, createObject, guid, map, i);
                    updateObject.Created.Add(createObject);
                    break;
                }

                case "DestroyObjects":
                {
                    CoreParsers.UpdateHandler.ReadDestroyObjectsBlock(packet, i);
                    break;
                }
                }
            }
        }
示例#15
0
 public ISqlBuilder Update(List <object> values)
 {
     Type = StatementType.Update;
     values.ForEach(v => UpdateValues.Add(StoreAndGetReference(v)));
     return(this);
 }
示例#16
0
        private static void _hookApplyChoice_RuleBook(On.RoR2.RuleBook.orig_ApplyChoice orig, RuleBook self, RuleChoiceDef choiceDef)
        {
            orig(self, choiceDef);

            UpdateValues?.Invoke(self, choiceDef);
        }
示例#17
0
 // Use this for initialization
 void Start()
 {
     val = cam.GetComponent <UpdateValues>();
 }
示例#18
0
        public static void HandleUpdateObject(Packet packet)
        {
            var  updateObject = packet.Holder.UpdateObject = new();
            var  count        = packet.ReadUInt32("NumObjUpdates");
            uint map          = updateObject.MapId = packet.ReadUInt16 <MapId>("MapID");

            packet.ResetBitReader();
            var hasRemovedObjects = packet.ReadBit("HasRemovedObjects");

            if (hasRemovedObjects)
            {
                var destroyedObjCount  = packet.ReadInt16("DestroyedObjCount");
                var removedObjCount    = packet.ReadUInt32("RemovedObjCount"); // destroyed + out of range
                var outOfRangeObjCount = removedObjCount - destroyedObjCount;

                for (var i = 0; i < destroyedObjCount; i++)
                {
                    var partWriter = new StringBuilderProtoPart(packet.Writer);
                    var guid       = packet.ReadPackedGuid128("ObjectGUID", "Destroyed", i);
                    updateObject.Destroyed.Add(new DestroyedObject()
                    {
                        Guid = guid, Text = partWriter.Text
                    });
                }

                for (var i = 0; i < outOfRangeObjCount; i++)
                {
                    var partWriter = new StringBuilderProtoPart(packet.Writer);
                    var guid       = packet.ReadPackedGuid128("ObjectGUID", "OutOfRange", i);
                    updateObject.OutOfRange.Add(new DestroyedObject()
                    {
                        Guid = guid, Text = partWriter.Text
                    });
                }
            }
            packet.ReadUInt32("Data size");

            for (var i = 0; i < count; i++)
            {
                var type       = packet.ReadByte();
                var typeString = ((UpdateTypeCataclysm)type).ToString();

                var partWriter = new StringBuilderProtoPart(packet.Writer);
                packet.AddValue("UpdateType", typeString, i);
                switch (typeString)
                {
                case "Values":
                {
                    var guid = packet.ReadPackedGuid128("Object Guid", i);
                    if (ClientVersion.AddedInVersion(ClientVersionBuild.V8_1_0_28724))
                    {
                        var updatefieldSize = packet.ReadUInt32();
                        var handler         = CoreFields.UpdateFields.GetHandler();
                        using (var fieldsData = new Packet(packet.ReadBytes((int)updatefieldSize), packet.Opcode, packet.Time, packet.Direction, packet.Number, packet.Writer, packet.FileName))
                        {
                            WoWObject obj;
                            Storage.Objects.TryGetValue(guid, out obj);

                            var updateTypeFlag = fieldsData.ReadUInt32();
                            if ((updateTypeFlag & 0x0001) != 0)
                            {
                                var data = handler.ReadUpdateObjectData(fieldsData, obj?.ObjectData, i);
                                if (obj != null)
                                {
                                    obj.ObjectData = data;
                                }
                            }
                            if ((updateTypeFlag & 0x0002) != 0)
                            {
                                handler.ReadUpdateItemData(fieldsData, null, i);
                            }
                            if ((updateTypeFlag & 0x0004) != 0)
                            {
                                handler.ReadUpdateContainerData(fieldsData, null, i);
                            }
                            if ((updateTypeFlag & 0x0008) != 0)
                            {
                                handler.ReadUpdateAzeriteEmpoweredItemData(fieldsData, null, i);
                            }
                            if ((updateTypeFlag & 0x0010) != 0)
                            {
                                handler.ReadUpdateAzeriteItemData(fieldsData, null, i);
                            }
                            if ((updateTypeFlag & 0x0020) != 0)
                            {
                                var unit = obj as Unit;
                                var data = handler.ReadUpdateUnitData(fieldsData, unit?.UnitData, i);
                                if (unit != null)
                                {
                                    unit.UnitData = data;
                                }
                            }
                            if ((updateTypeFlag & 0x0040) != 0)
                            {
                                handler.ReadUpdatePlayerData(fieldsData, null, i);
                            }
                            if ((updateTypeFlag & 0x0080) != 0)
                            {
                                handler.ReadUpdateActivePlayerData(fieldsData, null, i);
                            }
                            if ((updateTypeFlag & 0x0100) != 0)
                            {
                                var go   = obj as GameObject;
                                var data = handler.ReadUpdateGameObjectData(fieldsData, go?.GameObjectData, i);
                                if (go != null)
                                {
                                    go.GameObjectData = data;
                                }
                            }
                            if ((updateTypeFlag & 0x0200) != 0)
                            {
                                handler.ReadUpdateDynamicObjectData(fieldsData, null, i);
                            }
                            if ((updateTypeFlag & 0x0400) != 0)
                            {
                                handler.ReadUpdateCorpseData(fieldsData, null, i);
                            }
                            if ((updateTypeFlag & 0x0800) != 0)
                            {
                                handler.ReadUpdateAreaTriggerData(fieldsData, null, i);
                            }
                            if ((updateTypeFlag & 0x1000) != 0)
                            {
                                handler.ReadUpdateSceneObjectData(fieldsData, null, i);
                            }
                            if ((updateTypeFlag & 0x2000) != 0)
                            {
                                var conversation = obj as ConversationTemplate;
                                var data         = handler.ReadUpdateConversationData(fieldsData, conversation?.ConversationData, i);
                                if (conversation != null)
                                {
                                    conversation.ConversationData = data;
                                }
                            }
                        }
                    }
                    else
                    {
                        var updateValues = new UpdateValues();
                        CoreParsers.UpdateHandler.ReadValuesUpdateBlock(packet, updateValues, guid, i);
                        updateObject.Updated.Add(new UpdateObject {
                                Guid = guid, Values = updateValues, Text = partWriter.Text
                            });
                    }
                    break;
                }

                case "CreateObject1":
                case "CreateObject2":
                {
                    var guid         = packet.ReadPackedGuid128("Object Guid", i);
                    var createObject = new CreateObject()
                    {
                        Guid = guid, Values = new()
                    };
                    ReadCreateObjectBlock(packet, createObject, guid, map, i);
                    createObject.Text = partWriter.Text;
                    updateObject.Created.Add(createObject);
                    break;
                }
                }
            }
        }
        public static void HandleUpdateObject(Packet packet)
        {
            var updateObject = packet.Holder.UpdateObject = new();
            var count        = packet.ReadUInt32("NumObjUpdates");
            var map          = packet.ReadUInt16 <MapId>("MapID");

            packet.ResetBitReader();
            var hasRemovedObjects = packet.ReadBit("HasRemovedObjects");

            if (hasRemovedObjects)
            {
                var destroyedObjCount  = packet.ReadInt16("DestroyedObjCount");
                var removedObjCount    = packet.ReadUInt32("RemovedObjCount"); // destroyed + out of range
                var outOfRangeObjCount = removedObjCount - destroyedObjCount;

                for (var i = 0; i < destroyedObjCount; i++)
                {
                    var partWriter = new StringBuilderProtoPart(packet.Writer);
                    var guid       = packet.ReadPackedGuid128("ObjectGUID", "Destroyed", i);
                    updateObject.Destroyed.Add(new DestroyedObject()
                    {
                        Guid = guid, Text = partWriter.Text
                    });
                }
                for (var i = 0; i < outOfRangeObjCount; i++)
                {
                    var partWriter = new StringBuilderProtoPart(packet.Writer);
                    var guid       = packet.ReadPackedGuid128("ObjectGUID", "OutOfRange", i);
                    updateObject.OutOfRange.Add(new DestroyedObject()
                    {
                        Guid = guid, Text = partWriter.Text
                    });
                }
            }

            packet.ReadUInt32("DataSize");
            for (var i = 0; i < count; ++i)
            {
                var type = packet.ReadByteE <UpdateTypeCataclysm>("UpdateType", i);
                var guid = packet.ReadPackedGuid128("ObjectGuid", i);

                var partWriter = new StringBuilderProtoPart(packet.Writer);
                switch (type)
                {
                case UpdateTypeCataclysm.Values:
                    var updateValues = new UpdateValues();
                    CoreParsers.UpdateHandler.ReadValuesUpdateBlock(packet, updateValues, guid, i);
                    updateObject.Updated.Add(new UpdateObject()
                    {
                        Guid = guid, Values = updateValues, Text = partWriter.Text
                    });
                    break;

                case UpdateTypeCataclysm.CreateObject1:
                case UpdateTypeCataclysm.CreateObject2:
                    var createObject = new CreateObject()
                    {
                        Guid = guid, Values = new()
                    };
                    ReadCreateObjectBlock(packet, createObject, guid, map, i);
                    createObject.Text = partWriter.Text;
                    updateObject.Created.Add(createObject);
                    break;
                }
            }
        }
示例#20
0
 public OperationSheetProcessor(IList <IList <object> > rows)
 {
     Rows = rows;
     PopHeaders();
     UpdateValues.Add(Headers);
 }
示例#21
0
 private Planing(SortedQueue <double, StateAction> priorityQueue, Planing other)
 {
     this.priorityQueue = priorityQueue;
     updateValues       = other.updateValues;
     getPriority        = other.getPriority;
 }
示例#22
0
 public Planing(UpdateValues updateValues, GetPriority getPriority)
 {
     this.updateValues = updateValues;
     this.getPriority  = getPriority;
 }
示例#23
0
        public static void HandleUpdateObject(Packet packet)
        {
            var  updateObject = packet.Holder.UpdateObject = new();
            var  count        = packet.ReadUInt32("NumObjUpdates");
            uint map          = updateObject.MapId = packet.ReadUInt16 <MapId>("MapID");

            packet.ResetBitReader();
            var hasRemovedObjects = packet.ReadBit("HasRemovedObjects");

            if (hasRemovedObjects)
            {
                var destroyedObjCount  = packet.ReadInt16("DestroyedObjCount");
                var removedObjCount    = packet.ReadUInt32("RemovedObjCount"); // destroyed + out of range
                var outOfRangeObjCount = removedObjCount - destroyedObjCount;

                for (var i = 0; i < destroyedObjCount; i++)
                {
                    var partWriter = new StringBuilderProtoPart(packet.Writer);
                    var guid       = packet.ReadPackedGuid128("ObjectGUID", "Destroyed", i);
                    updateObject.Destroyed.Add(new DestroyedObject()
                    {
                        Guid = guid, TextStartOffset = partWriter.StartOffset, TextLength = partWriter.Length, Text = partWriter.Text
                    });
                }

                for (var i = 0; i < outOfRangeObjCount; i++)
                {
                    var partWriter = new StringBuilderProtoPart(packet.Writer);
                    var guid       = packet.ReadPackedGuid128("ObjectGUID", "OutOfRange", i);
                    updateObject.OutOfRange.Add(new DestroyedObject()
                    {
                        Guid = guid, TextStartOffset = partWriter.StartOffset, TextLength = partWriter.Length, Text = partWriter.Text
                    });
                }
            }
            packet.ReadUInt32("Data size");

            for (var i = 0; i < count; i++)
            {
                var type = (UpdateTypeCataclysm)packet.ReadByte();

                var partWriter = new StringBuilderProtoPart(packet.Writer);
                packet.AddValue("UpdateType", type.ToString(), i);
                switch (type)
                {
                case UpdateTypeCataclysm.Values:
                {
                    var guid         = packet.ReadPackedGuid128("Object Guid", i);
                    var updateValues = new UpdateValues();
                    if (ClientVersion.AddedInVersion(ClientVersionBuild.V8_1_0_28724))
                    {
                        var updatefieldSize = packet.ReadUInt32();
                        var handler         = CoreFields.UpdateFields.GetHandler();
                        updateValues.Fields = new();
                        using (var fieldsData = new Packet(packet.ReadBytes((int)updatefieldSize), packet.Opcode, packet.Time, packet.Direction, packet.Number, packet.Writer, packet.FileName))
                        {
                            WoWObject obj;
                            Storage.Objects.TryGetValue(guid, out obj);

                            var updateTypeFlag = fieldsData.ReadUInt32();
                            if ((updateTypeFlag & 0x0001) != 0)
                            {
                                var data = handler.ReadUpdateObjectData(fieldsData, i);
                                if (obj is { ObjectData: IMutableObjectData mut })
                                {
                                    mut.UpdateData(data);
                                }