Film it again no longer forces; an unchanged picture or clip is not bought twice, and another attempt is its own priced button

This commit is contained in:
gator 2026-09-19 18:43:16 +00:00
parent 320e06b0c9
commit 5a54104005

View file

@ -1234,6 +1234,14 @@
+ faultsHtml(s)
+ filmNoteHtml(s)
+ '<div class="tools">' + tools + '</div>'
+ (s.draw_unchanged && !s.drawing ? '<p class="cont">Nothing about these pictures has changed since they '
+ 'were drawn, so they were not drawn again and nothing was charged. '
+ '<button type="button" class="btn" data-drawanyway="' + esc(s.id)
+ '">Draw another attempt anyway &middot; $0.14</button></p>' : '')
+ (s.film_unchanged && !s.filming ? '<p class="cont">Nothing that reaches the camera has changed since '
+ 'the last take - same pictures, same words, same voices - so it was not filmed again and nothing '
+ 'was charged. <button type="button" class="btn" data-filmanyway="' + esc(s.id)
+ '">Film another take anyway &middot; $0.75</button></p>' : '')
+ '<textarea class="note" rows="2" data-note="' + esc(s.id) + '" '
+ 'placeholder="Your note on this shot, for the next full revision.">'
+ esc(NOTES[s.id] || "") + '</textarea>'
@ -1276,17 +1284,29 @@
}
if ((el = hit("data-filmone"))) {
el.disabled = true;
// "Film it again" means ANOTHER TAKE. Without `force` the worker sees an
// unchanged request, correctly notes it would send identical bytes, and
// does nothing - so the button an author presses to get a better take
// gave them the same one and no explanation.
// NEVER force from here. If nothing that reaches the video model has
// changed, the worker films nothing, charges nothing and says so; the
// author can then ask for another take with the button that says what
// it costs. Forcing on every press made a slip of the finger cost $0.75.
var fsid1 = el.getAttribute("data-filmone");
var had = (PKG.shots || []).some(function (x) { return String(x.id) === fsid1 && x.clip_url; });
r = await act("film_one_shot_now", { draft_id: CUR, shot_id: fsid1, force: had });
if (r) { showMsg("msg", (had ? "Filming another take of shot " : "Filming shot ") + fsid1
+ ", about $" + r.usd + ". It takes a minute or two.", "ok"); await refresh(); }
r = await act("film_one_shot_now", { draft_id: CUR, shot_id: fsid1 });
if (r) { showMsg("msg", "Shot " + fsid1 + " sent to be filmed, about $" + r.usd
+ " if anything has changed since the last take.", "ok"); await refresh(); }
return;
}
if ((el = hit("data-filmanyway"))) {
el.disabled = true;
var fsid2 = el.getAttribute("data-filmanyway");
r = await act("film_one_shot_now", { draft_id: CUR, shot_id: fsid2, force: true });
if (r) { showMsg("msg", "Filming another take of shot " + fsid2 + ", about $" + r.usd
+ ". It takes a minute or two.", "ok"); await refresh(); }
return;
}
if ((el = hit("data-drawanyway"))) {
el.disabled = true;
r = await act("draw_one_shot", { draft_id: CUR, shot_id: el.getAttribute("data-drawanyway"), force: true });
if (r) await refresh(); return;
}
if ((el = hit("data-delete"))) {
if (!confirm("Remove shot " + el.getAttribute("data-delete") + " from this trailer?")) return;
el.disabled = true;