
//イベント番号
def {
    CEV_GET_TIMER_STRING = 2
    CEV_SELECT_USING_BIT
    CEV_SET_SCROLL

    CEV_GET_REFLECTION = 8
    CEV_CIRCLE_TO_CIRCLE
    CEV_CIRCLE_TO_SEGMENT
    CEV_CIRCLE_TO_ROTATING_SEGMENT
    CEV_POINT_TO_COLLMAP

    CEV_PB_ON_ENTER_MAP = 16
    CEV_PB_ON_FRAME
    CEV_PB_BALL_FUNC
    CEV_PB_BALL_REFLECTION
    CEV_PB_BALL_TO_AREA
    CEV_PB_FLIPPER_FUNC
    CEV_PB_UPDATE_BUMPER
    CEV_PB_UPDATE_FORCE
    CEV_PB_ADD_SCORE
    CEV_PB_DISPLAY
    CEV_PB_GET_RANKING_STR

    CEV_SAVE_GAME = 32
    CEV_DELETE_ALL_GAME_SCORE
    CEV_GAME_STORE
    CEV_SELECT_ARCADE_BGM
    CEV_PLAY_ARCADE_BGM
    CEV_SHOW_ACHIEVEMENT
    CEV_SET_ACHIEVEMENT
    CEV_SELECT_CTRL_TYPE
    CEV_SELECT_BALL

    CEV_STARLIGHT_MANIA = 42
    CEV_ETERNAL_BATTLE
    CEV_PANKU_MAN
    CEV_CHEST_SHOUGI
    CEV_AIR_HOCKEY
    CEV_ENNORYU
    CEV_RAINBOW_PUSHER
    CEV_JANKEN_CARD
    CEV_GRA_CATCHER
    CEV_BRIANS_WORKING
    CEV_STEEL_BRIAN
    CEV_HANTAS_STORY
    CEV_MAGATOKI_WESTERN
    CEV_SPIRIT_WATCH
    CEV_OPPAI_CARD
    CEV_CAT_LEG
    CEV_MAMMOTH_GAME
    CEV_NAWABARIA
    CEV_LOOP_HELL
    CEV_DRAGOPH
    CEV_JEWEL_TOWER
    CEV_KIMETU_NO_YAIBA
    CEV_AGUGA
    CEV_HIGHWAY_ALEX
    CEV_LICH_WAY
    CEV_GOMEZ_TOWER
    CEV_DEAD_GAMES
    CEV_STAFFROLL
    CEV_LIGHT_UP
    CEV_BUTOBAS
    CEV_FALCON_BOOSTER
}

//一時変数
def {
    TV_GET_TIMER_STRING = TV_CEV_4
    TV_SELECT_USING_BIT = TV_CEV_4
    TV_SET_SCROLL = TV_CEV_4

    TV_GET_REFLECTION = TV_CEV_4
    TV_CIRCLE_TO_CIRCLE = TV_CEV_4
    TV_CIRCLE_TO_SEGMENT = TV_CEV_4
    TV_CIRCLE_TO_ROTATING_SEGMENT = TV_CEV_4
    TV_POINT_TO_COLLMAP = TV_CEV_4

    TV_PB_ON_ENTER_MAP = TV_CEV_1
    TV_PB_ON_FRAME = TV_CEV_1
    TS_PB_ON_ENTER_FRAME = TS_CEV_1

    TV_PB_BALL_FUNC = TV_CEV_4
    TV_PB_BALL_REFLECTION = TV_CEV_3
    TV_PB_BALL_TO_AREA = TV_CEV_2
    TV_PB_FLIPPER_FUNC = TV_CEV_4

    TV_PB_UPDATE_BUMPER = TV_CEV_2
    TV_PB_UPDATE_FORCE = TV_CEV_2

    TV_PB_ADD_SCORE = TV_CEV_4
    TV_PB_DISPLAY = TV_CEV_4
    TS_PB_DISPLAY = TS_CEV_4
    TV_PB_GET_RANKING_STR = TV_CEV_3
    TS_PB_GET_RANKING_STR = TS_CEV_3

    TV_GAME_STORE = TV_CEV_3
    TS_STORE = TS_CEV_3
    TV_SELECT_BGM = TV_CEV_3
    TS_SELECT_BGM = TS_CEV_3
    TV_PLAY_ARCADE_BGM = TV_CEV_4
    TV_SELECT_CTRL_TYPE = TV_CEV_3
    TV_SELECT_BALL = TV_CEV_3

    TV_SHOW_ACHIEVEMENT = TV_CEV_4
    TS_SHOW_ACHIEVEMENT = TS_CEV_4
    TV_SET_ACHIEVEMENT = TV_CEV_4
    TS_SET_ACHIEVEMENT = TS_CEV_4
}

