import { Slider, UITransform, profiler } from "cc";
import { tgxAudioMgr, tgxUIController, tgx_class } from "../../core_tgx/tgx";
import { GameUILayers } from "../../scripts/GameUILayers";
import { UserLocalCache } from "../../module_basic/scripts/UserLocalCache";
import { Layout_UISettings } from "./Layout_UISettings";
import { ModuleDef } from "../../scripts/ModuleDef";
import { EMusicDefine } from "../../module_basic/scripts/MusicDefine";

@tgx_class(ModuleDef.Arean)
export class UISettings extends tgxUIController {
    constructor() {
        super("ui_settings/ui_settings", GameUILayers.POPUP, Layout_UISettings);
    }

    protected onCreated(): void {
        let layout = this.layout as Layout_UISettings;

        layout.sliderMusic.progress = UserLocalCache.inst.musicVolume;
        layout.sliderSound.progress = UserLocalCache.inst.soundVolume;
        layout.sliderDiMusic.getComponent(UITransform).width = layout.sliderMusic.progress / 1 * 290;
        layout.sliderDiSound.getComponent(UITransform).width = layout.sliderSound.progress / 1 * 290;

        this.onButtonEvent(layout.btnClose, () => {
            tgxAudioMgr.inst.playCommonBtn(EMusicDefine.EFFECT_CLOSE);
            this.close();
        });

        this.onSlideEvent(layout.sliderMusic, () => {
            tgxAudioMgr.inst.musicVolume = UserLocalCache.inst.musicVolume = layout.sliderMusic.progress;

            layout.sliderDiMusic.getComponent(UITransform).width = layout.sliderMusic.progress / 1 * 290;
        });

        this.onSlideEvent(layout.sliderSound, () => {
            tgxAudioMgr.inst.soundVolume = UserLocalCache.inst.soundVolume = layout.sliderSound.progress;
            layout.sliderDiSound.getComponent(UITransform).width = layout.sliderSound.progress / 1 * 290;
        });

        layout.chkFPS.isChecked = profiler.isShowingStats();
        this.onToggleEvent(layout.chkFPS, () => {
            if (layout.chkFPS.isChecked) {
                profiler.showStats();
            }
            else {
                profiler.hideStats();
            }
        });
    }
}