UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 1.87 kB
import*as Common from"../../core/common/common.js";import*as i18n from"../../core/i18n/i18n.js";import*as SDK from"../../core/sdk/sdk.js";import{ThrottlingPresets}from"./ThrottlingPresets.js";const UIStrings={disabled:"Disabled",presets:"Presets",custom:"Custom"},str_=i18n.i18n.registerUIStrings("panels/mobile_throttling/NetworkThrottlingSelector.ts",UIStrings),i18nString=i18n.i18n.getLocalizedString.bind(void 0,str_);export class NetworkThrottlingSelector{populateCallback;selectCallback;customNetworkConditionsSetting;options;constructor(t,e,o){this.populateCallback=t,this.selectCallback=e,this.customNetworkConditionsSetting=o,this.customNetworkConditionsSetting.addChangeListener(this.populateOptions,this),SDK.NetworkManager.MultitargetNetworkManager.instance().addEventListener(SDK.NetworkManager.MultitargetNetworkManager.Events.ConditionsChanged,(()=>{this.networkConditionsChanged()}),this),this.populateOptions()}revealAndUpdate(){Common.Revealer.reveal(this.customNetworkConditionsSetting),this.networkConditionsChanged()}optionSelected(t){SDK.NetworkManager.MultitargetNetworkManager.instance().setNetworkConditions(t)}populateOptions(){const t={title:i18nString(UIStrings.disabled),items:[SDK.NetworkManager.NoThrottlingConditions]},e={title:i18nString(UIStrings.presets),items:ThrottlingPresets.networkPresets},o={title:i18nString(UIStrings.custom),items:this.customNetworkConditionsSetting.get()};if(this.options=this.populateCallback([t,e,o]),!this.networkConditionsChanged())for(let t=this.options.length-1;t>=0;t--)if(this.options[t]){this.optionSelected(this.options[t]);break}}networkConditionsChanged(){const t=SDK.NetworkManager.MultitargetNetworkManager.instance().networkConditions();for(let e=0;e<this.options.length;++e){const o=this.options[e];if(o&&SDK.NetworkManager.networkConditionsEqual(t,o))return this.selectCallback(e),!0}return!1}}