/*
 *  Copyright 2025-2026 R3944Realms
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

package top.r3944realms.eroticdungeongame.core.register;

import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import top.r3944realms.eroticdungeongame.EroticDungeon;

public class EDGSoundEvents {
    public static final DeferredRegister<SoundEvent> SOUND_EVENTS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS, EroticDungeon.MOD_ID);
    public static final ResourceLocation RL_LOCKING = EroticDungeon.rl("lock/lock");
    public static final ResourceLocation RL_UNLOCKING = EroticDungeon.rl("lock/unlock");
    public static final ResourceLocation RL_IN = EroticDungeon.rl("piston/in");
    public static final ResourceLocation RL_OUT = EroticDungeon.rl("piston/out");
    public static final ResourceLocation RL_WHIP = EroticDungeon.rl("whip");

    public static final RegistryObject<SoundEvent> LOCKING = registerSound("lock");
    public static final RegistryObject<SoundEvent> UNLOCKING = registerSound("unlock");
    public static final RegistryObject<SoundEvent> WHIP = registerSound("whip");
    public static final RegistryObject<SoundEvent> IN = registerSound("in");
    public static final RegistryObject<SoundEvent> OUT = registerSound("out");

    private static RegistryObject<SoundEvent> registerSound(String name) {
        ResourceLocation location = EroticDungeon.rl(name);
        return SOUND_EVENTS.register(name, () -> SoundEvent.createVariableRangeEvent(location));
    }
    public static void register(IEventBus bus) {
        SOUND_EVENTS.register(bus);
    }
    public static String getSubTitleTranslateKey(String name) {
        return "sound." + EroticDungeon.MOD_ID + ".subtitle." + name;
    }
}
