Exemplo n.º 1
0
        // 実行内容
        public override bool Execute(GameLayerManager GML, ScriptMachine SM)
        {
            // 画像を配置する座標を計算。
            // 基準となる大きさの何倍かで判断。
            float l = left_ * Utilities.Config.Instance.Width;
            float t = top_ * Utilities.Config.Instance.Height;

            // どちらか片方がゼロでないなら、座標も変更する。
            if (l != 0f || t != 0f)
            {
                GML.ChangeLayerPoint(currentLayreId_, new Point((int)l, (int)t));
                Logger.Change(currentLayreId_ + ":(" + l + "," + t + ")");
            }
            // レイヤーIDの画像を差し替える。
            GML.ChangeLayerImage(currentLayreId_, Const.Image.GetImage(filename_));
            Logger.Change(currentLayreId_ + ":[" + filename_ + "]");
            return(true);
        }
Exemplo n.º 2
0
        // 実行内容
        public override bool Execute(GameLayerManager GML, ScriptMachine SM)
        {
            // 遷移前の画像が未定義なら
            // つまり、初回の実行なら
            if (preImage_ == null)
            {
                // 遷移前の画像を取得
                preImage_ = GML.GetImage(Const.Background.NAME);

                // 遷移開始時間を取得
                startTime_ = System.Environment.TickCount;
                Logger.Message("トランジョンを開始しました。");
            }

            // 遷移実行時間中か
            if (IsExecutingTime())
            {
                Utilities.ControlReturn.Instance.Flag = false;
                // メソッドによって処理内容を変更。
                switch (methodType_)
                {
                // メソッドcrossfade
                case (int)MethodTyepe_.Crossfade:
                    g_.DrawImage(
                        nextImage_,
                        0,
                        0,
                        nextImage_.Width,
                        nextImage_.Height
                        );
                    int alpha = (int)(255 * (1 - ElapsedTime() / time_msec_));
                    g_.DrawImage(
                        Utilities.TransMethod.CrossfadeImg(preImage_, alpha),
                        0,
                        0,
                        preImage_.Width,
                        preImage_.Height
                        );
                    GML.ChangeLayerImage(Const.Background.NAME, canvas_);
                    return(false);

                // メソッドscroll
                case (int)MethodTyepe_.Scroll:
                    int border;
                    switch (fromType_)
                    {
                    // 方向上
                    case (int)FromType_.Top:
                        border =
                            (int)(
                                preImage_.Height * ElapsedTime() / time_msec_
                                );
                        g_.DrawImage(
                            Utilities.TransMethod.Scroll(nextImage_, preImage_, border, fromType_),
                            0,
                            0,
                            preImage_.Width,
                            preImage_.Height
                            );
                        GML.ChangeLayerImage(Const.Background.NAME, canvas_);
                        return(false);

                    // 方向下
                    case (int)FromType_.Bottom:
                        border =
                            (int)(
                                preImage_.Height * (1 - ElapsedTime() / time_msec_
                                                    )
                                );
                        g_.DrawImage(
                            Utilities.TransMethod.Scroll(preImage_, nextImage_, border, fromType_),
                            0,
                            0,
                            preImage_.Width,
                            preImage_.Height
                            );
                        GML.ChangeLayerImage(Const.Background.NAME, canvas_);
                        return(false);

                    // 方向右
                    case (int)FromType_.Right:
                        border =
                            (int)(
                                preImage_.Width * (1 - ElapsedTime() / time_msec_
                                                   )
                                );
                        g_.DrawImage(
                            Utilities.TransMethod.Scroll(preImage_, nextImage_, border, fromType_),
                            0,
                            0,
                            preImage_.Width,
                            preImage_.Height
                            );
                        GML.ChangeLayerImage(Const.Background.NAME, canvas_);
                        return(false);

                    // 方向左
                    case (int)FromType_.Left:
                        border =
                            (int)(
                                preImage_.Width * ElapsedTime() / time_msec_
                                );
                        g_.DrawImage(
                            Utilities.TransMethod.Scroll(nextImage_, preImage_, border, fromType_),
                            0,
                            0,
                            preImage_.Width,
                            preImage_.Height
                            );
                        GML.ChangeLayerImage(Const.Background.NAME, canvas_);
                        return(false);
                    }
                    break;
                }
            }
            else
            {
                GML.ChangeLayerImage(Const.Background.NAME, nextImage_);
                Logger.Message(
                    "トランジョンを" + (int)ElapsedTime() + "msで終了しました。"
                    );
                Utilities.ControlReturn.Instance.Flag = true;
                return(true);
            }
            return(true);
        }