Пример #1
0
        // Reflect Object Attributes
        public override void FdAmb_ObjectAttributesReflectedHandler(object sender, HlaObjectEventArgs data)
        {
            // Call the base class handler
            base.FdAmb_ObjectAttributesReflectedHandler(sender, data);

            #region User Code
            foreach (var item in Program.StationObjects)
            {
                // Update station
                if (data.ObjectInstance.Handle == item.Handle)
                {
                    // Get parameter values - 2nd method
                    foreach (var pair in data.ObjectInstance.Attributes)
                    {
                        if (pair.Handle == Som.StationOC.StationName.Handle)
                        {
                            item.StationName = pair.GetValue <string>();
                        }
                        else if (pair.Handle == Som.StationOC.Location.Handle)
                        {
                            item.Location = pair.GetValue <LocationEnum>();
                        }
                    }
                }
            }
            foreach (var item in Program.MyTracks)
            {
                // Update track
                if (data.ObjectInstance.Handle == item.TrackNo)
                {
                    // Get parameter values - 1st method
                    // First check whether  the attr is updated or not. Result returns 0/null if the updated attribute set does not contain the attr and its value
                    if (data.IsValueUpdated(Som.ShipOC.Callsign))
                    {
                        item.TrackName = data.GetAttributeValue <string>(Som.ShipOC.Callsign);
                    }
                    if (data.IsValueUpdated(Som.ShipOC.Position))
                    {
                        item.TrackPosition = data.GetAttributeValue <PositionType>(Som.ShipOC.Position);
                    }
                    if (data.IsValueUpdated(Som.ShipOC.Heading))
                    {
                        item.TrackHeading = data.GetAttributeValue <LocationEnum>(Som.ShipOC.Heading);
                    }
                    if (data.IsValueUpdated(Som.ShipOC.Speed))
                    {
                        item.TrackSpeed = data.GetAttributeValue <SpeedEnum>(Som.ShipOC.Speed);
                    }
                }
            }
            foreach (var item in Program.OtherTracks)
            {
                // Find the Object
                if (data.ObjectInstance.Handle == item.Handle)
                {
                }
            }
            #endregion //User Code
        }
Пример #2
0
        // Reflect Object Attributes
        public override void FdAmb_ObjectAttributesReflectedHandler(object sender, HlaObjectEventArgs data)
        {
            // Call the base class handler
            base.FdAmb_ObjectAttributesReflectedHandler(sender, data);

            #region User Code
            foreach (var item in manager.StationObjects)
            {
                // Update station
                if (data.ObjectInstance.Handle == item.Handle)
                {
                    // Get parameter values - 2nd method
                    foreach (var pair in data.ObjectInstance.Attributes)
                    {
                        if (pair.Handle == Som.StationOC.StationName.Handle)
                        {
                            item.StationName = pair.GetValue <string>();
                        }
                        else if (pair.Handle == Som.StationOC.Location.Handle)
                        {
                            item.Location = pair.GetValue <LocationEnum>();
                        }
                    }
                }
            }
            foreach (var item in manager.ShipObjects)
            {
                // Update ship
                if (data.ObjectInstance.Handle == item.Handle)
                {
                    // Get parameter values - 1st method
                    // First check whether  the attr is updated or not. Result returns 0/null if the updated attribute set does not contain the attr and its value
                    if (data.IsValueUpdated(Som.ShipOC.Callsign))
                    {
                        item.Ship.Callsign = data.GetAttributeValue <string>(Som.ShipOC.Callsign);
                    }
                    if (data.IsValueUpdated(Som.ShipOC.Heading))
                    {
                        item.Ship.Heading = (LocationEnum)data.GetAttributeValue <uint>(Som.ShipOC.Heading);
                    }
                    if (data.IsValueUpdated(Som.ShipOC.Position))
                    {
                        item.Ship.Position = data.GetAttributeValue <PositionType>(Som.ShipOC.Position);
                    }
                    if (data.IsValueUpdated(Som.ShipOC.Speed))
                    {
                        item.Ship.Speed = (SpeedEnum)data.GetAttributeValue <uint>(Som.ShipOC.Speed);
                    }

                    // Get parameter values - 2nd method
                    //foreach (var pair in data.ObjectInstance.Attributes)
                    //{
                    //  if (pair.Handle == Som.ShipOC.Callsign.Handle) item.Local.Callsign = pair.GetValue<string>();
                    //  else if (pair.Handle == Som.ShipOC.Position.Handle) item.Local.Position = pair.GetValue<PositionType>();
                    //}

                    // report to the user
                    //Report($"Callsign: {item.Local.Callsign}, Heading: {item.Local.Heading.ToString()}, Position: ({item.Local.Position.X}, {item.Local.Position.Y}), Speed: {item.Local.Speed.ToString()}" + Environment.NewLine);
                }
            }
            #endregion //User Code
        }