protected virtual void GoToSection(int sectionIndex, ChangeType changeType) { var nextSectionKey = NonImageContent.Sections[sectionIndex].Key; var nextSection = UserEncounter.GetSection(nextSectionKey); var selectedArgs = new UserSectionSelectedEventArgs(nextSection, changeType); UserSectionSelector.Select(this, selectedArgs); }
public void StartMenuScene(UserEncounter userEncounter, ILoadingScreen loadingScreen, MenuArea menuArea) { ImageHolder.BeginHoldingData(); var categories = GetMenuEncountersInfo(userEncounter); var menuSceneInfo = new LoadingMenuSceneInfo(userEncounter.User, loadingScreen, menuArea, categories); MenuSceneStarter.StartScene(menuSceneInfo); }
public void ConfirmStartingMenuScene(UserEncounter userEncounter, ILoadingScreen loadingScreen, MenuArea menuArea) { UserEncounter = userEncounter; LoadingScreen = loadingScreen; MenuArea = menuArea; ConfirmationPopup.ShowConfirmation(ExitSceneWithEncounter, ExitConfirmationTitle, ExitConfirmationDescription, "EXIT", "CANCEL"); }
protected virtual void Initialize(object sender, WriterSceneInfoSelectedEventArgs e) { var sceneInfo = e.SceneInfo; var encounterStatus = new EncounterStatus(new EncounterBasicStatus(), new EncounterContentStatus()); var encounter = new UserEncounter(sceneInfo.User, sceneInfo.Encounter, encounterStatus); var encounterResult = new WaitableTask <UserEncounter>(encounter); var loadingInfo = new LoadingReaderSceneInfo(sceneInfo.User, sceneInfo.LoadingScreen, encounterResult); LoadingReaderSceneInfoSelector.Select(this, new LoadingReaderSceneInfoSelectedEventArgs(loadingInfo)); }
protected virtual WaitableTask <IMenuEncountersInfo> GetMenuEncountersInfo( UserEncounter userEncounter) { var task = new WaitableTask <IMenuEncountersInfo>(); var categories = MenuInfoReader.GetMenuEncountersInfo(userEncounter.User); categories.AddOnCompletedListener((result) => CompleteMenuEncountersInfoTask(task, result, userEncounter)); return(task); }
protected virtual void SetEncounterStart(UserEncounter encounter) { var startPoint = GetStartPoint(encounter); if (startPoint == null) { return; } encounter.Data.Content.NonImageContent.SetCurrentSection(startPoint.Section.Data); startPoint.Section.Data.SetCurrentTab(startPoint.Tab.Data); }
public WaitableTask WriteStatus(UserEncounter encounter) { var task = new WaitableTask(); var serverTask = ServerStatusWriter.WriteStatus(encounter); var localTask = LocalStatusWriter.WriteStatus(encounter); serverTask.AddOnCompletedListener(ProcessTaskResults); localTask.AddOnCompletedListener(ProcessTaskResults); return(task); void ProcessTaskResults(TaskResult taskResult) => ProcessResults(task, serverTask, localTask); }
public UserTab(UserEncounter encounter, Tab data, TabStatus status) { Encounter = encounter; Data = data; Status = status; foreach (var panel in data.Panels) { var userPanel = new UserPanel(encounter, panel.Value, status.GetPanelStatus(panel.Key)); userPanel.StatusChanged += UpdateIsRead; Panels.Add(panel.Key, userPanel); } }
public UserSection(UserEncounter encounter, Section data, SectionStatus status) { Encounter = encounter; Data = data; Status = status; foreach (var tab in data.Tabs) { var userTab = new UserTab(encounter, tab.Value, status.GetTabStatus(tab.Key)); userTab.StatusChanged += UpdateIsRead; Tabs.Add(tab.Key, userTab); } }
public UserDialoguePin(UserEncounter encounter, DialoguePin dialogue, DialogueStatus status) { Encounter = encounter; Data = dialogue; Status = status; foreach (var panel in Data.Conversation) { var userPanel = new UserPanel(encounter, panel.Value, status.GetPanelStatus(panel.Key)); userPanel.StatusChanged += UpdateIsRead; Panels.Add(panel.Key, userPanel); } }
public UserQuizPin(UserEncounter encounter, QuizPin quiz, QuizStatus status) { Encounter = encounter; Data = quiz; Status = status; foreach (var panel in Data.Questions) { var userPanel = new UserPanel(encounter, panel.Value, status.GetPanelStatus(panel.Key)); userPanel.StatusChanged += UpdateIsRead; Panels.Add(panel.Key, userPanel); } }
public UserReadMorePin(UserEncounter encounter, ReadMorePin readMore, ReadMoreStatus status) { Encounter = encounter; Data = readMore; Status = status; foreach (var panel in Data.Panels) { var userPanel = new UserPanel(encounter, panel.Value, status.GetPanelStatus(panel.Key)); userPanel.StatusChanged += UpdateIsRead; Panels.Add(panel.Key, userPanel); } }
protected virtual void StartReader() { SceneInfoSelector.CurrentValue.SceneInfo.Encounter.Content.NonImageContent.SetCurrentSection(SectionSelector.CurrentValue.SelectedSection); SectionSelector.CurrentValue.SelectedSection.SetCurrentTab(TabSelector.CurrentValue.SelectedTab); SignalBus.Fire <SerializeEncounterSignal>(); var sceneInfo = SceneInfoSelector.CurrentValue.SceneInfo; var encounterStatus = new EncounterStatus(new EncounterBasicStatus(), new EncounterContentStatus()); var encounter = new UserEncounter(sceneInfo.User, sceneInfo.Encounter, encounterStatus); var encounterResult = new WaitableTask <UserEncounter>(encounter); var loadingInfo = new LoadingReaderSceneInfo(sceneInfo.User, sceneInfo.LoadingScreen, encounterResult); ReaderSceneStarter.StartScene(loadingInfo); }
public WaitableTask WriteStatus(UserEncounter encounter) { var metadata = encounter.Data.Metadata; var status = encounter.Status; var statusKeyValuePair = new KeyValuePair <int, EncounterBasicStatus>(metadata.RecordNumber, status.BasicStatus); var basicStatusString = BasicStatusSerializer.Serialize(statusKeyValuePair); FileManager.SetFileText(encounter.User, FileType.BasicStatus, metadata, basicStatusString); var statusString = ContentStatusSerializer.Serialize(status.ContentStatus); FileManager.SetFileText(encounter.User, FileType.DetailedStatus, metadata, statusString); return(WaitableTask.CompletedTask); }
protected void ProcessResults(User user, WaitableTask <UserEncounter> result, WaitableTask <Encounter> encounterData, WaitableTask <EncounterStatus> detailedStatus) { if (result.IsCompleted() || !encounterData.IsCompleted() || !detailedStatus.IsCompleted()) { return; } encounterData.Result.Value.Content.NonImageContent.Sections[0].Value.Tabs.Insert(0, "TOC", new Tab("Table Of Contents", "Table of Contents")); var encounter = new UserEncounter(user, encounterData.Result.Value, detailedStatus.Result.Value); SetEncounterStart(encounter); result.SetResult(encounter); }
protected SectionTabPair GetStartPoint(UserEncounter encounter) { UserSection lastSection = null; foreach (var section in encounter.Sections.Values) { if (section.IsRead()) { lastSection = section; continue; } return(GetStartPoint(lastSection, section)); } return(null); }
public UserPanel(UserEncounter encounter, Panel data, PanelStatus status) { Encounter = encounter; Data = data; Status = status; if (data.Pins != null && data.Pins.HasPin()) { PinGroup = new UserPinGroup(encounter, data.Pins, status.PinGroupStatus); PinGroup.StatusChanged += UpdateIsRead; } foreach (var panel in data.ChildPanels) { var userPanel = new UserPanel(encounter, panel.Value, status.GetChildPanelStatus(panel.Key)); userPanel.StatusChanged += UpdateIsRead; ChildPanels.Add(panel.Key, userPanel); } }
public UserPinGroup(UserEncounter encounter, PinGroup pinGroup, PinGroupStatus status) { Encounter = encounter; Data = pinGroup; Status = status; if (pinGroup.ReadMore != null) { ReadMorePin = new UserReadMorePin(Encounter, Data.ReadMore, Status.ReadMoreStatus); ReadMorePin.StatusChanged += UpdateIsRead; } if (pinGroup.Dialogue != null) { DialoguePin = new UserDialoguePin(Encounter, Data.Dialogue, Status.DialogueStatus); DialoguePin.StatusChanged += UpdateIsRead; } if (pinGroup.Quiz != null) { QuizPin = new UserQuizPin(Encounter, Data.Quiz, Status.QuizStatus); QuizPin.StatusChanged += UpdateIsRead; } }
public abstract void ShowEncounterInfo(UserEncounter userEncounter);
public UserEncounterSelectedEventArgs(UserEncounter encounter) => Encounter = encounter;
protected virtual void OnEncounterSelected(object sender, UserEncounterSelectedEventArgs eventArgs) => UserEncounter = eventArgs.Encounter;
protected virtual void CompleteMenuEncountersInfoTask(WaitableTask <IMenuEncountersInfo> task, TaskResult <IMenuEncountersInfo> result, UserEncounter userEncounter) { if (userEncounter?.Status != null) { userEncounter.Status.BasicStatus.Completed = userEncounter.Status.ContentStatus.Read; } if (result.IsError()) { task.SetError(result.Exception); return; } if (result.Value == null) { task.SetResult(null); return; } foreach (var encounter in result.Value.GetEncounters()) { if (encounter.GetLatestMetadata().RecordNumber != userEncounter.Data.Metadata.RecordNumber) { continue; } if (userEncounter.Status != null) { encounter.Status = userEncounter.Status.BasicStatus; } else { encounter.Status = new EncounterBasicStatus(); } break; } task.SetResult(result.Value); }