예제 #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PlanetaryLink"/> class.
 /// </summary>
 /// <param name="colony">The colony.</param>
 /// <param name="src">The source.</param>
 internal PlanetaryLink(PlanetaryColony colony, SerializablePlanetaryLink src)
 {
     Colony = colony;
     SourcePinID = src.SourcePinID;
     DestinationPinID = src.DestinationPinID;
     LinkLevel = src.LinkLevel;
 }
예제 #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PlanetaryRoute"/> class.
 /// </summary>
 /// <param name="colony">The colony.</param>
 /// <param name="src">The source.</param>
 internal PlanetaryRoute(PlanetaryColony colony, SerializablePlanetaryRoute src)
 {
     Colony = colony;
     ID = src.RouteID;
     SourcePinID = src.SourcePinID;
     DestinationPinID = src.DestinationPinID;
 }
예제 #3
0
        /// <summary>
        /// Updates the content of the listview.
        /// </summary>
        /// <typeparam name="TKey"></typeparam>
        /// <param name="groups"></param>
        private void UpdateContent <TKey>(IEnumerable <IGrouping <TKey, PlanetaryPin> > groups)
        {
            lvPlanetary.Items.Clear();
            lvPlanetary.Groups.Clear();

            // Add the groups
            foreach (IGrouping <TKey, PlanetaryPin> group in groups)
            {
                string groupText;
                if (group.Key is DateTime)
                {
                    groupText = ((DateTime)(object)group.Key).ToShortDateString();
                }
                else
                {
                    PlanetaryColony colony = group.Key as PlanetaryColony;
                    if (colony != null)
                    {
                        groupText = $"{colony.SolarSystem.Name} > {colony.PlanetName} [{colony.PlanetTypeName}] " +
                                    $"(Installations: {colony.NumberOfPins}, " +
                                    $"Level: {colony.UpgradeLevel}, " +
                                    $"Updated: {colony.LastUpdate.ToLocalTime()})";
                    }
                    else
                    {
                        groupText = group.Key.ToString();
                    }
                }

                ListViewGroup listGroup = new ListViewGroup(groupText);
                lvPlanetary.Groups.Add(listGroup);

                // Add the items in every group
                lvPlanetary.Items.AddRange(
                    group.Select(pin => new
                {
                    pin,
                    item = new ListViewItem(pin.TypeName, listGroup)
                    {
                        UseItemStyleForSubItems = false,
                        Tag = pin
                    }
                }).Select(x => CreateSubItems(x.pin, x.item)).ToArray());
            }
        }
예제 #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PlanetaryPin"/> class.
        /// </summary>
        /// <param name="colony">The colony.</param>
        /// <param name="src">The source.</param>
        internal PlanetaryPin(PlanetaryColony colony, SerializablePlanetaryPin src)
        {
            Colony = colony;
            ID = src.PinID;
            TypeID = src.TypeID;
            TypeName = GetPinName(src.TypeName);
            SchematicID = src.SchematicID;
            CycleTime = src.CycleTime;
            QuantityPerCycle = src.QuantityPerCycle;
            ContentQuantity = src.ContentQuantity;
            ContentTypeID = src.ContentTypeID;
            ContentTypeName = src.ContentTypeName;
            LastLaunchTime = src.LastLaunchTime;
            InstallTime = src.InstallTime;
            ExpiryTime = src.ExpiryTime;
            State = GetState();
            ContentVolume = GetVolume();

            GroupName = StaticItems.GetItemByID(src.TypeID).GroupName;
        }