void OnEndPage(AdvPage page) { if (page.CurrentData.IsEmptyText) { return; } AdvBacklog log = page.Engine.BacklogManager.LastLog; if (log == null) { return; } if (itemPrefab == null || targetRoot == null) { Debug.LogError("itemPrefab or targetRoot is null"); return; } if (logs.Count > 0 && logs.Count >= maxLog) { GameObject.Destroy(logs[0]); logs.RemoveAt(0); } GameObject go = targetRoot.AddChildPrefab(itemPrefab); go.SendMessage("OnInitData", log); go.transform.SetSiblingIndex(1); logs.Add(go); }
private void OnBeginText(AdvPage page) { // 毎回クリア. foreach (var item in grayoutControllers) { characterGrayOutController.NoGrayoutCharacters.Remove(item); } grayoutControllers.Clear(); // 表示がないキャラは既存の全キャラをグレーアウト対象外にする. var desableGrayout = page.CharacterInfo == null || page.CharacterInfo.Graphic == null; if (desableGrayout) { var allLayers = engine.GraphicManager.CharacterManager.AllGraphicsLayers(); foreach (var item in allLayers) { var characterLabel = item.DefaultObject.name; if (grayoutControllers.Contains(characterLabel)) { continue; } characterGrayOutController.NoGrayoutCharacters.Add(characterLabel); grayoutControllers.Add(characterLabel); } } }
//到保存点时调用,自动截图并保存至AutoSave private void CaptureScreenOnSavePoint(AdvPage page) { if ((this.Engine.SaveManager.Type == AdvSaveManager.SaveType.SavePoint) && page.IsSavePoint) { Debug.Log("Capture"); base.StartCoroutine(this.CoCaptureScreen()); } }
protected virtual void CaptureScreenOnSavePoint(AdvPage page) { if (Engine.SaveManager.Type == AdvSaveManager.SaveType.SavePoint) { if (page.IsSavePoint) { Debug.Log("Capture"); StartCoroutine(CoCaptureScreen()); } } }
//ページの冒頭 private void OnBeginPage(AdvPage page) { if (mask == 0) { // 表示なしなのでリセット. if (isChanged) { ForceFrontSortOrder(page); isChanged = false; } } }
// テキストに変更があった場合. private void OnChangeText(AdvPage page) { if (mask == 0) { return; } isChanged = true; // テキストのみ表示で、前のキャラをそのまま表示. if (string.IsNullOrEmpty(page.CharacterLabel) && (mask & TargetMask.NoChanageIfTextOnly) == TargetMask.NoChanageIfTextOnly) { return; } ForceFrontSortOrder(page); }
private void ForceFrontSortOrder(AdvPage page) { var layers = engine.GraphicManager.CharacterManager.AllGraphicsLayers(); RestoreSortOrder(); int?frontSortOrder = null; foreach (var layer in layers) { foreach (var keyValue in layer.CurrentGraphics) { var obj = keyValue.Value; var sortingOrder = obj.Layer.Canvas.sortingOrder; if (!frontSortOrder.HasValue || frontSortOrder.Value < sortingOrder) { frontSortOrder = sortingOrder; } if (IsCharacterForceFront(page, layer)) { managedObjects.Add(new SortOrderRestore(sortingOrder, obj)); } } } // 対象を最前面に. if (frontSortOrder.HasValue) { foreach (var item in managedObjects) { item.Target.Layer.Canvas.sortingOrder = frontSortOrder.Value + 1; } } }
// 強制前面表示するか. private bool IsCharacterForceFront(AdvPage page, AdvGraphicLayer layer) { var pageBeginLayer = page.Engine.GraphicManager.CharacterManager.AllGraphicsLayers(); // しゃべっているキャラ. if ((mask & TargetMask.Talking) == TargetMask.Talking) { if (layer.DefaultObject.name == page.CharacterLabel) { return(true); } } // ページ内の新規キャラ. if ((mask & TargetMask.NewCharacerInPage) == TargetMask.NewCharacerInPage) { if (pageBeginLayer.Find(x => (x != null) && x.DefaultObject != null && (x.DefaultObject.name == layer.DefaultObject.name)) == null) { return(true); } } return(false); }
public void OnChangeText(AdvPage page) { Debug.Log("OnChangeText"); }
public void OnEndText(AdvPage page) { Debug.Log("OnEndText"); }
public void OnBeginText(AdvPage page) { Debug.Log("OnBeginText"); }