//メタ関数
//コモンイベントの実行と引数と返り値の受け渡しを記述する

//汎用
__fn getTimerString $a1 $a2 $a3 {
    sendArgmuentValue(TV_GET_TIMER_STRING, 3,
    $a1, $a2, $a3)
    callCommonEvent(CEV_GET_TIMER_STRING)
}

__fn selectUsingBit $r1 $a1 $a2 {
    sendArgmuentValue(TV_SELECT_USING_BIT, 2,
    $a1, $a2)
    callCommonEvent(CEV_SELECT_USING_BIT)
    receiveReturnValue(1,
    $r1)
}

__fn setScroll $a1 $a2 $a3 {
    sendArgmuentValue(TV_SET_SCROLL, 3,
    $a1, $a2, $a3)
    callCommonEvent(CEV_SET_SCROLL)
}


//衝突判定
__fn getReflection $r1 $r2 $r3  $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 {
    sendArgmuentValue(TV_GET_REFLECTION, 8,
    $a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8)
    callCommonEvent(CEV_GET_REFLECTION)
    receiveReturnValue(3,
    $r1, $r2, $r3)

}

__fn circleToCircle $r1 $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9  $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 $a10 $a11 $a12 {
    sendArgmuentValue(TV_CIRCLE_TO_CIRCLE, 12,
    $a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $a10, $a11, $a12)
    callCommonEvent(CEV_CIRCLE_TO_CIRCLE)
    receiveReturnValue(9,
    $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9)
}

__fn circleToSegment $r1 $r2 $r3 $r4 $r5 $r6 $r7  $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 $a10 {
    sendArgmuentValue(TV_CIRCLE_TO_SEGMENT, 10,
    $a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $a10)
    callCommonEvent(CEV_CIRCLE_TO_SEGMENT)
    receiveReturnValue(7,
    $r1, $r2, $r3, $r4, $r5, $r6, $r7)
}

__fn circleToRotatingSegment $r1 $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9  $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 $a10 $a11 $a12 $a13 {
    sendArgmuentValue(TV_CIRCLE_TO_ROTATING_SEGMENT, 13,
    $a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $a10, $a11, $a12, $a13)
    callCommonEvent(CEV_CIRCLE_TO_ROTATING_SEGMENT)
    receiveReturnValue(9,
    $r1, $r2, $r3, $r4, $r5, $r6, $r7, $r8, $r9)
}

__fn pointToCollmap $r1 $r2 $r3 $r4 $r5  $a1 $a2 $a3 $a4 $a5 $a6 $a7 {
    sendArgmuentValue(TV_POINT_TO_COLLMAP, 7,
    $a1, $a2, $a3, $a4, $a5, $a6, $a7)
    callCommonEvent(CEV_POINT_TO_COLLMAP)
    receiveReturnValue(5,
    $r1, $r2, $r3, $r4, $r5)
}

//ピンボール
__fn pbOnEnterMap {
    callCommonEvent(CEV_PB_ON_ENTER_MAP)
}

__fn pbOnFrame {
    callCommonEvent(CEV_PB_ON_FRAME)
}

__fn pbAddScore $a1 $a2 $a3 {
    sendArgmuentValue(TV_PB_ADD_SCORE, 3,
    $a1, $a2, $a3)
    callCommonEvent(CEV_PB_ADD_SCORE)
}

