include(Resources.id("jsblock:scripts/pids_util.js"));

const HEADER_HEIGHT = 13;


function create(ctx, state, pids) {
}



function render(ctx, state, pids) {


    Texture.create("Background")
        .texture("jsblock:textures/block/pids/pids_ccl_new_bg.png")
        .size(pids.width, pids.height)
        .draw(ctx);



    // ─── Top Bar ───

    let arrivalsWrapper = pids.arrivals();

    let hasPlatform =
        arrivalsWrapper != null &&
        arrivalsWrapper.platforms().size() > 0;



    if (!hasPlatform) {

        Text.create("PlatformClosed")
            .text("Platform Closed")
            .color(0xFFFF00)
            .pos(pids.width - 5, 2)
            .scale(0.9)
            .rightAlign()
            .draw(ctx);

        return;
    }




    let firstArrival = arrivalsWrapper.get(0);

    let seconds = 999;


    if(firstArrival != null){

        seconds = Math.floor(
            (firstArrival.arrivalTime() - Date.now()) / 1000
        );

    }






    // ─── Clock ───

    Text.create("Clock")
        .text(PIDSUtil.formatTime(MinecraftClient.worldDayTime(), true))
        .color(0xFFFFFF)
        .pos(pids.width - 5, 2)
        .scale(0.9)
        .rightAlign()
        .draw(ctx);






    // =====================================================
    // APPROACHING PAGE
    // >10 SEC
    // =====================================================


    if(seconds > 10){

    for(let i = 0; i < 2; i++){

        let arrival = arrivalsWrapper.get(i);

        if(arrival == null || pids.isRowHidden(i))
            continue;

        let rowY = 25 + (i * 30);



        // MRT Caplet Fill
        Texture.create("Approaching Caplet Fill")
            .texture("jsblock:textures/block/pids/ccl_new_misc/mrt_caplet.png")
            .pos(8,rowY)
            .size(30,14)
            .color(arrival.routeColor())
            .draw(ctx);



        // MRT Caplet Outline
        Texture.create("Approaching Caplet Outline")
            .texture("jsblock:textures/block/pids/ccl_new_misc/mrt_caplet_outline.png")
            .pos(8,rowY)
            .size(30,14)
            .draw(ctx);




        Text.create("Approaching Platform")
            .text(arrival.platformName())
            .pos(23,rowY+3)
            .size(9,9)
            .scaleXY()
            .centerAlign()
            .color(0xFFFFFF)
            .draw(ctx);




        let eta = Math.ceil(
            (arrival.arrivalTime() - Date.now()) / 60000
        );



        Text.create("Approaching ETA")
            .text(
                eta <= 0 ? "ARR" : String(eta)
            )
            .pos(pids.width - 8,rowY + 2)
            .rightAlign()
            .scale(1.15)
            .color(0xFFFFFF)
            .draw(ctx);




        Text.create("Approaching Destination")
            .text(TextUtil.cycleString(arrival.destination()))
            .pos(8,rowY + 16)
            .size(pids.width - 40,8)
            .scaleXY()
            .color(0xFFFFFF)
            .draw(ctx);




        if(eta > 1){

            Text.create("Approaching ETA Unit")
                .text("mins")
                .pos(pids.width - 8,rowY + 16)
                .rightAlign()
                .scale(0.85)
                .color(0xFFFFFF)
                .draw(ctx);


        } else if(eta == 1){

            Text.create("Approaching ETA Unit")
                .text("min")
                .pos(pids.width - 8,rowY + 16)
                .rightAlign()
                .scale(0.85)
                .color(0xFFFFFF)
                .draw(ctx);

        }




        if(i == 0){

            Texture.create("Divider Line")
                .texture("minecraft:textures/block/white_concrete.png")
                .pos(5,rowY + 25)
                .size(pids.width - 10,0.5)
                .draw(ctx);

        }

    }

    return;

}






    // =====================================================
    // ORIGINAL PAGE
    // <=10 SEC
    // =====================================================



    Texture.create("Direction Icon")
        .texture("jsblock:textures/block/pids/ccl_new_misc/direction_cw.png")
        .pos(pids.width / 2 - 20, 10)
        .size(40, 36)
        .draw(ctx);






    let platformName =
        arrivalsWrapper.platforms().get(0).getName();





    let START_ROW = 2;
    let MAX_ROWS = pids.rows - 1;



    for(let i = 0; i < MAX_ROWS; i++){



        if(i >= 2) continue;



        let rowY =
            HEADER_HEIGHT + ((i + START_ROW) * 16.75);



        let customMsg = pids.getCustomMessage(i);

        let arrival = arrivalsWrapper.get(i);



        if((arrival == null || pids.isRowHidden(i))
            && customMsg === "")
            continue;






        if(customMsg != "") {



            Text.create(TextUtil.cycleString("Custom Text"))
                .text(customMsg)
                .scale(1.25)
                .size(pids.width - 10,9)
                .scaleXY()
                .pos(20,rowY)
                .scale(i===0 ? 1.25 : 1.1)
                .color(i===0 ? 0xFFFF00 : 0xFFFFFF)
                .draw(ctx);




        } else {




            let destX = 5;





            if(!pids.isPlatformNumberHidden()){



                // MRT Caplet Fill
                Texture.create("Platform Caplet Fill")
                    .texture("jsblock:textures/block/pids/ccl_new_misc/mrt_caplet.png")
                    .pos(5,rowY-1)
                    .size(20,10)
                    .color(arrival.routeColor())
                    .draw(ctx);



                // MRT Caplet Outline
                Texture.create("Platform Caplet Outline")
                    .texture("jsblock:textures/block/pids/ccl_new_misc/mrt_caplet_outline.png")
                    .pos(5,rowY-1)
                    .size(20,10)
                    .draw(ctx);





                Text.create("Platform Caplet Text")
                    .text(arrival.platformName())
                    .pos(15,rowY+1)
                    .size(9,9)
                    .scaleXY()
                    .scale(0.9)
                    .centerAlign()
                    .color(0xFFFFFF)
                    .draw(ctx);




                destX = 25;

            }







            Text.create("Arrival Destination")
                .text(TextUtil.cycleString(arrival.destination()))
                .pos(destX,rowY)
                .size(i===0?60:50,i===0?9:8)
                .scaleXY()
                .scale(i===0?1.25:1.1)
                .color(i===0?0xFFFF00:0xFFFFFF)
                .draw(ctx);






            Text.create("ETA Text")
                .text(
                    TextUtil.getNonCjkParts(
                        PIDSUtil.getETAText(arrival.arrivalTime())
                    )
                )
                .scale(1.25)
                .size(25,8)
                .scaleXY()
                .rightAlign()
                .pos(pids.width-8,rowY)
                .color(0xFFFFFF)
                .draw(ctx);

        }

    }

}




function dispose(ctx, state, pids) {
}