private void SwapStage(LessonStage stage, VisualElement element, bool up) { if (!m_BaseVisualElement.Contains(element)) { return; } int elementIndex = m_BaseVisualElement.IndexOf(element); int swapElementIndex = elementIndex + (up ? -1 : 1); if (swapElementIndex < 0 || swapElementIndex >= m_BaseVisualElement.childCount) { return; } VisualElement swapElement = m_BaseVisualElement.ElementAt(swapElementIndex); if (swapElement.GetType() != element.GetType()) { return; } if (!m_BaseVisualElement.SwapElementsAt(elementIndex, swapElementIndex)) { return; } m_LessonStageFactory.SwapStages(stage, up); }
public LessonBrowser() { LessonData lessonData = LessonAccess.Instance.CurrentLessonData; m_LessonStageFactory = lessonData.LessonStageFactory; if (m_LessonStageFactory.LessonStages.Count > 0) { m_DefaultActiveState = false; ApplyDefaultState(lessonData.ShapeDataFactory); LessonStage firstStage = m_LessonStageFactory.LessonStages[0]; m_AppliedActions.Push(firstStage); firstStage.ApplyActions(); HandleLessonStageNumberChanged(LessonAccess.Instance.CurrentLessonStageNumber); } else { m_DefaultActiveState = true; ApplyDefaultState(lessonData.ShapeDataFactory); } AddDisposable(EventBus.Subscribe(this)); }
private void CreateStage() { LessonStage lessonStage = m_LessonStageFactory.CreateLessonStage(); VisualElement visualElement = new LessonStageEditor(lessonStage, RemoveStage, SwapStage).GetVisualElement(); m_BaseVisualElement.Add(visualElement); }
public LessonStageEditor(LessonStage stage, Action <LessonStage, VisualElement> deleteAction, Action <LessonStage, VisualElement, bool> swapAction) { m_Stage = stage; m_DeleteAction = deleteAction; m_SwapAction = swapAction; m_Stage.BecameDirty += UpdateName; m_Stage.BecameDirty += UpdateName; }
public void HandleLessonStageNumberChanged(int stageNumber) { if (stageNumber < 0 || stageNumber >= m_LessonStageFactory.LessonStages.Count) { return; } while (stageNumber >= m_AppliedActions.Count) { LessonStage stage = m_LessonStageFactory.LessonStages[m_AppliedActions.Count]; m_AppliedActions.Push(stage); stage.ApplyActions(); } while (stageNumber < m_AppliedActions.Count - 1) { m_AppliedActions.Pop().RollbackActions(); } }
public LessonStageDescriptionVM(LessonStage stage) { Number = stage.StageNum; Name = stage.StageName; Description = stage.StageDescription; }
public NoConflictsBetweenShapeActionsValidator(LessonStage lessonStage) { m_LessonStage = lessonStage; m_LessonStage.BecameDirty += Update; Update(); }
private void RemoveStage(LessonStage stage, VisualElement blueprintVisualElement) { m_LessonStageFactory.Remove(stage); m_BaseVisualElement.Remove(blueprintVisualElement); }