예제 #1
0
파일: StageVm.cs 프로젝트: tp-nscan/archean
 public static Tuple <StageVm, SortableVm> ToNextTicOld(this StageVm stageVm,
                                                        double animationPct, SortableVm sortableVm = null)
 {
     if (stageVm.SortableVm == null)
     {
         if (sortableVm == null)
         {
             return(new Tuple <StageVm, SortableVm>(
                        item1: stageVm,
                        item2: null));
         }
         return(new Tuple <StageVm, SortableVm>(
                    item1: new StageVm(
                        stageIndex: stageVm.StageIndex,
                        stageVmStyle: stageVm.StageVmStyle,
                        order: stageVm.Order,
                        keyPairVms: stageVm.KeyPairVms,
                        sortableVm: stageVm.SortableVm.ChangeSectionCount(stageVm.StageVmStyle.SortableVmStyle.SectionCount)
                        .ChangeAnimationPct(animationPct)),
                    item2: null));
     }
     else
     {
         return(new Tuple <StageVm, SortableVm>(
                    item1: new StageVm(
                        stageIndex: stageVm.StageIndex,
                        stageVmStyle: stageVm.StageVmStyle,
                        order: stageVm.Order,
                        keyPairVms: stageVm.KeyPairVms,
                        sortableVm: stageVm.SortableVm.ChangeAnimationPct(animationPct)),
                    item2: null));
     }
 }
예제 #2
0
파일: StageVm.cs 프로젝트: tp-nscan/archean
 public static StageVm SetStageVmStyle(this StageVm stageVm, StageVmStyle stageVmStyle)
 {
     return(new StageVm(
                stageIndex: stageVm.StageIndex,
                stageVmStyle: stageVmStyle,
                order: stageVm.Order,
                keyPairVms: stageVm.KeyPairVms,
                sortableVm: stageVm.SortableVm
                ));
 }
예제 #3
0
파일: StageVm.cs 프로젝트: tp-nscan/archean
 public static StageVm ClearAll(this StageVm stageVm)
 {
     return(new StageVm(
                stageIndex: stageVm.StageIndex,
                stageVmStyle: stageVm.StageVmStyle,
                order: stageVm.Order,
                keyPairVms: stageVm.KeyPairVms.Select(kpvm => kpvm.ResetUseHistory()),
                sortableVm: null
                ));
 }
예제 #4
0
파일: StageVm.cs 프로젝트: tp-nscan/archean
        public static StageVm ChangeAnimationPct(this StageVm stageVm, double animationPct)
        {
            if (stageVm == null)
            {
                return(null);
            }

            return(new StageVm
                   (
                       stageIndex: stageVm.StageIndex,
                       stageVmStyle: stageVm.StageVmStyle,
                       order: stageVm.Order,
                       keyPairVms: stageVm.KeyPairVms.Select(kpvm => kpvm.ResetUseHistory()),
                       sortableVm: stageVm.SortableVm.ChangeAnimationPct(animationPct)
                   ));
        }
예제 #5
0
파일: StageVm.cs 프로젝트: tp-nscan/archean
 public static StageVm ToNextTic(this StageVm stageVm,
                                 double animationPct)
 {
     if (stageVm.SortableVm == null)
     {
         return(stageVm);
     }
     else
     {
         return(new StageVm(
                    stageIndex: stageVm.StageIndex,
                    stageVmStyle: stageVm.StageVmStyle,
                    order: stageVm.Order,
                    keyPairVms: stageVm.KeyPairVms,
                    sortableVm: stageVm.SortableVm.ChangeAnimationPct(animationPct)));
     }
 }
예제 #6
0
파일: StageVm.cs 프로젝트: tp-nscan/archean
 public static double WidthToHeight(this StageVm stageVm)
 {
     return(stageVm.StageVmStyle.SortableVmStyle.StageWidthToHeight());
 }
예제 #7
0
파일: StageVm.cs 프로젝트: tp-nscan/archean
        public static Tuple <StageVm, SortableVm> ToNextStep(this StageVm stageVm,
                                                             SortableVm sortableVm = null)
        {
            if (stageVm.SortableVm == null)
            {
                if (sortableVm == null)
                {
                    return(new Tuple <StageVm, SortableVm>(
                               item1: stageVm,
                               item2: null));
                }
                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms,
                               sortableVm: sortableVm.ChangeSectionCount(stageVm.StageVmStyle.SortableVmStyle.SectionCount)),
                           item2: null));
            }

            if (stageVm.SortableVm.StageVmStep == StageVmStep.PostSort)
            {
                if (sortableVm == null)
                {
                    return(new Tuple <StageVm, SortableVm>(
                               item1: stageVm,
                               item2: null));
                }
                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms,
                               sortableVm: sortableVm.ChangeSectionCount(stageVm.StageVmStyle.SortableVmStyle.SectionCount)
                               ),
                           item2: null));
            }

            switch (stageVm.SortableVm.StageVmStep)
            {
            case StageVmStep.Init:

                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms,
                               sortableVm: stageVm.SortableVm.ToLeftStep(stageVm.KeyPairVms.ToArray())),
                           item2: null));

            case StageVmStep.Left:

                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms,
                               sortableVm: stageVm.SortableVm.ToPreSortStep(stageVm.KeyPairVms.ToArray())),
                           item2: null));


            case StageVmStep.Presort:

                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms.UpdateKeyPairVms(stageVm.SortableVm.PastSortableItemVms),
                               sortableVm: stageVm.SortableVm.ToPostSortStep()),
                           item2: stageVm.SortableVm.ToInitStep()));


            case StageVmStep.PostSort:

                return(new Tuple <StageVm, SortableVm>(
                           item1: new StageVm(
                               stageIndex: stageVm.StageIndex,
                               stageVmStyle: stageVm.StageVmStyle,
                               order: stageVm.Order,
                               keyPairVms: stageVm.KeyPairVms,
                               sortableVm: null),
                           item2: null));

            default:
                throw new Exception($"{stageVm.SortableVm.StageVmStep} not handled");
            }
        }