示例#1
0
    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());
     }
 }
示例#4
0
 protected virtual void CaptureScreenOnSavePoint(AdvPage page)
 {
     if (Engine.SaveManager.Type == AdvSaveManager.SaveType.SavePoint)
     {
         if (page.IsSavePoint)
         {
             Debug.Log("Capture");
             StartCoroutine(CoCaptureScreen());
         }
     }
 }
示例#5
0
 //ページの冒頭
 private void OnBeginPage(AdvPage page)
 {
     if (mask == 0)
     {
         // 表示なしなのでリセット.
         if (isChanged)
         {
             ForceFrontSortOrder(page);
             isChanged = false;
         }
     }
 }
示例#6
0
        // テキストに変更があった場合.
        private void OnChangeText(AdvPage page)
        {
            if (mask == 0)
            {
                return;
            }

            isChanged = true;

            // テキストのみ表示で、前のキャラをそのまま表示.
            if (string.IsNullOrEmpty(page.CharacterLabel) && (mask & TargetMask.NoChanageIfTextOnly) == TargetMask.NoChanageIfTextOnly)
            {
                return;
            }

            ForceFrontSortOrder(page);
        }
示例#7
0
        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;
                }
            }
        }
示例#8
0
        // 強制前面表示するか.
        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);
        }
示例#9
0
 public void OnChangeText(AdvPage page)
 {
     Debug.Log("OnChangeText");
 }
示例#10
0
 public void OnEndText(AdvPage page)
 {
     Debug.Log("OnEndText");
 }
示例#11
0
 public void OnBeginText(AdvPage page)
 {
     Debug.Log("OnBeginText");
 }