コード例 #1
0
 public static dynamic GetTSObject(LevelMark dynObject)
 {
     if (dynObject is null)
     {
         return(null);
     }
     return(dynObject.teklaObject);
 }
コード例 #2
0
ファイル: BeanLevel.cs プロジェクト: linxscc/LoveGame
        public override int GetHashCode()
        {
            int hash = 1;

            if (LevelId != 0)
            {
                hash ^= LevelId.GetHashCode();
            }
            if (BeforeLevelId != 0)
            {
                hash ^= BeforeLevelId.GetHashCode();
            }
            if (AfterLevelId != 0)
            {
                hash ^= AfterLevelId.GetHashCode();
            }
            if (Type != 0)
            {
                hash ^= Type.GetHashCode();
            }
            hash ^= abilities_.GetHashCode();
            hash ^= ItemMax.GetHashCode();
            hash ^= FansMax.GetHashCode();
            if (Max != 0)
            {
                hash ^= Max.GetHashCode();
            }
            hash ^= eventId_.GetHashCode();
            hash ^= StarSource.GetHashCode();
            hash ^= awards_.GetHashCode();
            if (GameType != 0)
            {
                hash ^= GameType.GetHashCode();
            }
            if (LevelInfoId != 0)
            {
                hash ^= LevelInfoId.GetHashCode();
            }
            if (ChapterGroup != 0)
            {
                hash ^= ChapterGroup.GetHashCode();
            }
            if (LevelMark.Length != 0)
            {
                hash ^= LevelMark.GetHashCode();
            }
            hash ^= LevelPlot.GetHashCode();
            hash ^= levelCoordinate_.GetHashCode();
            hash ^= levelBackdrop_.GetHashCode();
            if (levelExtra_ != null)
            {
                hash ^= LevelExtra.GetHashCode();
            }
            return(hash);
        }
コード例 #3
0
        /// <summary>
        /// Singleton instance
        /// </summary>
        public static LevelMarkObjectOverrule Instance()
        {
            if (_instance != null)
            {
                return(_instance);
            }

            _instance = new LevelMarkObjectOverrule();

            // Фильтр "отлова" примитива по расширенным данным. Работает лучше, чем проверка вручную!
            _instance.SetXDataFilter(LevelMark.GetDescriptor().Name);
            return(_instance);
        }
コード例 #4
0
        /// <summary>
        /// Панель "Отметки уровня"
        /// </summary>
        private static void AddLevelMarksPanel(RibbonTab ribbonTab)
        {
            var ribSourcePanel = new RibbonPanelSource {
                Title = Language.GetItem("tab11")
            };
            var ribPanel = new RibbonPanel {
                Source = ribSourcePanel
            };

            ribbonTab.Panels.Add(ribPanel);
            var ribRowPanel = new RibbonRowPanel();

            // mpLevelMark
            ribRowPanel.Items.Add(GetBigSplitButton(LevelMark.GetDescriptor()));

            if (ribRowPanel.Items.Any())
            {
                ribSourcePanel.Items.Add(ribRowPanel);
            }
        }
コード例 #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="LevelMarkGrip"/> class.
        /// </summary>
        /// <param name="levelMark">Экземпляр класса <see cref="mpLevelMark.LevelMark"/></param>
        /// <param name="gripType">Вид ручки</param>
        /// <param name="gripName">Имя ручки</param>
        /// <param name="gripPoint">Точка ручки</param>
        public LevelMarkGrip(
            LevelMark levelMark,
            GripType gripType,
            LevelMarkGripName gripName,
            Point3d gripPoint)
        {
            LevelMark = levelMark;
            GripName  = gripName;
            GripType  = gripType;
            GripPoint = gripPoint;

            /* При инициализации ручки нужно собрать все точки и поместить их в поле _points.
             * Это создаст кэш точек. Если в методе WorldDraw брать точки из самого объекта (LevelMark),
             * то вспомогательные линии будут меняться при зуммировании. Это связано с тем, что в методе
             * MoveGripPointsAt происходит вызов метода UpdateEntities */
            _points = new List <Point3d>
            {
                LevelMark.InsertionPoint,
                LevelMark.ObjectPoint,
                LevelMark.BottomShelfStartPoint
            };
        }
コード例 #6
0
        /// <inheritdoc />
        public override void OnGripStatusChanged(ObjectId entityId, Status newStatus)
        {
            try
            {
                // При начале перемещения запоминаем первоначальное положение ручки
                // Запоминаем начальные значения
                if (newStatus == Status.GripStart)
                {
                    _gripTmp = GripPoint;
                }

                // При удачном перемещении ручки записываем новые значения в расширенные данные
                // По этим данным я потом получаю экземпляр класса LevelMark
                if (newStatus == Status.GripEnd)
                {
                    using (var tr = AcadUtils.Database.TransactionManager.StartOpenCloseTransaction())
                    {
                        var blkRef = tr.GetObject(LevelMark.BlockId, OpenMode.ForWrite, true, true);
                        using (var resBuf = LevelMark.GetDataForXData())
                        {
                            blkRef.XData = resBuf;
                        }

                        tr.Commit();
                    }

                    LevelMark.Dispose();
                }

                // При отмене перемещения возвращаем временные значения
                if (newStatus == Status.GripAbort)
                {
                    if (_gripTmp != null)
                    {
                        switch (GripName)
                        {
                        case LevelMarkGripName.BasePoint:
                            LevelMark.InsertionPoint = _gripTmp;
                            break;

                        case LevelMarkGripName.ObjectPoint:
                            LevelMark.ObjectPoint = _gripTmp;
                            break;

                        case LevelMarkGripName.BottomShelfStartPoint:
                            LevelMark.BottomShelfStartPoint = _gripTmp;
                            break;

                        case LevelMarkGripName.ArrowPoint:
                            LevelMark.EndPoint = _gripTmp;
                            break;

                        case LevelMarkGripName.TopShelfPoint:
                            LevelMark.ShelfPoint = _gripTmp;
                            break;
                        }
                    }
                }

                base.OnGripStatusChanged(entityId, newStatus);
            }
            catch (Exception exception)
            {
                if (exception.ErrorStatus != ErrorStatus.NotAllowedForThisProxy)
                {
                    ExceptionBox.Show(exception);
                }
            }
        }
コード例 #7
0
 /// <summary>
 /// Проверка валидности примитива. Проверка происходит по наличию XData с определенным AppName
 /// </summary>
 /// <param name="overruledSubject">Instance of <see cref="RXObject"/></param>
 public override bool IsApplicable(RXObject overruledSubject)
 {
     return(ExtendedDataUtils.IsApplicable(overruledSubject, LevelMark.GetDescriptor().Name, true));
 }