// GUI Draws
// document.body element & css management
// Written by Kevin Edzenga; 2020, 2024
// -- -- -- -- -- --
import { GUIManager } from './GUIBase.js';
import { ShaderEditor } from './ShaderEditor.js';
/*import { HelpGui } from './pxlGui/HelpGui.js';
import { InfoGui } from './pxlGui/InfoGui.js';
import { SettingsGui } from './pxlGui/SettingsGui.js';*/
/**
* @namespace pxlGuiDraws
* @description GUI drawing and management
*/
export class GUI extends GUIManager{
constructor(verbose, projectTitle="Metal-Asylum", assetRoot="images/assets/", guiRoot="images/GUI/" ){
super(verbose, projectTitle, assetRoot, guiRoot );
this.verbose = verbose;
// Dynamic Styles
this.lableBoxSize = 40; // Device Label Box Size
this.optionWidthRound = 10;
this.optionWidthAdd = 25;
this.deviceOptionHeight = [0, 300]; // Device Option List Max-Height's
this.ShaderEditor = null;
// TODO : This is the loadable stage count
// Load js, load room, run room boot, await room environment load/setup, and run post-boot code.
// This should be a registration system, not hard coded
// As it would be better for loading status for multi-room systems
// Loader stages added to a promise/stage list during pre-boot, update max stage count here
this.pxlLoaderTotal = 5;
this.hudVisibility=true;
this.camChoicesActive=false;
//this.camChoicePrevObj=null;
this.micChoicesActive=false;
//this.micChoicePrevObj=null;
// TODO : Move to function to prep dictionary for div lookup
this.textDescriptions={
chatIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">C</span> )</span><br>chat', 'pos':[1,-1.5]},
multiverseIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">U</span> )</span><br>multiverse<br>selection', 'pos':[0,-1.3]},
djPlayerVolumeParent:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">B</span> )</span><br>music volume', 'pos':[0,-1.5]},
speakerIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">N</span> )</span><br>mute people<br>pick audio output', 'pos':[0,-1.5]},
micIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">M</span> )</span><br>mute/pick<br>mic input', 'pos':[0,-1.5]},
camIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">V</span> )</span><br>enable/pick<br>video input', 'pos':[0,-1.5]},
helpIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">?</span> )</span><br>help &<br>instructions', 'pos':[0,-1.5]},
infoIconParent:{'text':'Info <span class="helpHotKeyParent">( <span class="helpHotKey">I</span> )</span>', 'pos':[-1,0], 'offset':[-10,0]},
settingsIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">G</span> )</span><br>graphics &<br>navigation', 'pos':[0,-1.5]},
muteAllIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">N</span> )</span><br>mute all users', 'pos':[1,0]},
fullScreenIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">F</span> )</span><br>toggle full screen', 'pos':[-1,0]},
videoQualityIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">H</span> )</span><br>video quality settings', 'pos':[-1,0]},
//%=
statsIcon:{'text':'jitsi connection status; toggle connection ', 'pos':[1,0]},
//%
//&=
usersIcon:{'text':'<span class="helpHotKeyParent">( <span class="helpHotKey">T</span> )</span> user moderator tools', 'pos':[1,0]},
//&
ft2Button:{'text':'Environment', 'pos':[-1,0], 'offset':[-10,0]},
ft3Button:{'text':'Invite Friends', 'pos':[-1,0], 'offset':[-10,0]},
hud_userCount:{'text':'# of People', 'pos':[-1,0], 'offset':[-10,0]},
};
this.activeItem=null;
this.actionPopUp=null;
this.init();
}
setDependencies( pxlNav ){
super.setDependencies( pxlNav );
this.ShaderEditor = new ShaderEditor( pxlNav, this );
}
// Runs
init(){
super.init();
}
// Runs post pxlNav load & boot
// All files have been requested & document elements prepped
booted(){
super.booted();
}
step(){
super.step();
}
toggleShaderEditor(){
this.ShaderEditor.toggleShaderEditor();
}
resize( e ){
super.resize();
if( this.ShaderEditor ){
this.ShaderEditor.resize( e );
}
}
/////////////////////////////////////////////
// -- -- -- -- -- -- -- -- -- -- -- -- -- //
///////////////////////////////////////////
}