__fn pbDisplay $a1 $a2 {
    sendArgmuentValue(TV_PB_DISPLAY, 1,
    $a1)
    sendArgmuentString(TS_PB_DISPLAY, 1,
    $a2)
    callCommonEvent(CEV_PB_DISPLAY)
}

__fn pbGetRankingStr $a1 $a2 {
    sendArgmuentValue(TV_PB_GET_RANKING_STR, 2,
    $a1, $a2)
    callCommonEvent(CEV_PB_GET_RANKING_STR)
}

//ピンボールの仕掛け
__fn pbBallFunction $a1 $a2 $a3 $a4 $a5 $a6 {
    sendArgmuentValue(TV_PB_BALL_FUNC, 6,
    $a1, $a2, $a3, $a4, $a5, $a6)
    callCommonEvent(CEV_PB_BALL_FUNC)
}

__fn pbBallReflection $r1  $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 $a10 {
    sendArgmuentValue(TV_PB_BALL_REFLECTION, 10,
    $a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $a10)
    callCommonEvent(CEV_PB_BALL_REFLECTION)
    receiveReturnValue(1,
    $r1)
}

__fn pbBallToArea $r1 $r2  $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 {
    sendArgmuentValue(TV_PB_BALL_TO_AREA, 9,
    $a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9)
    callCommonEvent(CEV_PB_BALL_TO_AREA)
    receiveReturnValue(2,
    $r1, $r2)
}

__fn pbUpdateBumper $r1 $r2  $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 $a10 $a11 {
    sendArgmuentValue(TV_PB_UPDATE_BUMPER, 11,
    $a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $a10, $a11)
    callCommonEvent(CEV_PB_UPDATE_BUMPER)
    receiveReturnValue(2,
    $r1, $r2)
}

__fn pbUpdateForce $r1 $r2  $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 $a10 {
    sendArgmuentValue(TV_PB_UPDATE_BUMPER, 10,
    $a1, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $a10)
    callCommonEvent(CEV_PB_UPDATE_FORCE)
    receiveReturnValue(2,
    $r1, $r2)
}

__fn pbFlipperFunction $a1 $a2 $a3 $a4 $a5 $a6 {
    sendArgmuentValue(TV_PB_FLIPPER_FUNC, 6,
    $a1, $a2, $a3, $a4, $a5, $a6)
    callCommonEvent(CEV_PB_FLIPPER_FUNC)
}

//システム
__fn saveGame $r1 {
    callCommonEvent(CEV_SAVE_GAME)
    receiveReturnValue(1,
    $r1)
}

__fn deleteAllGameScore {
    callCommonEvent(CEV_DELETE_ALL_GAME_SCORE)
}

__fn startGameStore $r1 $r2 {
    callCommonEvent(CEV_GAME_STORE)
    receiveReturnValue(2,
    $r1, $r2)
}

__fn selectArcadeBGM bl {
    callCommonEvent(CEV_SELECT_ARCADE_BGM)
}

__fn playArcadeBGM $a1 bl {
    sendArgmuentValue(TV_PLAY_ARCADE_BGM, 1,
    $a1)
    callCommonEvent(CEV_PLAY_ARCADE_BGM)
}

__fn selectCtrlType bl {
    callCommonEvent(CEV_SELECT_CTRL_TYPE)
}

__fn selectBall bl {
    callCommonEvent(CEV_SELECT_BALL)
}

__fn showAchievement $r1 $r2 {
    callCommonEvent(CEV_SHOW_ACHIEVEMENT)
    receiveReturnValue(2,
    $r1, $r2)
}

__fn setAchievement $a1 {
    sendArgmuentValue(TV_SET_ACHIEVEMENT, 1,
    $a1)
    callCommonEvent(CEV_SET_ACHIEVEMENT)
}

//このゲームは結果を返す
__fn startEternalBattle $r1 $r2{
    callCommonEvent(CEV_ETERNAL_BATTLE)
    receiveReturnValue(2,
    $r1, $r2)
}
