예제 #1
0
        protected virtual AdvGraphicOperationArg DoCommandBgSub(AdvEngine engine)
        {
            AdvGraphicOperationArg graphicOperationArg = new AdvGraphicOperationArg(this, graphic.Main, fadeTime);

            //表示する
            if (string.IsNullOrEmpty(layerName))
            {
                engine.GraphicManager.BgManager.DrawToDefault(engine.GraphicManager.BgSpriteName, graphicOperationArg);
            }
            else
            {
                engine.GraphicManager.BgManager.Draw(layerName, engine.GraphicManager.BgSpriteName, graphicOperationArg);
            }

            //基本以外のコマンド引数の適用
            AdvGraphicObject obj = engine.GraphicManager.BgManager.FindObject(engine.GraphicManager.BgSpriteName);

            if (obj != null)
            {
                //位置の適用(Arg4とArg5)
                obj.SetCommandPostion(this);
                //その他の適用(モーション名など)
                obj.TargetObject.SetCommandArg(this);
            }

            return(graphicOperationArg);
        }
예제 #2
0
        public AdvCommandParticle(StringGridRow row, AdvSettingDataManager dataManager)
            : base(row)
        {
            this.label = ParseCell <string>(AdvColumnName.Arg1);
            string fileName = ParseCellOptional <string>(AdvColumnName.Arg2, label);

            if (!dataManager.ParticleSetting.Dictionary.ContainsKey(fileName))
            {
                Debug.LogError(ToErrorString(fileName + " is not contained in file setting"));
            }

            this.graphic = dataManager.ParticleSetting.LabelToGraphic(fileName);
            AddLoadGraphic(graphic);

            this.layerName = ParseCellOptional <string>(AdvColumnName.Arg3, "");
            if (!string.IsNullOrEmpty(layerName) && !dataManager.LayerSetting.Contains(layerName))
            {
                Debug.LogError(ToErrorString(layerName + " is not contained in layer setting"));
            }

            //グラフィック表示処理を作成
            this.graphicOperationArg = new AdvGraphicOperationArg(this, graphic, 0);

//			this.sortingOrder = ParseCellOptional<int>(AdvColumnName.Arg4,0);
        }
예제 #3
0
        //キャラクターオブジェクトとして、特殊な表示をする
        internal AdvGraphicObject DrawCharacter(string layerName, string name, AdvGraphicOperationArg arg)
        {
            //既に同名のグラフィックがあるなら、そのレイヤーを取得
            AdvGraphicLayer oldLayer = null;

            foreach (var keyValue in layers)
            {
                if (keyValue.Value.IsEqualDefaultGraphicName(name))
                {
                    oldLayer = keyValue.Value;
                    break;
                }
            }

            //レイヤー名の指定がある場合、そのレイヤーを探す
            AdvGraphicLayer layer = FindLayer(layerName);

            if (layer == null)
            {
                //レイヤーがない場合は、旧レイヤーかデフォルトレイヤーを使う
                layer = (oldLayer == null) ? DefaultLayer : oldLayer;
            }

            //レイヤー変更があるか
            bool changeLayer = (oldLayer != layer && oldLayer != null);

            //レイヤー変更ないなら、描画しておわり
            if (!changeLayer)
            {
                //レイヤー上にデフォルトオブジェクトとして表示
                return(layer.DrawToDefault(name, arg));
            }

            Vector3    oldScale    = Vector3.one;
            Vector3    oldPosition = Vector3.zero;
            Quaternion oldRotation = Quaternion.identity;
            //レイヤーが変わる場合は、昔のほうを消す
            AdvGraphicObject oldObj;

            if (oldLayer.CurrentGraphics.TryGetValue(name, out oldObj))
            {
                oldScale    = oldObj.rectTransform.localScale;
                oldPosition = oldObj.rectTransform.localPosition;
                oldRotation = oldObj.rectTransform.localRotation;
                oldLayer.FadeOut(name, arg.GetSkippedFadeTime(manager.Engine));
            }

            //レイヤー上にデフォルトオブジェクトとして表示
            AdvGraphicObject obj = layer.DrawToDefault(name, arg);

            //ローカルTransform値を引き継ぐ処理
            if (!manager.ResetCharacterTransformOnChangeLayer)
            {
                obj.rectTransform.localScale    = oldScale;
                obj.rectTransform.localPosition = oldPosition;
                obj.rectTransform.localRotation = oldRotation;
            }
            return(obj);
        }
예제 #4
0
 protected virtual bool CheckFailedCrossFade(AdvGraphicOperationArg arg)
 {
     if (arg.Graphic.CheckFailedCrossFade(DefaultObject.LastResource))
     {
         return(true);
     }
     return(DefaultObject.TargetObject.CheckFailedCrossFade(arg.Graphic));
 }
