add animation tool menu and context menu item
This commit is contained in:
parent
7d4fd3dd1d
commit
f2a8946e3f
5 changed files with 63 additions and 2 deletions
|
@ -432,4 +432,8 @@ export class Agent {
|
||||||
if (remove) this.remove();
|
if (remove) this.remove();
|
||||||
else this.cnv.style.display = 'none';
|
else this.cnv.style.display = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
listAnimations() {
|
||||||
|
return this.data.animInfo.map((n) => n.name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -268,3 +268,15 @@ html {
|
||||||
button {
|
button {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#animWindow {
|
||||||
|
#animSelectContainer {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
#animPlayBtn {
|
||||||
|
align-self: flex-end;
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -120,7 +120,21 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="window" id="animWindow">
|
||||||
|
<div class="title-bar">
|
||||||
|
<div class="title-bar-text">Animations</div>
|
||||||
|
<div class="title-bar-controls">
|
||||||
|
<button aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="window-body">
|
||||||
|
<label for="animSelect">Animation:</label><br>
|
||||||
|
<div id="animSelectContainer">
|
||||||
|
<select id="animSelect"></select>
|
||||||
|
<button id="animPlayBtn">Play</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div id="chatBar">
|
<div id="chatBar">
|
||||||
<input type="text" id="chatInput" placeholder="Send a message" />
|
<input type="text" id="chatInput" placeholder="Send a message" />
|
||||||
<button id="imageUploadBtn">Image</button>
|
<button id="imageUploadBtn">Image</button>
|
||||||
|
|
|
@ -32,6 +32,7 @@ export interface MSAgentClientEvents {
|
||||||
adduser: (user: User) => void;
|
adduser: (user: User) => void;
|
||||||
remuser: (user: User) => void;
|
remuser: (user: User) => void;
|
||||||
chat: (user: User, msg: string) => void;
|
chat: (user: User, msg: string) => void;
|
||||||
|
animwindow: (animations: string[]) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface APIAgentInfo {
|
export interface APIAgentInfo {
|
||||||
|
@ -218,6 +219,13 @@ export class MSAgentClient {
|
||||||
setContextMenu(user: User) {
|
setContextMenu(user: User) {
|
||||||
let ctx = user.agent.getContextMenu();
|
let ctx = user.agent.getContextMenu();
|
||||||
ctx.clearItems();
|
ctx.clearItems();
|
||||||
|
// Animations
|
||||||
|
if (user.username === this.username) {
|
||||||
|
let anims = new ContextMenuItem('Animations', () => {
|
||||||
|
this.events.emit('animwindow', user.agent.listAnimations());
|
||||||
|
});
|
||||||
|
ctx.addItem(anims);
|
||||||
|
}
|
||||||
// Mute
|
// Mute
|
||||||
let _user = user;
|
let _user = user;
|
||||||
let mute = new ContextMenuItem('Mute', () => {
|
let mute = new ContextMenuItem('Mute', () => {
|
||||||
|
|
|
@ -21,7 +21,10 @@ const elements = {
|
||||||
imageUploadBtn: document.getElementById('imageUploadBtn') as HTMLButtonElement,
|
imageUploadBtn: document.getElementById('imageUploadBtn') as HTMLButtonElement,
|
||||||
chatSendBtn: document.getElementById('chatSendBtn') as HTMLButtonElement,
|
chatSendBtn: document.getElementById('chatSendBtn') as HTMLButtonElement,
|
||||||
|
|
||||||
roomSettingsWindow: document.getElementById('roomSettingsWindow') as HTMLDivElement
|
roomSettingsWindow: document.getElementById('roomSettingsWindow') as HTMLDivElement,
|
||||||
|
animWindow: document.getElementById('animWindow') as HTMLDivElement,
|
||||||
|
animSelect: document.getElementById('animSelect') as HTMLSelectElement,
|
||||||
|
animPlayBtn: document.getElementById('animPlayBtn') as HTMLButtonElement,
|
||||||
};
|
};
|
||||||
|
|
||||||
let Room: MSAgentClient;
|
let Room: MSAgentClient;
|
||||||
|
@ -39,6 +42,16 @@ function roomInit() {
|
||||||
elements.logonView.style.display = 'block';
|
elements.logonView.style.display = 'block';
|
||||||
elements.chatView.style.display = 'none';
|
elements.chatView.style.display = 'none';
|
||||||
});
|
});
|
||||||
|
Room.on('animwindow', (animations) => {
|
||||||
|
elements.animSelect.innerHTML = '';
|
||||||
|
for (let anim of animations) {
|
||||||
|
let option = document.createElement('option');
|
||||||
|
option.innerText = anim;
|
||||||
|
option.value = anim;
|
||||||
|
elements.animSelect.appendChild(option);
|
||||||
|
}
|
||||||
|
animWindow.show();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let motdWindow = new MSWindow(elements.motdWindow, {
|
let motdWindow = new MSWindow(elements.motdWindow, {
|
||||||
|
@ -57,6 +70,16 @@ let roomSettingsWindow = new MSWindow(elements.roomSettingsWindow, {
|
||||||
startPosition: MSWindowStartPosition.Center
|
startPosition: MSWindowStartPosition.Center
|
||||||
});
|
});
|
||||||
|
|
||||||
|
let animWindow = new MSWindow(elements.animWindow, {
|
||||||
|
minWidth: 200,
|
||||||
|
minHeight: 90,
|
||||||
|
startPosition: MSWindowStartPosition.Center
|
||||||
|
});
|
||||||
|
|
||||||
|
elements.animPlayBtn.addEventListener('click', () => {
|
||||||
|
Room?.animation(elements.animSelect.value);
|
||||||
|
});
|
||||||
|
|
||||||
logonWindow.show();
|
logonWindow.show();
|
||||||
// roomSettingsWindow.show();
|
// roomSettingsWindow.show();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue