package emu.grasscutter.server.packet.send;

import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.AllWidgetDataNotifyOuterClass.AllWidgetDataNotify;
import emu.grasscutter.net.proto.LunchBoxDataOuterClass;
import emu.grasscutter.net.proto.WidgetSlotDataOuterClass;
import emu.grasscutter.net.proto.WidgetSlotTagOuterClass;

import java.util.List;
import java.util.Map;

public class PacketAllWidgetDataNotify extends BasePacket {

    public PacketAllWidgetDataNotify(Player player) {
        super(PacketOpcodes.AllWidgetDataNotify);

        // TODO: Implement this

        AllWidgetDataNotify.Builder proto = AllWidgetDataNotify.newBuilder()
                // If you want to implement this, feel free to do so. :)
                .setLunchBoxData(
                        LunchBoxDataOuterClass.LunchBoxData.newBuilder().build()
                )
                // Maybe it's a little difficult, or it makes you upset :(
                .addAllOneoffGatherPointDetectorDataList(List.of())
                // So, goodbye, and hopefully sometime in the future o(*￣▽￣*)ブ
                .addAllCoolDownGroupDataList(List.of())
                // I'll see your PR with a title that says (・∀・(・∀・(・∀・*)
                .addAllAnchorPointList(List.of())
                // "Complete implementation of widget functionality" b（￣▽￣）d　
                .addAllClientCollectorDataList(List.of())
                // Good luck, my boy.
                .addAllNormalCoolDownDataList(List.of());

        if (player.getWidgetId() == null) {
            proto.addAllSlotList(List.of());
        } else {
            proto.addSlotList(
                    WidgetSlotDataOuterClass.WidgetSlotData.newBuilder()
                            .setIsActive(true)
                            .setMaterialId(player.getWidgetId())
                            .build()
            );

            proto.addSlotList(
                    WidgetSlotDataOuterClass.WidgetSlotData.newBuilder()
                            .setTag(WidgetSlotTagOuterClass.WidgetSlotTag.WIDGET_SLOT_TAG_ATTACH_AVATAR)
                            .build()
            );
        }

        AllWidgetDataNotify protoData = proto.build();

        this.setData(protoData);
    }
}

