Exemplo n.º 1
0
        public static HistoricalCourseEditorState ToCourseEditorState(this CourseData courseData)
        {
            var selectedPropType = PropType.RingNormal;
            var propOrder        = ImmutableList <PropId> .Empty;
            var props            = ImmutableDictionary <PropId, EditorProp> .Empty;

            for (int i = 0; i < courseData.Props.Count; i++)
            {
                var prop       = courseData.Props[i];
                var editorProp = new EditorProp {
                    Id = PropId.CreateRandomId(), PropType = prop.PropType, Transform = prop.Transform
                };

                propOrder = propOrder.Add(editorProp.Id);
                props     = props.Add(editorProp.Id, editorProp);

                selectedPropType = editorProp.PropType;
            }
            // Automatically select the first prop if possible
            //var selectedProp = propOrder.Count > 0 ? Maybe.Just(propOrder[0]) : Maybe.Nothing<PropId>();
            var selectedProp = Maybe.Nothing <PropId>();

            return(new HistoricalCourseEditorState(courseData.Id, selectedPropType, selectedProp, props,
                                                   propOrder, false, false));
        }
Exemplo n.º 2
0
        public static HistoricalCourseEditorState AddProp(this HistoricalCourseEditorState state, ImmutableTransform transform)
        {
            var propId  = PropId.CreateRandomId();
            var newProp = new EditorProp {
                Id = propId, PropType = state.SelectedPropType, Transform = transform
            };
            // Immediately select the newly created prop
            var selectedProp = Maybe.Just(propId);

            return(state.Update(selectedProp, state.Props.Add(newProp.Id, newProp), state.PropOrder.Add(propId)));
        }
Exemplo n.º 3
0
        public static HistoricalCourseEditorState SelectPropType(this HistoricalCourseEditorState state, PropType propType)
        {
            var newProps        = ImmutableDictionary <PropId, EditorProp> .Empty;
            var newPropOrder    = ImmutableList <PropId> .Empty;
            var newSelectedProp = Maybe.Nothing <PropId>();

            for (int i = 0; i < state.PropOrder.Count; i++)
            {
                var oldProp = state.Props[state.PropOrder[i]];

                var newProp = new EditorProp {
                    Id = PropId.CreateRandomId(), PropType = propType, Transform = oldProp.Transform
                };
                newProps     = newProps.Add(newProp.Id, newProp);
                newPropOrder = newPropOrder.Add(newProp.Id);

                if (state.SelectedProp.Equals(Maybe.Just(oldProp.Id)))
                {
                    newSelectedProp = Maybe.Just(newProp.Id);
                }
            }
            return(new HistoricalCourseEditorState(state.Id, propType, newSelectedProp, newProps, newPropOrder,
                                                   state.IsUndoPossibe, state.IsRedoPossibe));
        }