SamsaraGame/assets/Script/panel/SettingPanel.js

257 lines
8.8 KiB
JavaScript
Raw Permalink Normal View History

2025-04-24 17:03:28 +08:00
import SKLocalUtil from "../ts/gear_2.3.4/util/SKLocalUtil";
import SKUIUtil from "../ts/gear_2.3.4/util/SKUIUtil";
import GameModel from "../ts/core/GameModel";
import AudioManager from "../ts/gear_2.3.4/manager/AudioManager";
import SKSocket from "../ts/gear_2.3.4/net/SKSocket";
import AudioUtil from "../ts/core/AudioUtil";
import FGAlert from "../ts/gear_2.3.4/fgui/FGAlert";
import FGUtil from "../ts/gear_2.3.4/fgui/FGUtil";
cc.Class({
extends: cc.Component,
properties: {
musicSlider: cc.Slider,
effectSlider: cc.Slider,
voiceSlider: cc.Slider,
musicProgress: cc.ProgressBar,
effectProgress: cc.ProgressBar,
voiceProgress: cc.ProgressBar,
allToggle: cc.Toggle,
musicToggle: cc.Toggle,
effectToggle: cc.Toggle,
voiceToggle: cc.Toggle,
otherHideToggle: cc.Toggle,
HdToggle: cc.Toggle,
viewPanel: cc.Node,
soundPanel: cc.Node,
gamePanel: cc.Node,
fightPanel: cc.Node,
headIcon: cc.Sprite,
nameLab: cc.Label,
numberLab: cc.Label,
addLoginOutTimeBtn: cc.Node,
subLoginOutTimeBtn: cc.Node,
saveLoginOutTimeBtn: cc.Node,
editLoginOutTimeBtn: cc.Node,
loginOutTime: 0,
loginOutTimeLabel: cc.Label,
},
onLoad() {
let allchecked = cc.sys.localStorage.getItem('setting_all_checked');
allchecked = allchecked == null ? false : allchecked;
let musichecked = cc.sys.localStorage.getItem('setting_music_checked');
musichecked = musichecked == null ? true : musichecked;
let effectchecked = cc.sys.localStorage.getItem('setting_effect_checked');
effectchecked = effectchecked == null ? true : effectchecked;
let voicechecked = cc.sys.localStorage.getItem('setting_voice_checked');
voicechecked = voicechecked == null ? true : voicechecked;
this.allToggle.isChecked = allchecked;
this.musicToggle.isChecked = musichecked;
this.effectToggle.isChecked = effectchecked;
this.voiceToggle.isChecked = voicechecked;
this.headIcon.spriteFrame = GameModel.getRoleHead(GameModel.player.resid);
this.nameLab.string = GameModel.player.name;
this.numberLab.string = '編號:' + GameModel.player.roleid;
this.currentPanel = this.soundPanel;
},
start() {
let mn = AudioManager.getMusicVolume();
let en = AudioManager.getEffectVolume();
let vn = AudioManager.getVoiceVolume();
this.musicSlider.progress = mn;
this.effectSlider.progress = en;
this.voiceSlider.progress = vn;
this.musicProgress.progress = mn;
this.effectProgress.progress = en;
this.voiceProgress.progress = vn;
let hd = cc.sys.localStorage.getItem('setting_hd');
this.HdToggle.isChecked = hd == 1;
this.otherHideToggle.isChecked = GameModel.hideNotTeam;
this.loginOutTime = parseInt(GameModel.player.offlinetime);
this.loginOutTimeLabel.string = this.loginOutTime;
},
onDestroy() {
cc.sys.localStorage.setItem('setting_all_checked', this.allToggle.isChecked);
cc.sys.localStorage.setItem('setting_music_checked', this.musicToggle.isChecked);
cc.sys.localStorage.setItem('setting_effect_checked', this.effectToggle.isChecked);
cc.sys.localStorage.setItem('setting_voice_checked', this.voiceToggle.isChecked);
},
onMenuClicked(e, d) {
switch (Number(d)) {
case 1:
this.currentPanel.active = false;
this.soundPanel.active = true;
this.currentPanel = this.soundPanel;
break;
case 2:
this.currentPanel.active = false;
this.viewPanel.active = true;
this.currentPanel = this.viewPanel;
break;
case 3:
this.currentPanel.active = false;
this.gamePanel.active = true;
this.currentPanel = this.gamePanel;
break;
}
},
onCloseClicked(e, d) {
AudioUtil.playCloseAudio();
this.node.destroy();
},
onSettingMusicBarCallback(slider, customEventData) {
AudioManager.setMusicVolume(slider.progress);
this.musicProgress.progress = slider.progress;
},
onSettingEffectBarCallback(slider, customEventData) {
AudioManager.setEffectVolume(slider.progress);
this.effectProgress.progress = slider.progress;
},
onSettingVoiceBarCallback(slider, customEventData) {
AudioManager.setVoiceVolume(slider.progress);
this.voiceProgress.progress = slider.progress;
},
//聲音面板
allToggleClicked(e, d) {
if (!this.allToggle.isChecked) {
this.allToggle.isChecked = true;
return;
}
this.musicToggle.isChecked = false;
this.effectToggle.isChecked = false;
this.voiceToggle.isChecked = false;
},
singleToggleClicked(e, d) {
if (this.musicToggle.isChecked == false && this.effectToggle.isChecked == false && this.voiceToggle.isChecked == false) {
this.allToggle.isChecked = true;
} else {
this.allToggle.isChecked = false;
}
},
//界面面板
onOtherHideClicked(e, d) {
SKLocalUtil.setBool(this.otherHideToggle.isChecked, "setting_hide_not_team");
GameModel.hideNotTeam = this.otherHideToggle.isChecked;
let logic = cc.find('Canvas').getComponent('GameLogic');
if (logic) {
logic.setAllPlayerActive();
}
},
onHDpicture(e, d) {
let hdflag = this.HdToggle.isChecked ? 1 : 0;
cc.sys.localStorage.setItem('setting_hd', hdflag);
if (this.HdToggle.isChecked) {
cc.Texture2D.defaultPixelFormat = cc.Texture2D.PIXEL_FORMAT_RGBA8888;
} else {
cc.Texture2D.defaultPixelFormat = cc.Texture2D.PIXEL_FORMAT_RGBA4444;
}
},
onLogoutBtnClicked(e, d) {
FGUtil.dispose(this.main);
console.log("GameModel.player.offlinetime = ", GameModel.player.offlinetime)
this.main = FGUtil.create("main_ui", "login_out");
let alert = FGUtil.getComponent(this.main, "alert");
let setBtn = FGUtil.getButton(alert, "cancel_btn");
let sureBtn = FGUtil.getButton(alert, "sure_btn")
let msg = "您的帳號將[color=#ff0000]立即下線[/color],確認登出當前賬號?";
if (GameModel.player.offlinetime != 0) {
msg = `您的帳號當前設置離線時間為[color=#ff0000]${GameModel.player.offlinetime}小時[/color]\n點擊按鈕[color=#ff0000]立即退出[/color]將離線保護[color=#ff0000]${GameModel.player.offlinetime}小時[/color],確認登出當前賬號? `
}
FGUtil.getTextField(alert, "title").text = msg;
FGUtil.root().addChild(this.main);
FGUtil.fitScreen(this.main);
sureBtn.clearClick()
sureBtn.onClick(() => {
SKSocket.disconnectBlock = null;
SKSocket.close();
SKUIUtil.loadScene("LoginScene", null, (sceneName) => {
GameModel.currentScene = sceneName;
});
})
setBtn.clearClick()
setBtn.onClick(() => {
this.onMenuClicked(null, 3)
cc.find("SettingNode/btn_group/toggle_game", this.node).getComponent(cc.Toggle).isChecked = true
FGUtil.dispose(this.main);
this.main = null
})
},
/*
* 選擇toggle頁
*/
onChooseToggle(event, param) {
console.log('onChooseToggle', param);
let setting_node = cc.find('SettingNode', this.node);
let safe_node = cc.find('SafeNode', this.node);
setting_node.active = param == 'setting';
safe_node.active = param == 'safe';
if (param == 'safe') {
safe_node.getComponent('SafeNode').init();
}
},
addLoginOutTime() {
if (this.loginOutTime >= 12) return;
this.loginOutTime++;
this.loginOutTimeLabel.string = this.loginOutTime;
},
subLoginOutTime() {
if (this.loginOutTime <= 0) return;
this.loginOutTime--;
this.loginOutTimeLabel.string = this.loginOutTime;
},
editLoginOutTime() {
this.addLoginOutTimeBtn.active = true
this.subLoginOutTimeBtn.active = true
this.saveLoginOutTimeBtn.active = true
this.editLoginOutTimeBtn.active = false
},
saveLoginOutTime() {
this.addLoginOutTimeBtn.active = false
this.subLoginOutTimeBtn.active = false
this.saveLoginOutTimeBtn.active = false
this.editLoginOutTimeBtn.active = true
GameModel.player.offlinetime = this.loginOutTime;
GameModel.send("c2s_set_offlinetime", {
roleid: GameModel.player.roleid,
offtime: this.loginOutTime
})
}
});