//共通処理

__fn cm_onEnterMap bl {
    @ev.call .mev(MEV_COMMON, 1)
}

__fn cm_addBall bl {
    @ev.call .mev(MEV_COMMON, 2)
}

__fn cm_clearAttack bl {
    @ev.call .mev(MEV_COMMON, 3)
}

__fn cm_resumeSpectatorsAnim bl {
    @ev.call .mev(MEV_COMMON, 4)
}

mev[MEV_COMMON] .map(parentMap) .name("common") .pos(1,0)

//マップに入った直度に実行する
mep[1] bl {
    pbOnEnterMap()
    //主人公が(9,7)にいないとズレる
    @map[parentMap].setPlayerPos .pos(9, 7) .retain

    //衝突マップ
    showCollisionMapPicture(PIC_COLLMAP + 1, "pb/cm_bs1", 0, 0)

    //ステージマップ
    showStageMapPicture(PIC_STAGE + 2, "pb/bs1", LAY_STAGE_HI, 0, 120)

    //フリッパーを設置する
    pbFlipperFunction(FL_FUNC_APPEAR, 0,            0, GIM_LAYER_MID,  7 * 16 - 2, 14 * 16 - 8)
    pbFlipperFunction(FL_FUNC_APPEAR, 1,  FL_BIT_HREV, GIM_LAYER_MID, 12 * 16 + 2, 14 * 16 - 8)

    //クリア状況を初期化する
    bitOff(iconFlag, ICON_BIT_DAERO | ICON_BIT_GOSEI | ICON_BIT_MUSYA | ICON_BIT_NASU)

    //debug
    //enableDedicatedBGM.on
    //bonusGameMode = 1
    //chance = 1
    //powerupTimer = UNIT_FPS * 60
    
    //観客
    //2003
    @if bonusGameMode == 0 bl {
        _setSpectators(MEV_SPEC_TURN, 2, DIR_FACE_UP,    2, 13)
        _setSpectators(MEV_SPEC_0,    3, DIR_FACE_UP,    2, 12)
        _setSpectators(MEV_SPEC_1,    3, DIR_FACE_RIGHT, 1, 12)
        _setSpectators(MEV_SPEC_2,    3, DIR_FACE_DOWN,  3, 12)
        _setSpectators(MEV_SPEC_3,    0, DIR_FACE_LEFT,  0, 13)
        _setSpectators(MEV_SPEC_4,    0, DIR_FACE_DOWN,  4, 13)
        _setSpectators(MEV_SPEC_5,    0, DIR_FACE_RIGHT, 1, 14)
        _setSpectators(MEV_SPEC_6,    1, DIR_FACE_UP,    3, 14)
    //魔王軍
    } .else bl {
        _setSpectators(MEV_SPEC_0, 5, DIR_FACE_UP,    0, 11)
        _setSpectators(MEV_SPEC_1, 4, DIR_FACE_RIGHT, 0, 13)
        _setSpectators(MEV_SPEC_2, 4, DIR_FACE_UP,    1, 14)
        _setSpectators(MEV_SPEC_3, 5, DIR_FACE_RIGHT, 3, 14)
        _setSpectators(MEV_SPEC_4, 4, DIR_FACE_DOWN,  4, 13)
        _setSpectators(MEV_SPEC_5, 4, DIR_FACE_LEFT,  3, 12)
    }

    //イベントモード
    eventMode = TRUE

    //アイコンを表示しない
    enableIcon = FALSE
}


//玉を追加する
mep[2] bl {
    @loop MAX_BALL .dst(idxA) bl {
        getBallPtr(ptrA, idxA)
        @if `v[ptrA + MB_STATE] <= BA_ST_NONE bl {
            pbBallFunction(BA_FUNC_APPEAR,  idxA,  0, GIM_LAYER_MID, FREEZE_X * 16 + 8, FREEZE_Y * 16 - 8)
            pbBallFunction(BA_FUNC_SET_VEL, idxA,  2 * UNIT_POS, -100 * UNIT_ANGLE, 0, 0)

            @se.play "flipper2" .opt(90, 100, 50)
            @break
        }
    }
}

//攻撃用ピクチャの動きを止める
//idxB,ptrB
mep[3] bl {
    @loop MAX_ATTACK .dst(idxB) bl {
        getAttackPtr(ptrB, idxB)
        @if `v[ptrB + MA_STATE] == AT_ST_ENABLE bl {
            v[ptrB + MA_STATE] = AT_ST_DELETE
        }
    }
}

// 観客のアニメ―ションを開始する
mep[4] bl {
    //2003
    @if bonusGameMode == 0 bl {
        @ev.setAction [MEV_SPEC_TURN] .freq(4) .repeat .act {
            .turnRight
        }
        @foreach[MEV_SPEC_0, MEV_SPEC_3, MEV_SPEC_4, MEV_SPEC_5, MEV_SPEC_6] .dst(localA) {
            @ev.setAction [localA] .freq(8) .act {
                .resumeAnim
            }
        }
    //魔王軍
    } .else bl {
        @foreach[MEV_SPEC_1, MEV_SPEC_3, MEV_SPEC_5] .dst(localA) {
            @ev.setAction [localA] .freq(8) .act {
                .resumeAnim
            }
        }
    }
}