//
//      このスクリプトの整形に「桜宮の部屋」のまあささんのスクリプトを
//      参考にさせていただきました｡
//      HP  ｢桜宮の部屋｣  http://oukyu.oheya.to/
//

//#############################################################################
//                      Peace@Pieces
//#############################################################################

//--------------------初期設定--------------------------------------------------

#include "std.mi"

/*******************************************************************************
//      自作関数宣言
*******************************************************************************/

Function fn_MoveLayer(Layer L,int TargetX,int TargetY,int TargetA,Float Speed);
Function fn_MoveGroup(Group G,int TargetX,int TargetY,int TargetA,Float Speed);
Function fn_FrameReSize(int TargetW,int TargetX,int TargetH,int TargetY,Float SpeedW,Float SpeedH);

/*******************************************************************************
//      グローバル関数宣言
*******************************************************************************/

//グローバル関数//

Global Group          grpMain;
Global Group          grpPlayPause;
Global Group          grpNext;
Global Group          grpPrev;
Global Group          grpOpen;

Global Group          grpXfade;
Global Group          grpShuffle;
Global Group          grpRepeat;

Global Group          grpClose;

Global Group          grpSongNmae;
Global Group          grpTimer;
Global Group          grpLogo;

Global Group          grpPLbtn;
Global Group          grpMLbtn;
Global Group          grpEQbtn;

Global Group          grpVolume;
Global Group          grpHane;
Global Group          grpSeek;

Global Layer          lyrLeftFrame;
Global Layer          lyrRightFrame;
Global Layer          lyrTopFrame;
Global Layer          lyrBottomFrame;

Global Layer          lyrCharaName;

Global Layer          lyrCharaMask;

Global Layer          lyrChara;
Global Layer          lyrShading;

Global Timer          tmrMove;

Global Int            intCount;
Global Int            intCameraPos;
Global Int            intProgress;
Global Int            intBaseX;
Global Int            intBaseY;

/*******************************************************************************
//      #System.onScriptLoaded()
//      スクリプト起動時に実行される｡
//      初期設定
*******************************************************************************/

System.onScriptLoaded(){

        //オブジェクト設定
        grpMain          = getScriptGroup();
        grpPlayPause     = grpMain.findObject("Player.Button.PlayPause.Group");
        grpNext          = grpMain.findObject("Player.Button.Next.Group");
        grpPrev          = grpMain.findObject("Player.Button.Prev.Group");
        grpOpen          = grpMain.findObject("Player.Button.Open.Group");

        grpXfade         = grpMain.findObject("Player.ToggleButton.Xfade.Group");
        grpShuffle       = grpMain.findObject("Player.ToggleButton.Shuffle.Group");
        grpRepeat        = grpMain.findObject("Player.ToggleButton.Repeat.Group");

        grpSongNmae      = grpMain.findObject("Player.SongNmae.Layer.Group");
        grpTimer         = grpMain.findObject("Player.Timer.Group");
        grpLogo          = grpMain.findObject("Player.Logo.Group");

        grpEQbtn         = grpMain.findObject("Player.Button.EQ.Group");
        grpPLbtn         = grpMain.findObject("Player.Button.PL.Group");
        grpMLbtn         = grpMain.findObject("Player.Button.ML.Group");

        grpVolume        = grpMain.findObject("Player.Volume.Group");

        grpClose         = grpMain.findObject("Player.Button.close.Group");
        grpHane          = grpMain.findObject("Player.Logo.Hane.Group");
        grpSeek          = grpMain.findObject("Player.Seek.Group");

        lyrCharaName     = grpMain.findObject("CharaName");

        lyrLeftFrame     = grpMain.findObject("BG.Left");
        lyrRightFrame    = grpMain.findObject("BG.Right");
        lyrTopFrame      = grpMain.findObject("BG.Top");
        lyrBottomFrame   = grpMain.findObject("BG.Bottom");

        lyrCharaMask     = grpMain.findObject("Mask.Chara");

        lyrChara         = grpMain.findObject("BG.Chara");
        lyrShading       = grpMain.findObject("BG.Shading");

        //タイマー設定
        tmrMove = new Timer;
        tmrMove.setDelay(300);

        grpLogo.bringToFront(); // ロゴの表示順位を一番上にする(クリック順位は変わらない)


        //キャラのカメラ位置をロード
        intCameraPos = System.getPrivateInt("Trans_Peace@Pieces", "CameraPosition", 0);

                if (intCameraPos == 0) {
                  intBaseX = -189;
                  intBaseY = -27;
                  lyrCharaName.setXMLparam("image" , "player.charaname.hikaru");
                }else if (intCameraPos == 1) {
                  intBaseX = -41;
                  intBaseY = -100;
                  lyrCharaName.setXMLparam("image" , "player.charaname.nagi");
                }
        /* //ボツ表示
        intProgress = 0; //進行度用の変数

        lyrChara.setXMLparam("x" , "0" );
        lyrChara.setXMLparam("y" , "-5" );
        lyrShading.setXMLparam("x" , "0" );
        lyrShading.setXMLparam("y" , "-5" );

        fn_FrameReSize(0,200,100,250,2,3);

        fn_MoveLayer(lyrCharaMask,0,0,0,2);
        fn_MoveLayer(lyrChara,-294,-5,255,3);
        fn_MoveLayer(lyrShading,-294,-5,190,3.2);
        */

        // 簡易表示
        fn_MoveLayer(lyrCharaMask,0,0,255,0);
        intProgress = 3; //進行度用の変数

        //lyrCharaMask

        //tmrMove.Start();

}



/*******************************************************************************
//      #System.onScriptUnLoaded()
//      スクリプト終了時に実行される｡
*******************************************************************************/

System.onScriptUnloading() {

        Delete tmrMove;
}


/*******************************************************************************
//      #tmrMove.onTimer()
//      条件：tmrMoveのスタート後300ミリ秒ごとに呼び出される｡
//      機能：ぼかしのランダム処理
*******************************************************************************/

tmrMove.onTimer() {

        if (intCount == 0) {
          fn_MoveGroup(grpPlayPause,2,3,255,0.5);
          fn_MoveGroup(grpHane,-10,290,80,3);
        }

        else if (intCount == 1) tmrMove.setDelay(200);

        else if (intCount == 2) fn_MoveGroup(grpNext,-28,100,255,0.5);
        else if (intCount == 3) fn_MoveGroup(grpPrev,-30,132,255,0.5);
        else if (intCount == 4) fn_MoveGroup(grpOpen,-26,163,255,0.5);

        //else if (intCount == 5) tmrMove.setDelay(500);
        else if (intCount == 6) tmrMove.setDelay(50);

        else if (intCount == 7) fn_MoveGroup(grpXfade,3,225,255,0.4);
        //fn_MoveGroup(grpXfade,3,225,255,0.4);
        //fn_MoveGroup(grpShuffle,10,257,255,0.4);
        //fn_MoveGroup(grpRepeat,25,279,255,0.4);
        //}
        else if (intCount == 8) fn_MoveGroup(grpShuffle,10,257,255,0.4);
        else if (intCount == 9) fn_MoveGroup(grpRepeat,25,279,255,0.4);

        else if (intCount == 10) tmrMove.setDelay(200);

        else if (intCount == 11) fn_MoveGroup(grpSongNmae,0,427,255,0.5);
        else if (intCount == 12) fn_MoveGroup(grpTimer,-1,374,255,0.5);

        else if (intCount == 13) fn_MoveGroup(grpEQbtn,0,0,255,0.5);
        else if (intCount == 14) fn_MoveGroup(grpPLbtn,23,0,255,0.5);
        else if (intCount == 15) fn_MoveGroup(grpMLbtn,46,0,255,0.5);

        else if (intCount == 16) fn_MoveGroup(grpLogo,-28,235,255,1);

        else if (intCount == 17) fn_MoveGroup(grpClose,176,6,255,0.5);

        else if (intCount == 18) fn_MoveGroup(grpVolume,140 - (140 * System.getVolume() / 255),273 + 48 - (48 * System.getVolume() / 255),255,0.5);

        else if (intCount == 19) fn_MoveGroup(grpSeek,140,30,255,0.5);

        intCount ++;

        if (intCount == 20) tmrMove.Stop();

}


/*******************************************************************************
//      #lyrCharaMask.onTargetReached()
//      条件：lyrCharaMask のフェードが止まった時
//      機能：次の処理へ
*******************************************************************************/