예제 #5
0
        //オブジェクトを描画する
        internal AdvGraphicObject Draw(string name, AdvGraphicOperationArg arg)
        {
            AdvGraphicObject obj = GetObjectCreateIfMissing(name, arg.Graphic);

            obj.Loader.LoadGraphic(arg.Graphic, () =>
            {
                obj.Draw(arg, arg.GetSkippedFadeTime(Engine));
            });
            return(obj);
        }
예제 #6
0
        public override void DoCommand(AdvEngine engine)
        {
            engine.SystemSaveData.GalleryData.AddCgLabel(label);
            engine.GraphicManager.IsEventMode = true;
            //表示する
            AdvGraphicOperationArg graphicOperationArg = DoCommandBgSub(engine);

            //キャラクターは非表示にする
            engine.GraphicManager.CharacterManager.FadeOutAll(graphicOperationArg.GetSkippedFadeTime(engine));
        }
예제 #7
0
        public override void DoCommand(AdvEngine engine)
        {
            //グラフィック表示処理を作成
            AdvGraphicOperationArg graphicOperationArg = new AdvGraphicOperationArg(this, graphic.Main, fadeTime);

            //表示する
            engine.GraphicManager.DrawObject(layerName, spriteName, graphicOperationArg);

            //基本以外のコマンド引数の適用
            AdvGraphicObject obj = engine.GraphicManager.FindObject(spriteName);

            if (obj != null)
            {
                //位置の適用(Arg4とArg5)
                obj.SetCommandPostion(this);
                //その他の適用(モーション名など)
                obj.TargetObject.SetCommandArg(this);
            }
        }
예제 #8
0
        //デフォルトオブジェクトとして描画する
        internal AdvGraphicObject DrawToDefault(string name, AdvGraphicOperationArg arg)
        {
            bool    changeObject = false;
            bool    keepPosition = false;
            Vector3 oldPosition  = Vector3.zero;

            if (DefaultObject != null && DefaultObject.LastResource != null)
            {
                if (DefaultObject.name != name)
                {
                    //デフォルトオブジェクトの名前が違うなら、そのオブジェクトは変更
                    //場所も保持しない
                    changeObject = true;
                }
                else
                {
                    if (CheckFailedCrossFade(arg))
                    {
                        //クロスフェードに失敗するだけの場合
                        //場所は保持する
                        changeObject = true;
                        keepPosition = true;
                        oldPosition  = DefaultObject.transform.localPosition;
                    }
                    else
                    {
                        //クロスフェードできるならオブジェクトの変更を行わない
                        changeObject = false;
                    }
                }
            }

            AdvGraphicObject swapFadeObject = null;

            if (changeObject)
            {
                //すでにあるオブジェクトを消す準備
                swapFadeObject = DefaultObject;
                Remove(DefaultObject);
            }
            DefaultObject = Draw(name, arg);
            if (changeObject)
            {
                //すでにあるオブジェクトをフェードアウトしてクロスフェードとする
                DefaultObject.AddSwapFadeObject(swapFadeObject);
                float fadeTime = arg.GetSkippedFadeTime(Engine);
                if (LayerType == AdvLayerSettingData.LayerType.Bg)
                {
                    StartCoroutine(CoDelayOut(swapFadeObject, fadeTime));
                }
                else
                {
                    swapFadeObject.FadeOut(fadeTime);
                }
            }

            //前の場所を保持する
            if (keepPosition && !Manager.IgnoreKeepPositionOnCrossFade)
            {
                DefaultObject.transform.localPosition = oldPosition;
            }
            return(DefaultObject);
        }
예제 #9
0
 //********描画開始********//
 public virtual void Draw(AdvGraphicOperationArg arg, float fadeTime)
 {
     DrawSub(arg.Graphic, fadeTime);
 }
예제 #10
0
 //表示する
 internal void DrawObject(string layerName, string label, AdvGraphicOperationArg graphicOperationArg)
 {
     FindLayer(layerName).Draw(label, graphicOperationArg);
 }
예제 #11
0
 //デフォルトレイヤーのデフォルトオブジェクトとして表示する
 public virtual AdvGraphicObject DrawToDefault(string name, AdvGraphicOperationArg arg)
 {
     return(DefaultLayer.DrawToDefault(name, arg));
 }
예제 #12
0
 //表示する
 public virtual AdvGraphicObject Draw(string layerName, string name, AdvGraphicOperationArg arg)
 {
     return(FindLayerOrDefault(layerName).Draw(name, arg));
 }