Skip to content
Snippets Groups Projects
Commit 097ec510 authored by Pregmodder's avatar Pregmodder
Browse files

Merge branch 'compress-actor-selection' into 'pregmod-master'

Manual event select tweaks

See merge request pregmodfan/fc-pregmod!9579
parents 944ce3b1 6b25b905
No related branches found
No related tags found
1 merge request!9579Manual event select tweaks
Pipeline #39909 passed
......@@ -5,6 +5,7 @@ App.Events.debugEvent = function(eventName) {
const frag = document.createDocumentFragment();
/** @type {App.Events.BaseEvent} */
const event = eval(`new ${eventName}`);
let displayOnlyValid = false;
function makeCastList() {
const cast = document.createDocumentFragment();
......@@ -14,7 +15,6 @@ App.Events.debugEvent = function(eventName) {
if (!event.actors[i]) {
missingCast = true;
}
App.UI.DOM.appendNewElement("div", cast, `Actor ${i}: ${event.actors[i] ? SlaveFullName(getSlave(event.actors[i])) : 'not yet cast'}`);
}
if (!missingCast) {
App.UI.DOM.appendNewElement("div", cast, App.UI.DOM.link('Run event now', (evt) => { V.event = evt; }, [event], "JS Random Event"));
......@@ -27,12 +27,13 @@ App.Events.debugEvent = function(eventName) {
function makeActorList() {
const actors = document.createDocumentFragment();
const actorReqs = event.actorPrerequisites();
if (actorReqs.length === 1) {
actors.append(singleActorList(0));
} else {
const tabBar = new App.UI.Tabs.TabBar("Options");
for (let i = 0; i < actorReqs.length; ++i) {
tabBar.addTab(`Actor ${i}`, `actor${i}`, singleActorList(i));
tabBar.addTab(`Actor ${i}: ${event.actors[i] ? SlaveFullName(getSlave(event.actors[i])) : 'not yet cast'}`, `actor${i}`, singleActorList(i));
}
actors.append(tabBar.render());
}
......@@ -41,18 +42,40 @@ App.Events.debugEvent = function(eventName) {
function singleActorList(i) {
let tab = App.UI.DOM.makeElement("div");
if (!displayOnlyValid) {
App.UI.DOM.appendNewElement("div", tab, App.UI.DOM.link(
"Show only valid slaves",
() => {
displayOnlyValid = true;
$('#actorList').empty().append(makeActorList());
}
));
} else {
App.UI.DOM.appendNewElement("div", tab, App.UI.DOM.link(
"Show all slaves",
() => {
displayOnlyValid = false;
$('#actorList').empty().append(makeActorList());
}
));
}
for (const slave of V.slaves) {
let slaveDiv = App.UI.DOM.appendNewElement("div", tab, App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"));
let slaveDiv = App.UI.DOM.makeElement("div", App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"));
let slaveFails = false;
for (const p of actorReqs[i]) {
let passed = testPredicate(slaveDiv, p, slave);
slaveFails = slaveFails || !passed;
App.UI.DOM.appendNewElement("div", slaveDiv, p.name || p.toString(), [passed ? "green" : "red", "indent"]);
}
if (!slaveFails) {
if (event.actors.includes(slave.ID)) {
App.UI.DOM.appendNewElement("div", slaveDiv, App.UI.DOM.link("Remove this slave", removeCasted, [slave]), "indent");
} else if (!slaveFails) {
App.UI.DOM.appendNewElement("div", slaveDiv, App.UI.DOM.link("Choose this slave", castSlave, [slave, i]), "indent");
} else if (displayOnlyValid) { // Filter out slaves that are not valid
continue;
}
App.UI.DOM.appendNewElement("hr", tab);
tab.append(slaveDiv);
}
return tab;
}
......@@ -64,6 +87,12 @@ App.Events.debugEvent = function(eventName) {
$('#actorList').empty().append(makeActorList());
}
function removeCasted(slave) {
event.actors.delete(slave.ID);
$('#castList').empty().append(makeCastList());
$('#actorList').empty().append(makeActorList());
}
function testPredicate(outDiv, p, ...args) {
let passed = false;
try {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment