// 実行内容 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); }
// 実行内容 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); }