import React, {Component, PureComponent} from 'react'; import './Config.css'; const BUILTIN_IMGS={ 'static/bg/gbp.jpg': '寻觅繁星(默认)', 'static/bg/eriri.jpg': '平成著名画师', 'static/bg/yurucamp.jpg': '露营天下第一', 'static/bg/minecraft.jpg': '麦恩·库拉夫特', 'static/bg/sif.jpg': '梦开始的地方', }; const DEFAULT_CONFIG={ background_img: 'static/bg/gbp.jpg', background_color: '#113366', pressure: false, easter_egg: true, color_scheme: 'default', }; export function load_config() { let config=Object.assign({},DEFAULT_CONFIG); let loaded_config; try { loaded_config=JSON.parse(localStorage['hole_config']||'{}'); } catch(e) { alert('设置加载失败,将重置为默认设置!\n'+e); delete localStorage['hole_config']; loaded_config={}; } // unrecognized configs are removed Object.keys(loaded_config).forEach((key)=>{ if(config[key]!==undefined) config[key]=loaded_config[key]; }); console.log('config loaded',config); window.config=config; } export function save_config() { localStorage['hole_config']=JSON.stringify(window.config); load_config(); } export function bgimg_style(img,color) { if(img===undefined) img=window.config.background_img; if(color===undefined) color=window.config.background_color; return { background: 'transparent center center', backgroundImage: img===null ? 'unset' : 'url("'+encodeURI(img)+'")', backgroundColor: color, backgroundSize: 'cover', }; } class ConfigBackground extends PureComponent { constructor(props) { super(props); this.state={ img: window.config.background_img, color: window.config.background_color, }; } save_changes() { this.props.callback({ background_img: this.state.img, background_color: this.state.color, }); } on_select(e) { let value=e.target.value; this.setState({ img: value==='##other' ? '' : value==='##color' ? null : value, },this.save_changes.bind(this)); } on_change_img(e) { this.setState({ img: e.target.value, },this.save_changes.bind(this)); } on_change_color(e) { this.setState({ color: e.target.value, },this.save_changes.bind(this)); } render() { let img_select= this.state.img===null ? '##color' : Object.keys(BUILTIN_IMGS).indexOf(this.state.img)===-1 ? '##other' : this.state.img; return (
背景图片: {img_select==='##other' && } {img_select==='##color' && }
夜间模式: #color_scheme
选择浅色或深色模式,深色模式下将会调暗图片亮度
{this.props.description}
这些功能仍在测试,可能不稳定(全部重置)
修改设置后 {window.location.reload()}}>刷新页面 方可生效