lyrCharaMask.onTargetReached() {

        if (intProgress == 0) fn_MoveLayer(lyrCharaMask,0,0,255,1);

        if (intProgress == 1) {

          lyrLeftFrame.setXMLparam("w" , "80" );
          lyrRightFrame.setXMLparam("x" , "70" );
          lyrTopFrame.setXMLparam("h" , "230" );
          lyrBottomFrame.setXMLparam("y" , "220" );

          lyrChara.setXMLparam("x" , "-80" );
          lyrChara.setXMLparam("y" , "-550" );
          lyrShading.setXMLparam("x" , "-80" );
          lyrShading.setXMLparam("y" , "-550" );

          fn_FrameReSize(30,140,0,450,3,5);

          fn_MoveLayer(lyrCharaMask,0,0,0,3);
          fn_MoveLayer(lyrChara,-80,-80,255,4);
          fn_MoveLayer(lyrShading,-80,-80,190,4.2);
        }

        if (intProgress == 2) fn_MoveLayer(lyrCharaMask,0,0,255,2);

        if (intProgress == 3) {

          tmrMove.Start();

          lyrLeftFrame.setXMLparam("w" , "110" );
          lyrRightFrame.setXMLparam("x" , "90" );
          lyrTopFrame.setXMLparam("h" , "230" );
          lyrBottomFrame.setXMLparam("y" , "220" );

          lyrShading.setAlpha(255);

                if (intCameraPos == 0) {
                  lyrChara.setXMLparam("x" , "-189" );
                  lyrChara.setXMLparam("y" , "150" );
                  lyrShading.setXMLparam("x" , "-189" );
                  lyrShading.setXMLparam("y" , "-150" );
                }else if (intCameraPos == 1) {
                  lyrChara.setXMLparam("x" , "440" );
                  lyrChara.setXMLparam("y" , "-100" );
                  lyrShading.setXMLparam("x" , "-440" );
                  lyrShading.setXMLparam("y" , "-100" );
                }

          fn_FrameReSize(52,193,17,433,1,3);

          fn_MoveLayer(lyrCharaMask,0,0,0,3);
          fn_MoveLayer(lyrChara,intBaseX,intBaseY,255,3);
          fn_MoveLayer(lyrShading,intBaseX,intBaseY,0,3.2);
          fn_MoveLayer(lyrCharaName,5,155,255,3.2);

        }

        intProgress ++;


}



/*--------------自作関数------------------------------------------------------*/

/*******************************************************************************
//      #fn_MoveLayer(
//        Layer  L              //移動させるレイヤー
//        int    TargetX        //レイヤーを移動させるX軸の座標
//        int    TargetY        //レイヤーを移動させるY軸の座標
//        int    TargetA        //移動するレイヤーの透明度
//        Float  Speed          //レイヤーを移動させる時間(0.1=100ms)
//      )
//      機能：レイヤーを指定の位置へスライド移動させる
*******************************************************************************/

fn_MoveLayer(Layer L,int TargetX,int TargetY,int TargetA,Float Speed) {

        L.setTargetX(TargetX);
        L.setTargetY(TargetY);
        L.setTargetA(TargetA);
        L.setTargetSpeed(Speed);
        L.gotoTarget();
}


/*******************************************************************************
//      #fn_MoveGroup(
//        Group  G              //移動させるグループ
//        int    TargetX        //グループを移動させるX軸の座標
//        int    TargetY        //グループを移動させるY軸の座標
//        int    TargetA        //移動するグループの透明度
//        Float  Speed          //グループを移動させる時間(0.1=100ms)
//      )
//      機能：グループを指定の位置へスライド移動させる
*******************************************************************************/

fn_MoveGroup(Group G,int TargetX,int TargetY,int TargetA,Float Speed) {

        G.setTargetX(TargetX);
        G.setTargetY(TargetY);
        G.setTargetA(TargetA);
        G.setTargetSpeed(Speed);
        G.gotoTarget();
}



/*******************************************************************************
//      #fn_FrameReSize(
//        int    TargetW        //左側の位置
//        int    TargetX        //右側の位置
//        int    TargetH        //上側の位置
//        int    TargetY        //下側の位置
//        Float  SpeedW         //左右を移動させる時間(0.1=100ms)
//        Float  SpeedH         //上下を移動させる時間(0.1=100ms)
//      )
//      機能：グループを指定の位置へスライド移動させる
*******************************************************************************/

fn_FrameReSize(int TargetW,int TargetX,int TargetH,int TargetY,Float SpeedW,Float SpeedH) {

        lyrLeftFrame.setTargetW(TargetW);
        lyrRightFrame.setTargetX(TargetX);
        lyrTopFrame.setTargetH(TargetH);
        lyrBottomFrame.setTargetY(TargetY);

        lyrLeftFrame.setTargetSpeed(SpeedW);
        lyrRightFrame.setTargetSpeed(SpeedW);
        lyrTopFrame.setTargetSpeed(SpeedH);
        lyrBottomFrame.setTargetSpeed(SpeedH);

        lyrLeftFrame.gotoTarget();
        lyrRightFrame.gotoTarget();
        lyrTopFrame.gotoTarget();
        lyrBottomFrame.gotoTarget();
}
