Compare commits
No commits in common. "702558959741201561607fec34d1e9ba3a4a9215" and "795a794430e6f3c6f06d6169b2c0b7c1a016e04b" have entirely different histories.
7025589597
...
795a794430
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"m.server": "goulash.lezzo.org:443"
|
|
||||||
}
|
|
||||||
|
|
@ -156,8 +156,6 @@ summary {
|
|||||||
|
|
||||||
table {
|
table {
|
||||||
/* multiple borders merge */
|
/* multiple borders merge */
|
||||||
table-layout: fixed;
|
|
||||||
width: 100%;
|
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
@ -166,9 +164,6 @@ tbody>tr:nth-child(odd) {
|
|||||||
/* set background of odd cells */
|
/* set background of odd cells */
|
||||||
background: var(--gray);
|
background: var(--gray);
|
||||||
}
|
}
|
||||||
td{
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
|
|
||||||
td,
|
td,
|
||||||
th {
|
th {
|
||||||
|
@ -36,7 +36,7 @@ body { width: 100%; height: 100%; }
|
|||||||
Un blog.<br>Come negli anni 2000.<br>Con molte meno speranze, e molte più feels.
|
Un blog.<br>Come negli anni 2000.<br>Con molte meno speranze, e molte più feels.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p>
|
<p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p>
|
||||||
<br><em>What a beautiful face<br>
|
<br><em>What a beautiful face<br>
|
||||||
I have found in this place<br>
|
I have found in this place<br>
|
||||||
That is circling all round the sun<br>
|
That is circling all round the sun<br>
|
||||||
@ -46,20 +46,19 @@ In a blink of an eye and be gone from me<br>
|
|||||||
Soft and sweet<br>
|
Soft and sweet<br>
|
||||||
Let me hold it close and keep it here with me<br></em>
|
Let me hold it close and keep it here with me<br></em>
|
||||||
</p>
|
</p>
|
||||||
<p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p>
|
<p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p>
|
||||||
<p>
|
<p>
|
||||||
<br>
|
<br>
|
||||||
Articoli:
|
Articoli:
|
||||||
<ul>
|
<ul>
|
||||||
<li>█ <a href="theoffice.html">The Office: a guide to navigate the media</a></li>
|
|
||||||
<li>█ <a href="capodanno23.html">Capodanno 2022 + 1</a></li>
|
|
||||||
<li>█ <a href="capodanno22.html">Capodanno 2022</a></li>
|
|
||||||
<li>█ <a href="memefinance.html">MEMEFINANCE (WIP)</a></li>
|
|
||||||
<li>█ <a href="primer.html">Capire il film Primer</a></li>
|
|
||||||
<li>█ <a href="bsg.html">Battlestar Galactica: a guide for watching the show</a></li>
|
<li>█ <a href="bsg.html">Battlestar Galactica: a guide for watching the show</a></li>
|
||||||
|
<li>█ <a href="primer.html">Capire il film Primer</a></li>
|
||||||
|
<li>█ <a href="memefinance.html">MEMEFINANCE (WIP)</a></li>
|
||||||
|
<li>█ <a href="capodanno22.html">Capodanno 2022</a></li>
|
||||||
|
<li>█ <a href="capodanno23.html">Capodanno 2022 + 1</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
<p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p>
|
<p><br>=^..^= =^..^= =^..^= =^..^= =^..^= =^..^= =^..^=<br></p>
|
||||||
<p>
|
<p>
|
||||||
<br>
|
<br>
|
||||||
I membri di lezzo possono leggere direttamente il sorgente org-mode degli articoli che solitamente contiene maggiori informazioni. Per fare questo basta modificare la url in: /blog/src/nomefile.org .
|
I membri di lezzo possono leggere direttamente il sorgente org-mode degli articoli che solitamente contiene maggiori informazioni. Per fare questo basta modificare la url in: /blog/src/nomefile.org .
|
||||||
|
@ -1,198 +0,0 @@
|
|||||||
#+AUTHOR: bparodi
|
|
||||||
#+TITLE: The Office: a guide to navigate the media
|
|
||||||
#+options: html-style:nil html-scripts:nil date:nil created:nil
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" href="articles.css">
|
|
||||||
* Le due edizioni
|
|
||||||
Su lezzo puoi vedere due versioni di The Office:
|
|
||||||
- l'originale, trasferita da un misto dei miei bluray e da Amazon
|
|
||||||
- la versione superfan di Peacock, un altro servizio di streaming
|
|
||||||
The Office ha avuto più successo negli ultimi anni grazie allo streaming on
|
|
||||||
demand piuttosto che quando era trasmessa in TV.
|
|
||||||
|
|
||||||
Per questo motive quando Peacock è diventato l'esclusiva piattaforma di
|
|
||||||
streaming di The Office negli Stati Uniti
|
|
||||||
hanno capite che avrebbero dovuto offrire qualcosa di più per convincere alcuni fan a seguire la serie anziché
|
|
||||||
semplicemente acquistarla nelle molteplici edizioni in DVD e Bluray che ormai
|
|
||||||
sono economicissime.
|
|
||||||
Queste versioni estese degli episodi, chiamate Superfan Edits o Superfan Edition
|
|
||||||
offrono sequenze mai viste e in
|
|
||||||
alcuni casi addirittura mai trasmesse.
|
|
||||||
|
|
||||||
A prima vista, sembra un'aggiunta non particolarmente entusiasmante, ma in
|
|
||||||
realtà è un po' più interessante rispetto alla prima serie di Episodi Superfan
|
|
||||||
della terza stagione. Questo perché alcuni degli episodi estesi (chiamati a
|
|
||||||
volte montaggi del produttore) dalla terza stagione in poi sono stati
|
|
||||||
disponibili su DVD. La versione superfan aggiunge moltissimo spessore agli
|
|
||||||
episodi e rispondono ad alcune domande che i fan si sono posti per anni. Nella
|
|
||||||
prossima sezione ho copiato un articolo che parla di come la versione superfan
|
|
||||||
della terza stagione, nonchè la prima stagione ad essere sottoposta a questo
|
|
||||||
edit, arricchisca la visione della serie.
|
|
||||||
|
|
||||||
** The Office superfan episodes completely Change season 3 [SPOILER]
|
|
||||||
When Peacock first announced that it would be adding The Office to its library
|
|
||||||
with new Superfan episodes, I was as excited as anyone else. Who doesn’t want an
|
|
||||||
extra deranged rant from Dwight or a “That’s what she said” joke from Michael?
|
|
||||||
What I never expected was for them to change my perception of Dunder Mifflin,
|
|
||||||
forever. The Office’s extended cut episodes don’t merely add depth to
|
|
||||||
Season 3. They rewrite them.
|
|
||||||
|
|
||||||
At the moment Peacock’s extended episodes are only available for Season 3 of the
|
|
||||||
series. But that one season makes a great argument for why the streaming service
|
|
||||||
should keep adding these new installments. I’ve only made it through six
|
|
||||||
episodes of painstakingly tracking everything new in The Office’s Superfan cuts,
|
|
||||||
but already I’m viewing characters I love in a different light.
|
|
||||||
|
|
||||||
These apply to big, overarching plot points. Did you ever think it was weird
|
|
||||||
that Pam (Jenna Fischer) got back together with Roy (David Denman) after going
|
|
||||||
on basically one date with another guy? In the typical cut of The Office, Pam’s
|
|
||||||
choice to return to Roy seems a bit sad. It’s as if she’s resigned herself to a
|
|
||||||
lackluster fate she knows she hates. Yet it doesn’t play out that way in the
|
|
||||||
extended cut. We get to see more of Pam’s date with the cartoonist and her tiny
|
|
||||||
fling with that cute guy she danced with during “Diwali.” But more importantly
|
|
||||||
we get to see more of Roy and Pam. We see the breaks Roy keeps taking in the
|
|
||||||
hopes he can see the woman who broke his heart, and we see more of their quiet
|
|
||||||
flirting. It’s easy to write off Roy as an unemotional jerk. But in these small
|
|
||||||
moments it’s clear that he and Pam really had something.
|
|
||||||
|
|
||||||
Similarly, Jim’s (John Krasinski) relationship with Karen (Rashida Jones) feels
|
|
||||||
like more than a rebound. When Jim first transfers to Stamford, he’s pretty
|
|
||||||
insufferable. He’s constantly volunteering for more responsibility from Josh
|
|
||||||
(Charles Esten) and copying his boss, down to Josh’s bike riding hobby. We see a
|
|
||||||
bit of that in the traditional cut, but in this longer version Karen
|
|
||||||
consistently berates Jim for his overeager attitude and love of calling himself
|
|
||||||
Assistant Regional Manager. Yes, that is the same gimmick Jim used to pull on
|
|
||||||
Dwight. In this way she acts more as the anti-Pam, not a quiet nice girl but an
|
|
||||||
upfront go-getter who is unafraid to call Jim out on his nonsense. And Jim
|
|
||||||
responds to that reality check.
|
|
||||||
|
|
||||||
On the flip side, as these episodes spend more time with Karen we get to see
|
|
||||||
just how cutting and borderline cruel she can be. During “Gay Witch Hunt” Karen
|
|
||||||
walks by a co-worker who is breastfeeding at her desk. In disgust Karen says,
|
|
||||||
“Put that away. No one wants to see your udder.” That more insulting version of
|
|
||||||
Karen’s typical snark speaks volumes. It foreshadows how she will come to handle
|
|
||||||
her eventual breakup with Jim.
|
|
||||||
|
|
||||||
Less crucial romances also gain more dimension. In “Diwali” Ryan (BJ Novak)
|
|
||||||
initially pressures his co-workers to go to the celebration because it would
|
|
||||||
make Kelly (Mindy Kaling) happy. He later bails when it becomes clear her
|
|
||||||
parents are expecting him to ask for permission to marry Kelly. Is Ryan still
|
|
||||||
scum? Absolutely. But in this version he comes across more as a clueless guy in
|
|
||||||
love who can’t bring himself to take the next step. Also, did you know that
|
|
||||||
Angela (Angela Kinsey) was jealous of Kelly between Seasons 2 and 3? During the
|
|
||||||
Season 2 Christmas party, Kelly kissed Dwight (Rainn Wilson) because they were
|
|
||||||
both standing under mistletoe. Of course that’s something the vicious Angela
|
|
||||||
would never forget. Yet that entire plot line and Dwight’s admittedly sweet
|
|
||||||
reconciliation with Angela was cut.
|
|
||||||
|
|
||||||
This re-evaluation isn’t limited to the show’s romantic relationships. Though
|
|
||||||
Jan’s (Melora Hardin) monitoring of Michael’s (Steve Carell) work performance is
|
|
||||||
mentioned throughout all cuts of the season, only the Superfan edition truly
|
|
||||||
emphasizes how close Michael was to getting fired. In several episodes Jan
|
|
||||||
forces Michael to walk her through his workday on an hour-by-hour basis. During
|
|
||||||
this evaluation period we get a glimpse of what makes Michael Scott an actually
|
|
||||||
good boss. After slacking off on pretzel day, Michael suddenly bursts into the
|
|
||||||
main room in a sugar-fueled mania. Over the course of about two minutes he
|
|
||||||
spouts off several non-insane ideas about how to make the office more efficient,
|
|
||||||
including a desk reorganization and increased accountability from his
|
|
||||||
employees. He then returns to his desk to presumably make the major sale
|
|
||||||
mentioned at the end of the episode. It isn’t until Season 5 and the Michael
|
|
||||||
Scott Paper Company that it’s revealed that Michael may be good at his job. Yet
|
|
||||||
those seeds were planted two seasons prior then cut out of the script.
|
|
||||||
|
|
||||||
And then there’s the bird funeral. Pam’s obsession over organizing a funeral for
|
|
||||||
a dead bird in “Grief Counseling” has always given me pause. I chalked her
|
|
||||||
interest up to sheer boredom, though that never seemed quite right. Now I
|
|
||||||
understand what I was missing. While reflecting on the death of Ed Truck Pam
|
|
||||||
tells the camera, “Michael once told me that Home Alone is the saddest movie
|
|
||||||
ever. When I asked him why he said, ‘Because the whole family forgets the kid at
|
|
||||||
home. There is nothing funny about that!'”
|
|
||||||
|
|
||||||
* List of episodes with alternate cuts
|
|
||||||
Airing runtime includes commercials.
|
|
||||||
| Episode | Title | Description | Media |
|
|
||||||
|-------------+------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
||||||
| S02 E22 | "Casino Night" | Aired on May 11, 2006 as a supersized episode. It airs in syndication as a half-hour episode. | Short cut: Syndication; Supersized cut (28:20): DVD, Netflix, iTunes |
|
|
||||||
| S03 E07 | "Branch Closing" | Aired on November 9, 2006. Later that night, a Producer's Cut of the episode was released on NBC.com. | Original cut: Syndication; Producer's Cut (30:14): DVD, Netflix, iTunes |
|
|
||||||
| S03 E08 | "The Merger" | Aired on November 16, 2006 as a supersized episode. It airs in syndication as a half-hour episode. A subplot involving a Staples paper shredder was removed from future releases. | Short cut: Syndication; Supersized cut (29:50): DVD, Netflix; Original Supersized cut with Staples plot (30:43): iTunes |
|
|
||||||
| S03 E10, 11 | "A Benihana Christmas" | First aired on December 14, 2006, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:51): DVD, Netflix, iTunes; 2-Part cut: Syndication |
|
|
||||||
| S03 E12, 13 | "Traveling Salesmen"; "The Return" | "Traveling Salesmen" first aired on January 11, 2007. "The Return" first aired on January 18, 2007. Later that night, a Producer's Cut of "The Return" was released on NBC.com. On March 15, 2007, NBC aired "Traveling Salesmen" and "The Return" as a Newpeat which included additional footage. | Original cut (21:26): Syndication, Netflix, iTunes; "The Return" Producer's Cut (28:25): Netflix, iTunes; "Traveling Salesmen" + "The Return" Newpeat: DVD |
|
|
||||||
| S03 E19 | "The Negotiation" | Aired on April 5, 2007, as a supersized episode. It airs in syndication as a half-hour episode. | Short cut: Syndication; Supersized cut (29:28): DVD, Netflix, iTunes |
|
|
||||||
| S03 E22 | "Women's Appreciation" | Aired on May 3, 2007, as a supersized episode. On August 30, 2007, NBC aired the episode as a regular half-hour episode. This alternate cut both cut material and included new scenes. | Short (new) cut: Syndication; Supersized cut (28:53): DVD, Netflix, iTunes |
|
|
||||||
| S03 E23 | "Beach Games" | Aired on May 10, 2007 as a supersized episode. It airs in syndication as a half-hour episode. | Short cut: Syndication; Supersized cut (27:53): DVD, Netflix, iTunes |
|
|
||||||
| S03 E24, 25 | "The Job" | Aired on May 17, 2007, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (42:24): DVD, Netflix, iTunes; 2-Part cut: Syndication |
|
|
||||||
| S04 E01, 02 | "Fun Run" | Aired on September 27, 2007, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:58): DVD, Netflix, iTunes; 2-Part cut: Syndication |
|
|
||||||
| S04 E03, 04 | "Dunder Mifflin Infinity" | Aired on October 4, 2007, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication |
|
|
||||||
| S04 E05, 06 | "Launch Party" | Aired on October 11, 2007, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication |
|
|
||||||
| S04 E07, 08 | "Money" | Aired on October 18, 2007, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:58): DVD, Netflix, iTunes; 2-Part cut: Syndication |
|
|
||||||
| S04 E18, 19 | "Goodbye, Toby" | Aired on May 15, 2008, as a one-hour episode. It airs in syndication in two parts. | Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication |
|
|
||||||
| S05 E01, 02 | "Weight Loss" | Aired on September 25, 2008, as a one-hour episode. It airs in syndication and on Netflix in two parts. | Hour long cut (42:06): DVD, iTunes; 2-Part cut: Syndication, Netflix |
|
|
||||||
| S05 E09 | "Frame Toby" | Aired on November 20, 2008. On November 25, 2008, a Producer's Cut of the episode was released on NBC.com. | Original cut (21:16): Syndication, Netflix, iTunes; Producer's Cut (25:49): DVD |
|
|
||||||
| S05 E14, 15 | "Stress Relief" | Aired on February 1, 2009, as a one-hour episode. It airs in syndication and on Netflix in two parts. | Hour long cut (41:29): DVD, iTunes; 2-Part cut: Syndication, Netflix |
|
|
||||||
| S06 E04, 05 | "Niagara" | Aired on October 8, 2009, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts. | Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes |
|
|
||||||
| S06 E08 | "Koi Pond" | Aired on October 29, 2009. The Halloween cold open was removed from future releases. | Short cut: Syndication, DVD, Netflix, iTunes |
|
|
||||||
| S06 E13 | "Secret Santa" | Aired on December 10, 2009. On December 15, 2009, a Producer's Cut was released on NBC.com. | Producer's Cut (29:43): Season 6 DVD, "Secret Santa Pack" DVD |
|
|
||||||
| S06 E15 | "Sabre" | Aired on February 4, 2010. On September 7, 2010, Target stores included a Producer's Cut of the episode on an exclusive DVD as part of the Season 6 DVD set. | Original cut (22:07): DVD, Syndication, Netflix, iTunes; Producer's Cut (30:30): Target Exclusive Disc |
|
|
||||||
| S06 E17, 18 | "The Delivery" | Aired on March 4, 2010, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts. | Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes |
|
|
||||||
| S06 E26 | "Whistleblower" | Aired on May 20, 2010. On September 7, 2010, Target stores included a Producer's Cut of the episode on an exclusive DVD as part of the Season 6 DVD set. | Original cut (22:08): DVD, Syndication, Netflix, iTunes; Producer's Cut (28:17): Target Exclusive Disc |
|
|
||||||
| S07 E11, 12 | "Classy Christmas" | Aired on December 9, 2010, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts. | Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes |
|
|
||||||
| S07 E20 | "Training Day" | Aired on April 14, 2011. A Producer's Cut was released on the Season 7 DVD on September 6, 2011. | Producer's Cut (34:10): DVD |
|
|
||||||
| S07 E22 | "Goodbye, Michael" | Aired on April 28, 2011, as a supersized episode. On May 26, 2011, NBC aired the episode as a 2-part extended Producer's Cut. | Supersized cut (36:14): DVD, Netflix, iTunes; 2-part Producer's Cut: Syndication |
|
|
||||||
| S07 E25, 26 | "Search Committee" | Aired on May 19, 2011, as a one-hour episode. A Producer's Cut was released on the Season 7 DVD on September 6, 2011. | Original cut: DVD; 2-Part cut: Syndication, Netflix, iTunes; Producer's Cut (55:25) |
|
|
||||||
| S08 E21 | "Angry Andy" | Aired on April 19, 2012. A Producer's Cut was released on the Season 8 DVD on September 4, 2012. | Original cut: DVD, Syndication, Netflix, iTunes; Producer's Cut (33:20): DVD |
|
|
||||||
| S08 E22 | "Fundraiser" | Aired on April 26, 2012. A Producer's Cut was released on the Season 8 DVD on September 4, 2012. | Original cut: DVD, Syndication, Netflix, iTunes; Producer's Cut (25:50): DVD |
|
|
||||||
| S09 E16 | "Moving On" | Aired on February 14, 2013, as a one-hour supersized episode. It airs in syndication and on iTunes in two parts. | 2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix |
|
|
||||||
| S09 E21 | "Livin' the Dream" | Aired on May 2, 2013, as a one-hour supersized episode. It airs in syndication and on iTunes in two parts. | 2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix |
|
|
||||||
| S09 E22, 23 | "A.A.R.M." | Aired on May 9, 2013, as a one-hour episode. It airs in syndication and on iTunes in two parts. | 2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix |
|
|
||||||
| S09 E24, 25 | "Finale" | Aired on May 16, 2013, as a 75-minute supersized episode. It airs in syndication and on iTunes in two parts. | 2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix |
|
|
||||||
|
|
||||||
Di seguito una tabella che spiega dove poter reperire gli episodi. Dove non
|
|
||||||
specificato, il rip già contiene la versione più esaustiva.
|
|
||||||
| Episodio | Path |
|
|
||||||
|------------+---------------------------------------------------------------------------|
|
|
||||||
| S03E07 | Specials/TV Recordings/ |
|
|
||||||
| S03E19 | Specials/TV Recordings/ |
|
|
||||||
| S06E08 | Specials/Season 06/Deleted Scenes/S06E08 Koi Pond Halloween Cold Open.mkv |
|
|
||||||
| S06E15 | Il superfan edit contiene (probabilmente) le stesse scene ed altro |
|
|
||||||
| S06E17, 18 | Il superfan edit contiene (probabilmente) le stesse scene ed altro |
|
|
||||||
| S06E26 | Il superfan edit contiene (probabilmente) le stesse scene ed altro |
|
|
||||||
* Additional media
|
|
||||||
This is a list of additional media with indications of when I think it is the
|
|
||||||
most appropriate time to watch it. I compiled this list a while after watching
|
|
||||||
the series so the informations may not be 100% accurate. The specials folder
|
|
||||||
includes also some deleted scenes, bloopers and exclusive interviews and
|
|
||||||
recordings of the cast and the producers.
|
|
||||||
| # | Title | When to watch |
|
|
||||||
|----+------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------|
|
|
||||||
| 1 | The Accountants | At the end of S01 |
|
|
||||||
| 2 | Fake PSA | While watching S02 |
|
|
||||||
| 3 | Faces of Scranton | After S02E16 |
|
|
||||||
| 4 | Steve on Steve | Near or after the end of S02 |
|
|
||||||
| 5 | Kevin Cooks Stuff in The Office | During the first episodes of S03 |
|
|
||||||
| 6 | Excerpt From The 58th Annual Primetime Emmy Awards.mkv | During S03 |
|
|
||||||
| 7 | Excerpts From The 2006 Nbc Primetime Preview Hosted By "The Office" Cast | During S03 |
|
|
||||||
| 8 | Toby Wraparounds.mkv | During S03 |
|
|
||||||
| 9 | Dwight Schrute Music Video | Near the end of S03 |
|
|
||||||
| 10 | Lazy Scranton video | After S03E8 |
|
|
||||||
| 11 | Michael's Ad | After the relevant episode |
|
|
||||||
| 12 | Rabies - The More You Know | After the relevant episode |
|
|
||||||
| 13 | Summer Vacation Promo | At the end of S04 |
|
|
||||||
| 14 | The Promos | While watching S05 |
|
|
||||||
| 15 | Kevin's Bank Loan | While watching S05 |
|
|
||||||
| 16 | The Outburst | After the episode where Oscar is enraged |
|
|
||||||
| 17 | Welcome to Sabre | After the Sabre acquisition |
|
|
||||||
| 18 | The Podcast | After Gabe has been introduced for a couple episodes |
|
|
||||||
| 19 | Canada Games by The Office | After they talk about the Olympics or at the end of S06 |
|
|
||||||
| 20 | Blackmail | While watching S06 |
|
|
||||||
| 21 | Subtle Sexuality | While watching S06 |
|
|
||||||
| 22 | The Mentor | While watching S06 or beginnings of S07 |
|
|
||||||
| 23 | The 3rd Floor | While watching the first episodes of SS07 |
|
|
||||||
| 24 | Girl Next Door | While watching the first episodes of SS07 |
|
|
||||||
| 25 | The Office Promos - XLVI Football Championship | While watching S08 |
|
|
||||||
| 26 | Threat Level Midnight The Movie | Whenever you want: either after they talk about this in the series or during S08 or S09 ;) |
|
|
||||||
| 27 | Autotune Andy | After the relevant episode |
|
|
||||||
| 28 | The Matrix Cold Open | Near the end of S09 |
|
|
||||||
* Suggested reading
|
|
||||||
- https://www.ribbonfarm.com/the-gervais-principle/: The Gervais principle, a
|
|
||||||
very interting analysis of the workplace dynamics while watching the show
|
|
||||||
- https://www.ribbonfarm.com/2009/12/13/random-promotions-and-the-gervais-principle/:
|
|
||||||
small reflections about randomness at work
|
|
@ -1,700 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
|
||||||
<head>
|
|
||||||
<!-- 2023-06-23 Fri 11:51 -->
|
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
<title>The Office: a guide to navigate the media</title>
|
|
||||||
<meta name="author" content="bparodi" />
|
|
||||||
<meta name="generator" content="Org Mode" />
|
|
||||||
<link rel="stylesheet" href="articles.css">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="content" class="content">
|
|
||||||
<h1 class="title">The Office: a guide to navigate the media</h1>
|
|
||||||
<div id="table-of-contents" role="doc-toc">
|
|
||||||
<h2>Table of Contents</h2>
|
|
||||||
<div id="text-table-of-contents" role="doc-toc">
|
|
||||||
<ul>
|
|
||||||
<li><a href="#orgaa84a9b">1. Le due edizioni</a>
|
|
||||||
<ul>
|
|
||||||
<li><a href="#orgd8a0ead">1.1. The Office superfan episodes completely Change season 3 [SPOILER]</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li><a href="#orgf679471">2. List of episodes with alternate cuts</a></li>
|
|
||||||
<li><a href="#orgd58f6d5">3. Additional media</a></li>
|
|
||||||
<li><a href="#orga207568">4. Suggested reading</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="outline-container-orgaa84a9b" class="outline-2">
|
|
||||||
<h2 id="orgaa84a9b"><span class="section-number-2">1.</span> Le due edizioni</h2>
|
|
||||||
<div class="outline-text-2" id="text-1">
|
|
||||||
<p>
|
|
||||||
Su lezzo puoi vedere due versioni di The Office:
|
|
||||||
</p>
|
|
||||||
<ul class="org-ul">
|
|
||||||
<li>l'originale, trasferita da un misto dei miei bluray e da Amazon</li>
|
|
||||||
<li>la versione superfan di Peacock, un altro servizio di streaming</li>
|
|
||||||
</ul>
|
|
||||||
<p>
|
|
||||||
The Office ha avuto più successo negli ultimi anni grazie allo streaming on
|
|
||||||
demand piuttosto che quando era trasmessa in TV.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Per questo motive quando Peacock è diventato l'esclusiva piattaforma di
|
|
||||||
streaming di The Office negli Stati Uniti
|
|
||||||
hanno capite che avrebbero dovuto offrire qualcosa di più per convincere alcuni fan a seguire la serie anziché
|
|
||||||
semplicemente acquistarla nelle molteplici edizioni in DVD e Bluray che ormai
|
|
||||||
sono economicissime.
|
|
||||||
Queste versioni estese degli episodi, chiamate Superfan Edits o Superfan Edition
|
|
||||||
offrono sequenze mai viste e in
|
|
||||||
alcuni casi addirittura mai trasmesse.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
A prima vista, sembra un'aggiunta non particolarmente entusiasmante, ma in
|
|
||||||
realtà è un po' più interessante rispetto alla prima serie di Episodi Superfan
|
|
||||||
della terza stagione. Questo perché alcuni degli episodi estesi (chiamati a
|
|
||||||
volte montaggi del produttore) dalla terza stagione in poi sono stati
|
|
||||||
disponibili su DVD. La versione superfan aggiunge moltissimo spessore agli
|
|
||||||
episodi e rispondono ad alcune domande che i fan si sono posti per anni. Nella
|
|
||||||
prossima sezione ho copiato un articolo che parla di come la versione superfan
|
|
||||||
della terza stagione, nonchè la prima stagione ad essere sottoposta a questo
|
|
||||||
edit, arricchisca la visione della serie.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="outline-container-orgd8a0ead" class="outline-3">
|
|
||||||
<h3 id="orgd8a0ead"><span class="section-number-3">1.1.</span> The Office superfan episodes completely Change season 3 [SPOILER]</h3>
|
|
||||||
<div class="outline-text-3" id="text-1-1">
|
|
||||||
<p>
|
|
||||||
When Peacock first announced that it would be adding The Office to its library
|
|
||||||
with new Superfan episodes, I was as excited as anyone else. Who doesn’t want an
|
|
||||||
extra deranged rant from Dwight or a “That’s what she said” joke from Michael?
|
|
||||||
What I never expected was for them to change my perception of Dunder Mifflin,
|
|
||||||
forever. The Office’s extended cut episodes don’t merely add depth to
|
|
||||||
Season 3. They rewrite them.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
At the moment Peacock’s extended episodes are only available for Season 3 of the
|
|
||||||
series. But that one season makes a great argument for why the streaming service
|
|
||||||
should keep adding these new installments. I’ve only made it through six
|
|
||||||
episodes of painstakingly tracking everything new in The Office’s Superfan cuts,
|
|
||||||
but already I’m viewing characters I love in a different light.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
These apply to big, overarching plot points. Did you ever think it was weird
|
|
||||||
that Pam (Jenna Fischer) got back together with Roy (David Denman) after going
|
|
||||||
on basically one date with another guy? In the typical cut of The Office, Pam’s
|
|
||||||
choice to return to Roy seems a bit sad. It’s as if she’s resigned herself to a
|
|
||||||
lackluster fate she knows she hates. Yet it doesn’t play out that way in the
|
|
||||||
extended cut. We get to see more of Pam’s date with the cartoonist and her tiny
|
|
||||||
fling with that cute guy she danced with during “Diwali.” But more importantly
|
|
||||||
we get to see more of Roy and Pam. We see the breaks Roy keeps taking in the
|
|
||||||
hopes he can see the woman who broke his heart, and we see more of their quiet
|
|
||||||
flirting. It’s easy to write off Roy as an unemotional jerk. But in these small
|
|
||||||
moments it’s clear that he and Pam really had something.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Similarly, Jim’s (John Krasinski) relationship with Karen (Rashida Jones) feels
|
|
||||||
like more than a rebound. When Jim first transfers to Stamford, he’s pretty
|
|
||||||
insufferable. He’s constantly volunteering for more responsibility from Josh
|
|
||||||
(Charles Esten) and copying his boss, down to Josh’s bike riding hobby. We see a
|
|
||||||
bit of that in the traditional cut, but in this longer version Karen
|
|
||||||
consistently berates Jim for his overeager attitude and love of calling himself
|
|
||||||
Assistant Regional Manager. Yes, that is the same gimmick Jim used to pull on
|
|
||||||
Dwight. In this way she acts more as the anti-Pam, not a quiet nice girl but an
|
|
||||||
upfront go-getter who is unafraid to call Jim out on his nonsense. And Jim
|
|
||||||
responds to that reality check.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
On the flip side, as these episodes spend more time with Karen we get to see
|
|
||||||
just how cutting and borderline cruel she can be. During “Gay Witch Hunt” Karen
|
|
||||||
walks by a co-worker who is breastfeeding at her desk. In disgust Karen says,
|
|
||||||
“Put that away. No one wants to see your udder.” That more insulting version of
|
|
||||||
Karen’s typical snark speaks volumes. It foreshadows how she will come to handle
|
|
||||||
her eventual breakup with Jim.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Less crucial romances also gain more dimension. In “Diwali” Ryan (BJ Novak)
|
|
||||||
initially pressures his co-workers to go to the celebration because it would
|
|
||||||
make Kelly (Mindy Kaling) happy. He later bails when it becomes clear her
|
|
||||||
parents are expecting him to ask for permission to marry Kelly. Is Ryan still
|
|
||||||
scum? Absolutely. But in this version he comes across more as a clueless guy in
|
|
||||||
love who can’t bring himself to take the next step. Also, did you know that
|
|
||||||
Angela (Angela Kinsey) was jealous of Kelly between Seasons 2 and 3? During the
|
|
||||||
Season 2 Christmas party, Kelly kissed Dwight (Rainn Wilson) because they were
|
|
||||||
both standing under mistletoe. Of course that’s something the vicious Angela
|
|
||||||
would never forget. Yet that entire plot line and Dwight’s admittedly sweet
|
|
||||||
reconciliation with Angela was cut.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
This re-evaluation isn’t limited to the show’s romantic relationships. Though
|
|
||||||
Jan’s (Melora Hardin) monitoring of Michael’s (Steve Carell) work performance is
|
|
||||||
mentioned throughout all cuts of the season, only the Superfan edition truly
|
|
||||||
emphasizes how close Michael was to getting fired. In several episodes Jan
|
|
||||||
forces Michael to walk her through his workday on an hour-by-hour basis. During
|
|
||||||
this evaluation period we get a glimpse of what makes Michael Scott an actually
|
|
||||||
good boss. After slacking off on pretzel day, Michael suddenly bursts into the
|
|
||||||
main room in a sugar-fueled mania. Over the course of about two minutes he
|
|
||||||
spouts off several non-insane ideas about how to make the office more efficient,
|
|
||||||
including a desk reorganization and increased accountability from his
|
|
||||||
employees. He then returns to his desk to presumably make the major sale
|
|
||||||
mentioned at the end of the episode. It isn’t until Season 5 and the Michael
|
|
||||||
Scott Paper Company that it’s revealed that Michael may be good at his job. Yet
|
|
||||||
those seeds were planted two seasons prior then cut out of the script.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
And then there’s the bird funeral. Pam’s obsession over organizing a funeral for
|
|
||||||
a dead bird in “Grief Counseling” has always given me pause. I chalked her
|
|
||||||
interest up to sheer boredom, though that never seemed quite right. Now I
|
|
||||||
understand what I was missing. While reflecting on the death of Ed Truck Pam
|
|
||||||
tells the camera, “Michael once told me that Home Alone is the saddest movie
|
|
||||||
ever. When I asked him why he said, ‘Because the whole family forgets the kid at
|
|
||||||
home. There is nothing funny about that!'”
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="outline-container-orgf679471" class="outline-2">
|
|
||||||
<h2 id="orgf679471"><span class="section-number-2">2.</span> List of episodes with alternate cuts</h2>
|
|
||||||
<div class="outline-text-2" id="text-2">
|
|
||||||
<p>
|
|
||||||
Airing runtime includes commercials.
|
|
||||||
</p>
|
|
||||||
<table border="0" cellspacing="0" cellpadding="6" rules="none" frame="none">
|
|
||||||
|
|
||||||
|
|
||||||
<colgroup>
|
|
||||||
<col class="org-left" />
|
|
||||||
|
|
||||||
<col class="org-left" />
|
|
||||||
|
|
||||||
<col class="org-left" />
|
|
||||||
|
|
||||||
<col class="org-left" />
|
|
||||||
</colgroup>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th scope="col" class="org-left">Episode</th>
|
|
||||||
<th scope="col" class="org-left">Title</th>
|
|
||||||
<th scope="col" class="org-left">Description</th>
|
|
||||||
<th scope="col" class="org-left">Media</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S02 E22</td>
|
|
||||||
<td class="org-left">"Casino Night"</td>
|
|
||||||
<td class="org-left">Aired on May 11, 2006 as a supersized episode. It airs in syndication as a half-hour episode.</td>
|
|
||||||
<td class="org-left">Short cut: Syndication; Supersized cut (28:20): DVD, Netflix, iTunes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S03 E07</td>
|
|
||||||
<td class="org-left">"Branch Closing"</td>
|
|
||||||
<td class="org-left">Aired on November 9, 2006. Later that night, a Producer's Cut of the episode was released on NBC.com.</td>
|
|
||||||
<td class="org-left">Original cut: Syndication; Producer's Cut (30:14): DVD, Netflix, iTunes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S03 E08</td>
|
|
||||||
<td class="org-left">"The Merger"</td>
|
|
||||||
<td class="org-left">Aired on November 16, 2006 as a supersized episode. It airs in syndication as a half-hour episode. A subplot involving a Staples paper shredder was removed from future releases.</td>
|
|
||||||
<td class="org-left">Short cut: Syndication; Supersized cut (29:50): DVD, Netflix; Original Supersized cut with Staples plot (30:43): iTunes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S03 E10, 11</td>
|
|
||||||
<td class="org-left">"A Benihana Christmas"</td>
|
|
||||||
<td class="org-left">First aired on December 14, 2006, as a one-hour episode. It airs in syndication in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut (41:51): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S03 E12, 13</td>
|
|
||||||
<td class="org-left">"Traveling Salesmen"; "The Return"</td>
|
|
||||||
<td class="org-left">"Traveling Salesmen" first aired on January 11, 2007. "The Return" first aired on January 18, 2007. Later that night, a Producer's Cut of "The Return" was released on NBC.com. On March 15, 2007, NBC aired "Traveling Salesmen" and "The Return" as a Newpeat which included additional footage.</td>
|
|
||||||
<td class="org-left">Original cut (21:26): Syndication, Netflix, iTunes; "The Return" Producer's Cut (28:25): Netflix, iTunes; "Traveling Salesmen" + "The Return" Newpeat: DVD</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S03 E19</td>
|
|
||||||
<td class="org-left">"The Negotiation"</td>
|
|
||||||
<td class="org-left">Aired on April 5, 2007, as a supersized episode. It airs in syndication as a half-hour episode.</td>
|
|
||||||
<td class="org-left">Short cut: Syndication; Supersized cut (29:28): DVD, Netflix, iTunes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S03 E22</td>
|
|
||||||
<td class="org-left">"Women's Appreciation"</td>
|
|
||||||
<td class="org-left">Aired on May 3, 2007, as a supersized episode. On August 30, 2007, NBC aired the episode as a regular half-hour episode. This alternate cut both cut material and included new scenes.</td>
|
|
||||||
<td class="org-left">Short (new) cut: Syndication; Supersized cut (28:53): DVD, Netflix, iTunes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S03 E23</td>
|
|
||||||
<td class="org-left">"Beach Games"</td>
|
|
||||||
<td class="org-left">Aired on May 10, 2007 as a supersized episode. It airs in syndication as a half-hour episode.</td>
|
|
||||||
<td class="org-left">Short cut: Syndication; Supersized cut (27:53): DVD, Netflix, iTunes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S03 E24, 25</td>
|
|
||||||
<td class="org-left">"The Job"</td>
|
|
||||||
<td class="org-left">Aired on May 17, 2007, as a one-hour episode. It airs in syndication in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut (42:24): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S04 E01, 02</td>
|
|
||||||
<td class="org-left">"Fun Run"</td>
|
|
||||||
<td class="org-left">Aired on September 27, 2007, as a one-hour episode. It airs in syndication in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut (41:58): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S04 E03, 04</td>
|
|
||||||
<td class="org-left">"Dunder Mifflin Infinity"</td>
|
|
||||||
<td class="org-left">Aired on October 4, 2007, as a one-hour episode. It airs in syndication in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S04 E05, 06</td>
|
|
||||||
<td class="org-left">"Launch Party"</td>
|
|
||||||
<td class="org-left">Aired on October 11, 2007, as a one-hour episode. It airs in syndication in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S04 E07, 08</td>
|
|
||||||
<td class="org-left">"Money"</td>
|
|
||||||
<td class="org-left">Aired on October 18, 2007, as a one-hour episode. It airs in syndication in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut (41:58): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S04 E18, 19</td>
|
|
||||||
<td class="org-left">"Goodbye, Toby"</td>
|
|
||||||
<td class="org-left">Aired on May 15, 2008, as a one-hour episode. It airs in syndication in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut (41:59): DVD, Netflix, iTunes; 2-Part cut: Syndication</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S05 E01, 02</td>
|
|
||||||
<td class="org-left">"Weight Loss"</td>
|
|
||||||
<td class="org-left">Aired on September 25, 2008, as a one-hour episode. It airs in syndication and on Netflix in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut (42:06): DVD, iTunes; 2-Part cut: Syndication, Netflix</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S05 E09</td>
|
|
||||||
<td class="org-left">"Frame Toby"</td>
|
|
||||||
<td class="org-left">Aired on November 20, 2008. On November 25, 2008, a Producer's Cut of the episode was released on NBC.com.</td>
|
|
||||||
<td class="org-left">Original cut (21:16): Syndication, Netflix, iTunes; Producer's Cut (25:49): DVD</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S05 E14, 15</td>
|
|
||||||
<td class="org-left">"Stress Relief"</td>
|
|
||||||
<td class="org-left">Aired on February 1, 2009, as a one-hour episode. It airs in syndication and on Netflix in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut (41:29): DVD, iTunes; 2-Part cut: Syndication, Netflix</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S06 E04, 05</td>
|
|
||||||
<td class="org-left">"Niagara"</td>
|
|
||||||
<td class="org-left">Aired on October 8, 2009, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S06 E08</td>
|
|
||||||
<td class="org-left">"Koi Pond"</td>
|
|
||||||
<td class="org-left">Aired on October 29, 2009. The Halloween cold open was removed from future releases.</td>
|
|
||||||
<td class="org-left">Short cut: Syndication, DVD, Netflix, iTunes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S06 E13</td>
|
|
||||||
<td class="org-left">"Secret Santa"</td>
|
|
||||||
<td class="org-left">Aired on December 10, 2009. On December 15, 2009, a Producer's Cut was released on NBC.com.</td>
|
|
||||||
<td class="org-left">Producer's Cut (29:43): Season 6 DVD, "Secret Santa Pack" DVD</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S06 E15</td>
|
|
||||||
<td class="org-left">"Sabre"</td>
|
|
||||||
<td class="org-left">Aired on February 4, 2010. On September 7, 2010, Target stores included a Producer's Cut of the episode on an exclusive DVD as part of the Season 6 DVD set.</td>
|
|
||||||
<td class="org-left">Original cut (22:07): DVD, Syndication, Netflix, iTunes; Producer's Cut (30:30): Target Exclusive Disc</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S06 E17, 18</td>
|
|
||||||
<td class="org-left">"The Delivery"</td>
|
|
||||||
<td class="org-left">Aired on March 4, 2010, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S06 E26</td>
|
|
||||||
<td class="org-left">"Whistleblower"</td>
|
|
||||||
<td class="org-left">Aired on May 20, 2010. On September 7, 2010, Target stores included a Producer's Cut of the episode on an exclusive DVD as part of the Season 6 DVD set.</td>
|
|
||||||
<td class="org-left">Original cut (22:08): DVD, Syndication, Netflix, iTunes; Producer's Cut (28:17): Target Exclusive Disc</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S07 E11, 12</td>
|
|
||||||
<td class="org-left">"Classy Christmas"</td>
|
|
||||||
<td class="org-left">Aired on December 9, 2010, as a one-hour episode. It airs in syndication, on Netflix, and on iTunes in two parts.</td>
|
|
||||||
<td class="org-left">Hour long cut: DVD; 2-Part cut: Syndication, Netflix, iTunes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S07 E20</td>
|
|
||||||
<td class="org-left">"Training Day"</td>
|
|
||||||
<td class="org-left">Aired on April 14, 2011. A Producer's Cut was released on the Season 7 DVD on September 6, 2011.</td>
|
|
||||||
<td class="org-left">Producer's Cut (34:10): DVD</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S07 E22</td>
|
|
||||||
<td class="org-left">"Goodbye, Michael"</td>
|
|
||||||
<td class="org-left">Aired on April 28, 2011, as a supersized episode. On May 26, 2011, NBC aired the episode as a 2-part extended Producer's Cut.</td>
|
|
||||||
<td class="org-left">Supersized cut (36:14): DVD, Netflix, iTunes; 2-part Producer's Cut: Syndication</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S07 E25, 26</td>
|
|
||||||
<td class="org-left">"Search Committee"</td>
|
|
||||||
<td class="org-left">Aired on May 19, 2011, as a one-hour episode. A Producer's Cut was released on the Season 7 DVD on September 6, 2011.</td>
|
|
||||||
<td class="org-left">Original cut: DVD; 2-Part cut: Syndication, Netflix, iTunes; Producer's Cut (55:25)</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S08 E21</td>
|
|
||||||
<td class="org-left">"Angry Andy"</td>
|
|
||||||
<td class="org-left">Aired on April 19, 2012. A Producer's Cut was released on the Season 8 DVD on September 4, 2012.</td>
|
|
||||||
<td class="org-left">Original cut: DVD, Syndication, Netflix, iTunes; Producer's Cut (33:20): DVD</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S08 E22</td>
|
|
||||||
<td class="org-left">"Fundraiser"</td>
|
|
||||||
<td class="org-left">Aired on April 26, 2012. A Producer's Cut was released on the Season 8 DVD on September 4, 2012.</td>
|
|
||||||
<td class="org-left">Original cut: DVD, Syndication, Netflix, iTunes; Producer's Cut (25:50): DVD</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S09 E16</td>
|
|
||||||
<td class="org-left">"Moving On"</td>
|
|
||||||
<td class="org-left">Aired on February 14, 2013, as a one-hour supersized episode. It airs in syndication and on iTunes in two parts.</td>
|
|
||||||
<td class="org-left">2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S09 E21</td>
|
|
||||||
<td class="org-left">"Livin' the Dream"</td>
|
|
||||||
<td class="org-left">Aired on May 2, 2013, as a one-hour supersized episode. It airs in syndication and on iTunes in two parts.</td>
|
|
||||||
<td class="org-left">2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S09 E22, 23</td>
|
|
||||||
<td class="org-left">"A.A.R.M."</td>
|
|
||||||
<td class="org-left">Aired on May 9, 2013, as a one-hour episode. It airs in syndication and on iTunes in two parts.</td>
|
|
||||||
<td class="org-left">2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S09 E24, 25</td>
|
|
||||||
<td class="org-left">"Finale"</td>
|
|
||||||
<td class="org-left">Aired on May 16, 2013, as a 75-minute supersized episode. It airs in syndication and on iTunes in two parts.</td>
|
|
||||||
<td class="org-left">2-Part cut: Syndication, iTunes; Supersized cut: DVD, Netflix</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Di seguito una tabella che spiega dove poter reperire gli episodi. Dove non
|
|
||||||
specificato, il rip già contiene la versione più esaustiva.
|
|
||||||
</p>
|
|
||||||
<table border="0" cellspacing="0" cellpadding="6" rules="none" frame="none">
|
|
||||||
|
|
||||||
|
|
||||||
<colgroup>
|
|
||||||
<col class="org-left" />
|
|
||||||
|
|
||||||
<col class="org-left" />
|
|
||||||
</colgroup>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th scope="col" class="org-left">Episodio</th>
|
|
||||||
<th scope="col" class="org-left">Path</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S03E07</td>
|
|
||||||
<td class="org-left">Specials/TV Recordings/</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S03E19</td>
|
|
||||||
<td class="org-left">Specials/TV Recordings/</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S06E08</td>
|
|
||||||
<td class="org-left">Specials/Season 06/Deleted Scenes/S06E08 Koi Pond Halloween Cold Open.mkv</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S06E15</td>
|
|
||||||
<td class="org-left">Il superfan edit contiene (probabilmente) le stesse scene ed altro</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S06E17, 18</td>
|
|
||||||
<td class="org-left">Il superfan edit contiene (probabilmente) le stesse scene ed altro</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-left">S06E26</td>
|
|
||||||
<td class="org-left">Il superfan edit contiene (probabilmente) le stesse scene ed altro</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="outline-container-orgd58f6d5" class="outline-2">
|
|
||||||
<h2 id="orgd58f6d5"><span class="section-number-2">3.</span> Additional media</h2>
|
|
||||||
<div class="outline-text-2" id="text-3">
|
|
||||||
<p>
|
|
||||||
This is a list of additional media with indications of when I think it is the
|
|
||||||
most appropriate time to watch it. I compiled this list a while after watching
|
|
||||||
the series so the informations may not be 100% accurate. The specials folder
|
|
||||||
includes also some deleted scenes, bloopers and exclusive interviews and
|
|
||||||
recordings of the cast and the producers.
|
|
||||||
</p>
|
|
||||||
<table border="0" cellspacing="0" cellpadding="6" rules="none" frame="none">
|
|
||||||
|
|
||||||
|
|
||||||
<colgroup>
|
|
||||||
<col class="org-right" />
|
|
||||||
|
|
||||||
<col class="org-left" />
|
|
||||||
|
|
||||||
<col class="org-left" />
|
|
||||||
</colgroup>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th scope="col" class="org-right">#</th>
|
|
||||||
<th scope="col" class="org-left">Title</th>
|
|
||||||
<th scope="col" class="org-left">When to watch</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">1</td>
|
|
||||||
<td class="org-left">The Accountants</td>
|
|
||||||
<td class="org-left">At the end of S01</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">2</td>
|
|
||||||
<td class="org-left">Fake PSA</td>
|
|
||||||
<td class="org-left">While watching S02</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">3</td>
|
|
||||||
<td class="org-left">Faces of Scranton</td>
|
|
||||||
<td class="org-left">After S02E16</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">4</td>
|
|
||||||
<td class="org-left">Steve on Steve</td>
|
|
||||||
<td class="org-left">Near or after the end of S02</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">5</td>
|
|
||||||
<td class="org-left">Kevin Cooks Stuff in The Office</td>
|
|
||||||
<td class="org-left">During the first episodes of S03</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">6</td>
|
|
||||||
<td class="org-left">Excerpt From The 58th Annual Primetime Emmy Awards.mkv</td>
|
|
||||||
<td class="org-left">During S03</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">7</td>
|
|
||||||
<td class="org-left">Excerpts From The 2006 Nbc Primetime Preview Hosted By "The Office" Cast</td>
|
|
||||||
<td class="org-left">During S03</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">8</td>
|
|
||||||
<td class="org-left">Toby Wraparounds.mkv</td>
|
|
||||||
<td class="org-left">During S03</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">9</td>
|
|
||||||
<td class="org-left">Dwight Schrute Music Video</td>
|
|
||||||
<td class="org-left">Near the end of S03</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">10</td>
|
|
||||||
<td class="org-left">Lazy Scranton video</td>
|
|
||||||
<td class="org-left">After S03E8</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">11</td>
|
|
||||||
<td class="org-left">Michael's Ad</td>
|
|
||||||
<td class="org-left">After the relevant episode</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">12</td>
|
|
||||||
<td class="org-left">Rabies - The More You Know</td>
|
|
||||||
<td class="org-left">After the relevant episode</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">13</td>
|
|
||||||
<td class="org-left">Summer Vacation Promo</td>
|
|
||||||
<td class="org-left">At the end of S04</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">14</td>
|
|
||||||
<td class="org-left">The Promos</td>
|
|
||||||
<td class="org-left">While watching S05</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">15</td>
|
|
||||||
<td class="org-left">Kevin's Bank Loan</td>
|
|
||||||
<td class="org-left">While watching S05</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">16</td>
|
|
||||||
<td class="org-left">The Outburst</td>
|
|
||||||
<td class="org-left">After the episode where Oscar is enraged</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">17</td>
|
|
||||||
<td class="org-left">Welcome to Sabre</td>
|
|
||||||
<td class="org-left">After the Sabre acquisition</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">18</td>
|
|
||||||
<td class="org-left">The Podcast</td>
|
|
||||||
<td class="org-left">After Gabe has been introduced for a couple episodes</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">19</td>
|
|
||||||
<td class="org-left">Canada Games by The Office</td>
|
|
||||||
<td class="org-left">After they talk about the Olympics or at the end of S06</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">20</td>
|
|
||||||
<td class="org-left">Blackmail</td>
|
|
||||||
<td class="org-left">While watching S06</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">21</td>
|
|
||||||
<td class="org-left">Subtle Sexuality</td>
|
|
||||||
<td class="org-left">While watching S06</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">22</td>
|
|
||||||
<td class="org-left">The Mentor</td>
|
|
||||||
<td class="org-left">While watching S06 or beginnings of S07</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">23</td>
|
|
||||||
<td class="org-left">The 3rd Floor</td>
|
|
||||||
<td class="org-left">While watching the first episodes of SS07</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">24</td>
|
|
||||||
<td class="org-left">Girl Next Door</td>
|
|
||||||
<td class="org-left">While watching the first episodes of SS07</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">25</td>
|
|
||||||
<td class="org-left">The Office Promos - XLVI Football Championship</td>
|
|
||||||
<td class="org-left">While watching S08</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">26</td>
|
|
||||||
<td class="org-left">Threat Level Midnight The Movie</td>
|
|
||||||
<td class="org-left">Whenever you want: either after they talk about this in the series or during S08 or S09 ;)</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">27</td>
|
|
||||||
<td class="org-left">Autotune Andy</td>
|
|
||||||
<td class="org-left">After the relevant episode</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="org-right">28</td>
|
|
||||||
<td class="org-left">The Matrix Cold Open</td>
|
|
||||||
<td class="org-left">Near the end of S09</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="outline-container-orga207568" class="outline-2">
|
|
||||||
<h2 id="orga207568"><span class="section-number-2">4.</span> Suggested reading</h2>
|
|
||||||
<div class="outline-text-2" id="text-4">
|
|
||||||
<ul class="org-ul">
|
|
||||||
<li><a href="https://www.ribbonfarm.com/the-gervais-principle/">https://www.ribbonfarm.com/the-gervais-principle/</a>: The Gervais principle, a
|
|
||||||
very interting analysis of the workplace dynamics while watching the show</li>
|
|
||||||
<li><a href="https://www.ribbonfarm.com/2009/12/13/random-promotions-and-the-gervais-principle/">https://www.ribbonfarm.com/2009/12/13/random-promotions-and-the-gervais-principle/</a>:
|
|
||||||
small reflections about randomness at work</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="postamble" class="status">
|
|
||||||
<p class="author">Author: bparodi</p>
|
|
||||||
<p class="date">Created: 2023-06-23 Fri 11:51</p>
|
|
||||||
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
17
bocciofila/TweenMax.min.js
vendored
17
bocciofila/TweenMax.min.js
vendored
File diff suppressed because one or more lines are too long
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 6.5 KiB |
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
|||||||
.elementor-kit-517{--e-global-color-primary:#6ec1e4;--e-global-color-secondary:#54595f;--e-global-color-text:#7a7a7a;--e-global-color-accent:#61ce70;--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500}.elementor-section.elementor-section-boxed>.elementor-container{max-width:1140px}.elementor-widget:not(:last-child){margin-bottom:20px}{}h1.entry-title{display:var(--page-title-display)}@media(max-width:1024px){.elementor-section.elementor-section-boxed>.elementor-container{max-width:1024px}}@media(max-width:767px){.elementor-section.elementor-section-boxed>.elementor-container{max-width:767px}}
|
|
@ -1,210 +0,0 @@
|
|||||||
function Winwheel(options,drawWheel)
|
|
||||||
{defaultOptions={'canvasId':'canvas','centerX':null,'centerY':null,'outerRadius':null,'innerRadius':0,'numSegments':1,'drawMode':'code','rotationAngle':0,'textFontFamily':'Arial','textFontSize':20,'textFontWeight':'bold','textOrientation':'horizontal','textAlignment':'center','textDirection':'normal','textMargin':null,'textFillStyle':'black','textStrokeStyle':null,'textLineWidth':1,'fillStyle':'silver','strokeStyle':'black','lineWidth':1,'clearTheCanvas':true,'imageOverlay':false,'drawText':true,'pointerAngle':0,'wheelImage':null,'imageDirection':'N','responsive':false,'scaleFactor':1,};for(let key in defaultOptions){if((options!=null)&&(typeof(options[key])!=='undefined')){this[key]=options[key];}else{this[key]=defaultOptions[key];}}
|
|
||||||
if(options!=null){for(let key in options){if(typeof(this[key])==='undefined'){this[key]=options[key];}}}
|
|
||||||
if(this.canvasId){this.canvas=document.getElementById(this.canvasId);if(this.canvas){if(this.centerX==null){this.centerX=this.canvas.width/2;}
|
|
||||||
if(this.centerY==null){this.centerY=this.canvas.height/2;}
|
|
||||||
if(this.outerRadius==null){if(this.canvas.width<this.canvas.height){this.outerRadius=(this.canvas.width/2)-this.lineWidth;}else{this.outerRadius=(this.canvas.height/2)-this.lineWidth;}}
|
|
||||||
this.ctx=this.canvas.getContext('2d');}else{this.canvas=null;this.ctx=null;}}else{this.canvas=null;this.ctx=null;}
|
|
||||||
this.segments=new Array(null);for(let x=1;x<=this.numSegments;x++){if((options!=null)&&(options['segments'])&&(typeof(options['segments'][x-1])!=='undefined')){this.segments[x]=new Segment(options['segments'][x-1]);}else{this.segments[x]=new Segment();}}
|
|
||||||
this.updateSegmentSizes();if(this.textMargin===null){this.textMargin=(this.textFontSize/1.7);}
|
|
||||||
if((options!=null)&&(options['animation'])&&(typeof(options['animation'])!=='undefined')){this.animation=new Animation(options['animation']);}else{this.animation=new Animation();}
|
|
||||||
if((options!=null)&&(options['pins'])&&(typeof(options['pins'])!=='undefined')){this.pins=new Pin(options['pins']);}
|
|
||||||
if((this.drawMode=='image')||(this.drawMode=='segmentImage')){if(typeof(options['fillStyle'])==='undefined'){this.fillStyle=null;}
|
|
||||||
if(typeof(options['strokeStyle'])==='undefined'){this.strokeStyle='red';}
|
|
||||||
if(typeof(options['drawText'])==='undefined'){this.drawText=false;}
|
|
||||||
if(typeof(options['lineWidth'])==='undefined'){this.lineWidth=1;}
|
|
||||||
if(typeof(drawWheel)==='undefined'){drawWheel=false;}}else{if(typeof(drawWheel)==='undefined'){drawWheel=true;}}
|
|
||||||
if((options!=null)&&(options['pointerGuide'])&&(typeof(options['pointerGuide'])!=='undefined')){this.pointerGuide=new PointerGuide(options['pointerGuide']);}else{this.pointerGuide=new PointerGuide();}
|
|
||||||
if(this.responsive){winwheelToDrawDuringAnimation=this;this._originalCanvasWidth=this.canvas.width;this._originalCanvasHeight=this.canvas.height;this._responsiveScaleHeight=this.canvas.dataset.responsivescaleheight;this._responsiveMinWidth=this.canvas.dataset.responsiveminwidth;this._responsiveMinHeight=this.canvas.dataset.responsiveminheight;this._responsiveMargin=this.canvas.dataset.responsivemargin;window.addEventListener("load",winwheelResize);window.addEventListener("resize",winwheelResize);}
|
|
||||||
if(drawWheel==true){this.draw(this.clearTheCanvas);}else if(this.drawMode=='segmentImage'){winwheelToDrawDuringAnimation=this;winhweelAlreadyDrawn=false;for(let y=1;y<=this.numSegments;y++){if(this.segments[y].image!==null){this.segments[y].imgData=new Image();this.segments[y].imgData.onload=winwheelLoadedImage;this.segments[y].imgData.src=this.segments[y].image;}}}}
|
|
||||||
Winwheel.prototype.updateSegmentSizes=function()
|
|
||||||
{if(this.segments){let arcUsed=0;let numSet=0;for(let x=1;x<=this.numSegments;x++){if(this.segments[x].size!==null){arcUsed+=this.segments[x].size;numSet++;}}
|
|
||||||
let arcLeft=(360-arcUsed);let degreesEach=0;if(arcLeft>0){degreesEach=(arcLeft/(this.numSegments-numSet));}
|
|
||||||
let currentDegree=0;for(let x=1;x<=this.numSegments;x++){this.segments[x].startAngle=currentDegree;if(this.segments[x].size){currentDegree+=this.segments[x].size;}else{currentDegree+=degreesEach;}
|
|
||||||
this.segments[x].endAngle=currentDegree;}}}
|
|
||||||
Winwheel.prototype.clearCanvas=function()
|
|
||||||
{if(this.ctx){this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);}}
|
|
||||||
Winwheel.prototype.draw=function(clearTheCanvas)
|
|
||||||
{if(this.ctx){if(typeof(clearTheCanvas)!=='undefined'){if(clearTheCanvas==true){this.clearCanvas();}}else{this.clearCanvas();}
|
|
||||||
if(this.drawMode=='image'){this.drawWheelImage();if(this.drawText==true){this.drawSegmentText();}
|
|
||||||
if(this.imageOverlay==true){this.drawSegments();}}else if(this.drawMode=='segmentImage'){this.drawSegmentImages();if(this.drawText==true){this.drawSegmentText();}
|
|
||||||
if(this.imageOverlay==true){this.drawSegments();}}else{this.drawSegments();if(this.drawText==true){this.drawSegmentText();}}
|
|
||||||
if(typeof this.pins!=='undefined'){if(this.pins.visible==true){this.drawPins();}}
|
|
||||||
if(this.pointerGuide.display==true){this.drawPointerGuide();}}}
|
|
||||||
Winwheel.prototype.drawPins=function()
|
|
||||||
{if((this.pins)&&(this.pins.number)){let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let outerRadius=(this.outerRadius*this.scaleFactor);let pinOuterRadius=this.pins.outerRadius;let pinMargin=this.pins.margin;if(this.pins.responsive){pinOuterRadius=(this.pins.outerRadius*this.scaleFactor);pinMargin=(this.pins.margin*this.scaleFactor);}
|
|
||||||
let pinSpacing=(360/this.pins.number);for(let i=1;i<=this.pins.number;i++){this.ctx.save();this.ctx.strokeStyle=this.pins.strokeStyle;this.ctx.lineWidth=this.pins.lineWidth;this.ctx.fillStyle=this.pins.fillStyle;this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(i*pinSpacing+this.rotationAngle));this.ctx.translate(-centerX,-centerY);this.ctx.beginPath();this.ctx.arc(centerX,(centerY-outerRadius)+pinOuterRadius+pinMargin,pinOuterRadius,0,2*Math.PI);if(this.pins.fillStyle){this.ctx.fill();}
|
|
||||||
if(this.pins.strokeStyle){this.ctx.stroke();}
|
|
||||||
this.ctx.restore();}}}
|
|
||||||
Winwheel.prototype.drawPointerGuide=function()
|
|
||||||
{if(this.ctx){let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let outerRadius=(this.outerRadius*this.scaleFactor);this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(this.pointerAngle));this.ctx.translate(-centerX,-centerY);this.ctx.strokeStyle=this.pointerGuide.strokeStyle;this.ctx.lineWidth=this.pointerGuide.lineWidth;this.ctx.beginPath();this.ctx.moveTo(centerX,centerY);this.ctx.lineTo(centerX,-(outerRadius/4));this.ctx.stroke();this.ctx.restore();}}
|
|
||||||
Winwheel.prototype.drawWheelImage=function()
|
|
||||||
{if(this.wheelImage!=null){let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let scaledWidth=(this.wheelImage.width*this.scaleFactor);let scaledHeight=(this.wheelImage.height*this.scaleFactor);let imageLeft=(centerX-(scaledWidth/2));let imageTop=(centerY-(scaledHeight/2));this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(this.rotationAngle));this.ctx.translate(-centerX,-centerY);this.ctx.drawImage(this.wheelImage,imageLeft,imageTop,scaledWidth,scaledHeight);this.ctx.restore();}}
|
|
||||||
Winwheel.prototype.drawSegmentImages=function()
|
|
||||||
{if(this.ctx){let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);if(this.segments){for(let x=1;x<=this.numSegments;x++){let seg=this.segments[x];if(seg.imgData.height){let imageLeft=0;let imageTop=0;let imageAngle=0;let imageDirection='';let scaledWidth=(seg.imgData.width*this.scaleFactor);let scaledHeight=(seg.imgData.height*this.scaleFactor);if(seg.imageDirection!==null){imageDirection=seg.imageDirection;}else{imageDirection=this.imageDirection;}
|
|
||||||
if(imageDirection=='S'){imageLeft=(centerX-(scaledWidth/2));imageTop=centerY;imageAngle=(seg.startAngle+180+((seg.endAngle-seg.startAngle)/2));}else if(imageDirection=='E'){imageLeft=centerX;imageTop=(centerY-(scaledHeight/2));imageAngle=(seg.startAngle+270+((seg.endAngle-seg.startAngle)/2));}else if(imageDirection=='W'){imageLeft=(centerX-scaledWidth);imageTop=(centerY-(scaledHeight/2));imageAngle=(seg.startAngle+90+((seg.endAngle-seg.startAngle)/2));}else{imageLeft=(centerX-(scaledWidth/2));imageTop=(centerY-scaledHeight);imageAngle=(seg.startAngle+((seg.endAngle-seg.startAngle)/2));}
|
|
||||||
this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(this.rotationAngle+imageAngle));this.ctx.translate(-centerX,-centerY);this.ctx.drawImage(seg.imgData,imageLeft,imageTop,scaledWidth,scaledHeight);this.ctx.restore();}else{console.log('Segment '+x+' imgData is not loaded');}}}}}
|
|
||||||
Winwheel.prototype.drawSegments=function()
|
|
||||||
{if(this.ctx){if(this.segments){let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let innerRadius=(this.innerRadius*this.scaleFactor);let outerRadius=(this.outerRadius*this.scaleFactor);for(let x=1;x<=this.numSegments;x++){let seg=this.segments[x];let fillStyle;let lineWidth;let strokeStyle;if(seg.fillStyle!==null){fillStyle=seg.fillStyle;}else{fillStyle=this.fillStyle;}
|
|
||||||
this.ctx.fillStyle=fillStyle;if(seg.lineWidth!==null){lineWidth=seg.lineWidth;}else{lineWidth=this.lineWidth;}
|
|
||||||
this.ctx.lineWidth=lineWidth;if(seg.strokeStyle!==null){strokeStyle=seg.strokeStyle;}else{strokeStyle=this.strokeStyle;}
|
|
||||||
this.ctx.strokeStyle=strokeStyle;if((strokeStyle)||(fillStyle)){this.ctx.beginPath();if(!this.innerRadius){this.ctx.moveTo(centerX,centerY);}else{let iX=Math.cos(this.degToRad(seg.startAngle+this.rotationAngle-90))*(innerRadius-lineWidth/2);let iY=Math.sin(this.degToRad(seg.startAngle+this.rotationAngle-90))*(innerRadius-lineWidth/2);this.ctx.moveTo(centerX+iX,centerY+iY);}
|
|
||||||
this.ctx.arc(centerX,centerY,outerRadius,this.degToRad(seg.startAngle+this.rotationAngle-90),this.degToRad(seg.endAngle+this.rotationAngle-90),false);if(this.innerRadius){this.ctx.arc(centerX,centerY,innerRadius,this.degToRad(seg.endAngle+this.rotationAngle-90),this.degToRad(seg.startAngle+this.rotationAngle-90),true);}else{this.ctx.lineTo(centerX,centerY);}
|
|
||||||
if(fillStyle){this.ctx.fill();}
|
|
||||||
if(strokeStyle){this.ctx.stroke();}}}}}}
|
|
||||||
Winwheel.prototype.drawSegmentText=function()
|
|
||||||
{if(this.ctx){let fontFamily;let fontSize;let fontWeight;let orientation;let alignment;let direction;let margin;let fillStyle;let strokeStyle;let lineWidth;let fontSetting;let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let outerRadius=(this.outerRadius*this.scaleFactor);let innerRadius=(this.innerRadius*this.scaleFactor);for(let x=1;x<=this.numSegments;x++){this.ctx.save();let seg=this.segments[x];if(seg.text){if(seg.textFontFamily!==null)fontFamily=seg.textFontFamily;else fontFamily=this.textFontFamily;if(seg.textFontSize!==null)fontSize=seg.textFontSize;else fontSize=this.textFontSize;if(seg.textFontWeight!==null)fontWeight=seg.textFontWeight;else fontWeight=this.textFontWeight;if(seg.textOrientation!==null)orientation=seg.textOrientation;else orientation=this.textOrientation;if(seg.textAlignment!==null)alignment=seg.textAlignment;else alignment=this.textAlignment;if(seg.textDirection!==null)direction=seg.textDirection;else direction=this.textDirection;if(seg.textMargin!==null)margin=seg.textMargin;else margin=this.textMargin;if(seg.textFillStyle!==null)fillStyle=seg.textFillStyle;else fillStyle=this.textFillStyle;if(seg.textStrokeStyle!==null)strokeStyle=seg.textStrokeStyle;else strokeStyle=this.textStrokeStyle;if(seg.textLineWidth!==null)lineWidth=seg.textLineWidth;else lineWidth=this.textLineWidth;fontSize=(fontSize*this.scaleFactor);margin=(margin*this.scaleFactor);let fontSetting='';if(fontWeight!=null){fontSetting+=fontWeight+' ';}
|
|
||||||
if(fontSize!=null){fontSetting+=fontSize+'px ';}
|
|
||||||
if(fontFamily!=null){fontSetting+=fontFamily;}
|
|
||||||
this.ctx.font=fontSetting;this.ctx.fillStyle=fillStyle;this.ctx.strokeStyle=strokeStyle;this.ctx.lineWidth=lineWidth;let lines=seg.text.split('\n');let lineOffset=0-(fontSize*(lines.length/2))+(fontSize/2);if((orientation=='curved')&&((alignment=='inner')||(alignment=='outer'))){lineOffset=0;}
|
|
||||||
for(let i=0;i<lines.length;i++){if(direction=='reversed'){if(orientation=='horizontal'){if(alignment=='inner'){this.ctx.textAlign='right';}else if(alignment=='outer'){this.ctx.textAlign='left';}else{this.ctx.textAlign='center';}
|
|
||||||
this.ctx.textBaseline='middle';let textAngle=this.degToRad((seg.endAngle-((seg.endAngle-seg.startAngle)/2)+this.rotationAngle-90)-180);this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(textAngle);this.ctx.translate(-centerX,-centerY);if(alignment=='inner'){if(fillStyle){this.ctx.fillText(lines[i],centerX-innerRadius-margin,centerY+lineOffset);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(lines[i],centerX-innerRadius-margin,centerY+lineOffset);}}else if(alignment=='outer'){if(fillStyle){this.ctx.fillText(lines[i],centerX-outerRadius+margin,centerY+lineOffset);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(lines[i],centerX-outerRadius+margin,centerY+lineOffset);}}else{if(fillStyle){this.ctx.fillText(lines[i],centerX-innerRadius-((outerRadius-innerRadius)/2)-margin,centerY+lineOffset);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(lines[i],centerX-innerRadius-((outerRadius-innerRadius)/2)-margin,centerY+lineOffset);}}
|
|
||||||
this.ctx.restore();}else if(orientation=='vertical'){this.ctx.textAlign='center';if(alignment=='inner'){this.ctx.textBaseline='top';}else if(alignment=='outer'){this.ctx.textBaseline='bottom';}else{this.ctx.textBaseline='middle';}
|
|
||||||
let textAngle=(seg.endAngle-((seg.endAngle-seg.startAngle)/2)-180);textAngle+=this.rotationAngle;this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(textAngle));this.ctx.translate(-centerX,-centerY);let yPos=0;if(alignment=='outer'){yPos=(centerY+outerRadius-margin);}else if(alignment=='inner'){yPos=(centerY+innerRadius+margin);}
|
|
||||||
let yInc=(fontSize-(fontSize/9));if(alignment=='outer'){for(let c=(lines[i].length-1);c>=0;c--){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
|
|
||||||
yPos-=yInc;}}else if(alignment=='inner'){for(let c=0;c<lines[i].length;c++){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
|
|
||||||
yPos+=yInc;}}else if(alignment=='center'){let centerAdjustment=0;if(lines[i].length>1){centerAdjustment=(yInc*(lines[i].length-1)/2);}
|
|
||||||
let yPos=(centerY+innerRadius+((outerRadius-innerRadius)/2))+centerAdjustment+margin;for(let c=(lines[i].length-1);c>=0;c--){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
|
|
||||||
yPos-=yInc;}}
|
|
||||||
this.ctx.restore();}else if(orientation=='curved'){let radius=0;if(alignment=='inner'){radius=innerRadius+margin;this.ctx.textBaseline='top';}else if(alignment=='outer'){radius=outerRadius-margin;this.ctx.textBaseline='bottom';radius-=(fontSize*(lines.length-1));}else if(alignment=='center'){radius=innerRadius+margin+((outerRadius-innerRadius)/2);this.ctx.textBaseline='middle';}
|
|
||||||
let anglePerChar=0;let drawAngle=0;if(lines[i].length>1){this.ctx.textAlign='left';anglePerChar=(4*(fontSize/10));let radiusPercent=(100/radius);anglePerChar=(anglePerChar*radiusPercent);let totalArc=(anglePerChar*lines[i].length);drawAngle=seg.startAngle+(((seg.endAngle-seg.startAngle)/2)-(totalArc/2));}else{drawAngle=(seg.startAngle+((seg.endAngle-seg.startAngle)/2));this.ctx.textAlign='center';}
|
|
||||||
drawAngle+=this.rotationAngle;drawAngle-=180;for(let c=lines[i].length;c>=0;c--){this.ctx.save();let character=lines[i].charAt(c);this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(drawAngle));this.ctx.translate(-centerX,-centerY);if(strokeStyle){this.ctx.strokeText(character,centerX,centerY+radius+lineOffset);}
|
|
||||||
if(fillStyle){this.ctx.fillText(character,centerX,centerY+radius+lineOffset);}
|
|
||||||
drawAngle+=anglePerChar;this.ctx.restore();}}}else{if(orientation=='horizontal'){if(alignment=='inner'){this.ctx.textAlign='left';}else if(alignment=='outer'){this.ctx.textAlign='right';}else{this.ctx.textAlign='center';}
|
|
||||||
this.ctx.textBaseline='middle';let textAngle=this.degToRad(seg.endAngle-((seg.endAngle-seg.startAngle)/2)+this.rotationAngle-90);this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(textAngle);this.ctx.translate(-centerX,-centerY);if(alignment=='inner'){if(fillStyle){this.ctx.fillText(lines[i],centerX+innerRadius+margin,centerY+lineOffset);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(lines[i],centerX+innerRadius+margin,centerY+lineOffset);}}else if(alignment=='outer'){if(fillStyle){this.ctx.fillText(lines[i],centerX+outerRadius-margin,centerY+lineOffset);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(lines[i],centerX+outerRadius-margin,centerY+lineOffset);}}else{if(fillStyle){this.ctx.fillText(lines[i],centerX+innerRadius+((outerRadius-innerRadius)/2)+margin,centerY+lineOffset);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(lines[i],centerX+innerRadius+((outerRadius-innerRadius)/2)+margin,centerY+lineOffset);}}
|
|
||||||
this.ctx.restore();}else if(orientation=='vertical'){this.ctx.textAlign='center';if(alignment=='inner'){this.ctx.textBaseline='bottom';}else if(alignment=='outer'){this.ctx.textBaseline='top';}else{this.ctx.textBaseline='middle';}
|
|
||||||
let textAngle=seg.endAngle-((seg.endAngle-seg.startAngle)/2);textAngle+=this.rotationAngle;this.ctx.save();this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(textAngle));this.ctx.translate(-centerX,-centerY);let yPos=0;if(alignment=='outer'){yPos=(centerY-outerRadius+margin);}else if(alignment=='inner'){yPos=(centerY-innerRadius-margin);}
|
|
||||||
let yInc=(fontSize-(fontSize/9));if(alignment=='outer'){for(let c=0;c<lines[i].length;c++){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
|
|
||||||
yPos+=yInc;}}else if(alignment=='inner'){for(let c=(lines[i].length-1);c>=0;c--){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
|
|
||||||
yPos-=yInc;}}else if(alignment=='center'){let centerAdjustment=0;if(lines[i].length>1){centerAdjustment=(yInc*(lines[i].length-1)/2);}
|
|
||||||
let yPos=(centerY-innerRadius-((outerRadius-innerRadius)/2))-centerAdjustment-margin;for(let c=0;c<lines[i].length;c++){let character=lines[i].charAt(c);if(fillStyle){this.ctx.fillText(character,centerX+lineOffset,yPos);}
|
|
||||||
if(strokeStyle){this.ctx.strokeText(character,centerX+lineOffset,yPos);}
|
|
||||||
yPos+=yInc;}}
|
|
||||||
this.ctx.restore();}else if(orientation=='curved'){let radius=0;if(alignment=='inner'){radius=innerRadius+margin;this.ctx.textBaseline='bottom';radius+=(fontSize*(lines.length-1));}else if(alignment=='outer'){radius=outerRadius-margin;this.ctx.textBaseline='top';}else if(alignment=='center'){radius=innerRadius+margin+((outerRadius-innerRadius)/2);this.ctx.textBaseline='middle';}
|
|
||||||
let anglePerChar=0;let drawAngle=0;if(lines[i].length>1){this.ctx.textAlign='left';anglePerChar=(4*(fontSize/10));let radiusPercent=(100/radius);anglePerChar=(anglePerChar*radiusPercent);let totalArc=(anglePerChar*lines[i].length);drawAngle=seg.startAngle+(((seg.endAngle-seg.startAngle)/2)-(totalArc/2));}else{drawAngle=(seg.startAngle+((seg.endAngle-seg.startAngle)/2));this.ctx.textAlign='center';}
|
|
||||||
drawAngle+=this.rotationAngle;for(let c=0;c<(lines[i].length);c++){this.ctx.save();let character=lines[i].charAt(c);this.ctx.translate(centerX,centerY);this.ctx.rotate(this.degToRad(drawAngle));this.ctx.translate(-centerX,-centerY);if(strokeStyle){this.ctx.strokeText(character,centerX,centerY-radius+lineOffset);}
|
|
||||||
if(fillStyle){this.ctx.fillText(character,centerX,centerY-radius+lineOffset);}
|
|
||||||
drawAngle+=anglePerChar;this.ctx.restore();}}}
|
|
||||||
lineOffset+=fontSize;}}
|
|
||||||
this.ctx.restore();}}}
|
|
||||||
Winwheel.prototype.degToRad=function(d)
|
|
||||||
{return d*0.0174532925199432957;}
|
|
||||||
Winwheel.prototype.setCenter=function(x,y)
|
|
||||||
{this.centerX=x;this.centerY=y;}
|
|
||||||
Winwheel.prototype.addSegment=function(options,position)
|
|
||||||
{let newSegment=new Segment(options);this.numSegments++;let segmentPos;if(typeof position!=='undefined'){for(let x=this.numSegments;x>position;x--){this.segments[x]=this.segments[x-1];}
|
|
||||||
this.segments[position]=newSegment;segmentPos=position;}else{this.segments[this.numSegments]=newSegment;segmentPos=this.numSegments;}
|
|
||||||
this.updateSegmentSizes();return this.segments[segmentPos];}
|
|
||||||
Winwheel.prototype.setCanvasId=function(canvasId)
|
|
||||||
{if(canvasId){this.canvasId=canvasId;this.canvas=document.getElementById(this.canvasId);if(this.canvas){this.ctx=this.canvas.getContext('2d');}}else{this.canvasId=null
|
|
||||||
this.ctx=null;this.canvas=null;}}
|
|
||||||
Winwheel.prototype.deleteSegment=function(position)
|
|
||||||
{if(this.numSegments>1){if(typeof position!=='undefined'){for(let x=position;x<this.numSegments;x++){this.segments[x]=this.segments[x+1];}}
|
|
||||||
this.segments[this.numSegments]=undefined;this.numSegments--;this.updateSegmentSizes();}}
|
|
||||||
Winwheel.prototype.windowToCanvas=function(x,y)
|
|
||||||
{let bbox=this.canvas.getBoundingClientRect();return{x:Math.floor(x-bbox.left*(this.canvas.width/bbox.width)),y:Math.floor(y-bbox.top*(this.canvas.height/bbox.height))};}
|
|
||||||
Winwheel.prototype.getSegmentAt=function(x,y)
|
|
||||||
{let foundSegment=null;let segmentNumber=this.getSegmentNumberAt(x,y);if(segmentNumber!==null){foundSegment=this.segments[segmentNumber];}
|
|
||||||
return foundSegment;}
|
|
||||||
Winwheel.prototype.getSegmentNumberAt=function(x,y)
|
|
||||||
{let loc=this.windowToCanvas(x,y);let topBottom;let leftRight;let adjacentSideLength;let oppositeSideLength;let hypotenuseSideLength;let centerX=(this.centerX*this.scaleFactor);let centerY=(this.centerY*this.scaleFactor);let outerRadius=(this.outerRadius*this.scaleFactor);let innerRadius=(this.innerRadius*this.scaleFactor);if(loc.x>centerX){adjacentSideLength=(loc.x-centerX);leftRight='R';}else{adjacentSideLength=(centerX-loc.x);leftRight='L';}
|
|
||||||
if(loc.y>centerY){oppositeSideLength=(loc.y-centerY);topBottom='B';}else{oppositeSideLength=(centerY-loc.y);topBottom='T';}
|
|
||||||
let tanVal=oppositeSideLength/adjacentSideLength;let result=(Math.atan(tanVal)*180/Math.PI);let locationAngle=0;hypotenuseSideLength=Math.sqrt((oppositeSideLength*oppositeSideLength)+(adjacentSideLength*adjacentSideLength));if((topBottom=='T')&&(leftRight=='R')){locationAngle=Math.round(90-result);}else if((topBottom=='B')&&(leftRight=='R')){locationAngle=Math.round(result+90);}else if((topBottom=='B')&&(leftRight=='L')){locationAngle=Math.round((90-result)+180);}else if((topBottom=='T')&&(leftRight=='L')){locationAngle=Math.round(result+270);}
|
|
||||||
if(this.rotationAngle!=0){let rotatedPosition=this.getRotationPosition();locationAngle=(locationAngle-rotatedPosition);if(locationAngle<0){locationAngle=(360-Math.abs(locationAngle));}}
|
|
||||||
let foundSegmentNumber=null;for(let x=1;x<=this.numSegments;x++){if((locationAngle>=this.segments[x].startAngle)&&(locationAngle<=this.segments[x].endAngle)){if((hypotenuseSideLength>=innerRadius)&&(hypotenuseSideLength<=outerRadius)){foundSegmentNumber=x;break;}}}
|
|
||||||
return foundSegmentNumber;}
|
|
||||||
Winwheel.prototype.getIndicatedSegment=function()
|
|
||||||
{let prizeNumber=this.getIndicatedSegmentNumber();return this.segments[prizeNumber];}
|
|
||||||
Winwheel.prototype.getIndicatedSegmentNumber=function()
|
|
||||||
{let indicatedPrize=0;let rawAngle=this.getRotationPosition();let relativeAngle=Math.floor(this.pointerAngle-rawAngle);if(relativeAngle<0){relativeAngle=360-Math.abs(relativeAngle);}
|
|
||||||
for(let x=1;x<(this.segments.length);x++){if((relativeAngle>=this.segments[x]['startAngle'])&&(relativeAngle<=this.segments[x]['endAngle'])){indicatedPrize=x;break;}}
|
|
||||||
return indicatedPrize;}
|
|
||||||
Winwheel.prototype.getCurrentPinNumber=function()
|
|
||||||
{let currentPin=0;if(this.pins){let rawAngle=this.getRotationPosition();let relativeAngle=Math.floor(this.pointerAngle-rawAngle);if(relativeAngle<0){relativeAngle=360-Math.abs(relativeAngle);}
|
|
||||||
let pinSpacing=(360/this.pins.number);let totalPinAngle=0;for(let x=0;x<(this.pins.number);x++){if((relativeAngle>=totalPinAngle)&&(relativeAngle<=(totalPinAngle+pinSpacing))){currentPin=x;break;}
|
|
||||||
totalPinAngle+=pinSpacing;}
|
|
||||||
if(this.animation.direction=='clockwise'){currentPin++;if(currentPin>this.pins.number){currentPin=0;}}}
|
|
||||||
return currentPin;}
|
|
||||||
Winwheel.prototype.getRotationPosition=function()
|
|
||||||
{let rawAngle=this.rotationAngle;if(rawAngle>=0){if(rawAngle>360){let timesPast360=Math.floor(rawAngle/360);rawAngle=(rawAngle-(360*timesPast360));}}else{if(rawAngle<-360){let timesPast360=Math.ceil(rawAngle/360);rawAngle=(rawAngle-(360*timesPast360));}
|
|
||||||
rawAngle=(360+rawAngle);}
|
|
||||||
return rawAngle;}
|
|
||||||
Winwheel.prototype.startAnimation=function()
|
|
||||||
{if(this.animation){this.computeAnimation();winwheelToDrawDuringAnimation=this;let properties=new Array(null);properties[this.animation.propertyName]=this.animation.propertyValue;properties['yoyo']=this.animation.yoyo;properties['repeat']=this.animation.repeat;properties['ease']=this.animation.easing;properties['onUpdate']=winwheelAnimationLoop;properties['onComplete']=winwheelStopAnimation;this.tween=TweenMax.to(this,this.animation.duration,properties);}}
|
|
||||||
Winwheel.prototype.stopAnimation=function(canCallback)
|
|
||||||
{if(winwheelToDrawDuringAnimation){if(winwheelToDrawDuringAnimation.tween){winwheelToDrawDuringAnimation.tween.kill();}
|
|
||||||
winwheelStopAnimation(canCallback);}
|
|
||||||
winwheelToDrawDuringAnimation=this;}
|
|
||||||
Winwheel.prototype.pauseAnimation=function()
|
|
||||||
{if(this.tween){this.tween.pause();}}
|
|
||||||
Winwheel.prototype.resumeAnimation=function()
|
|
||||||
{if(this.tween){this.tween.play();}}
|
|
||||||
Winwheel.prototype.computeAnimation=function()
|
|
||||||
{if(this.animation){if(this.animation.type=='spinOngoing'){this.animation.propertyName='rotationAngle';if(this.animation.spins==null){this.animation.spins=5;}
|
|
||||||
if(this.animation.repeat==null){this.animation.repeat=-1;}
|
|
||||||
if(this.animation.easing==null){this.animation.easing='Linear.easeNone';}
|
|
||||||
if(this.animation.yoyo==null){this.animation.yoyo=false;}
|
|
||||||
this.animation.propertyValue=(this.animation.spins*360);if(this.animation.direction=='anti-clockwise'){this.animation.propertyValue=(0-this.animation.propertyValue);}}else if(this.animation.type=='spinToStop'){this.animation.propertyName='rotationAngle';if(this.animation.spins==null){this.animation.spins=5;}
|
|
||||||
if(this.animation.repeat==null){this.animation.repeat=0;}
|
|
||||||
if(this.animation.easing==null){this.animation.easing='Power3.easeOut';}
|
|
||||||
if(this.animation.stopAngle==null){this.animation._stopAngle=Math.floor((Math.random()*359));}else{this.animation._stopAngle=(360-this.animation.stopAngle+this.pointerAngle);}
|
|
||||||
if(this.animation.yoyo==null){this.animation.yoyo=false;}
|
|
||||||
this.animation.propertyValue=(this.animation.spins*360);if(this.animation.direction=='anti-clockwise'){this.animation.propertyValue=(0-this.animation.propertyValue);this.animation.propertyValue-=(360-this.animation._stopAngle);}else{this.animation.propertyValue+=this.animation._stopAngle;}}else if(this.animation.type=='spinAndBack'){this.animation.propertyName='rotationAngle';if(this.animation.spins==null){this.animation.spins=5;}
|
|
||||||
if(this.animation.repeat==null){this.animation.repeat=1;}
|
|
||||||
if(this.animation.easing==null){this.animation.easing='Power2.easeInOut';}
|
|
||||||
if(this.animation.yoyo==null){this.animation.yoyo=true;}
|
|
||||||
if(this.animation.stopAngle==null){this.animation._stopAngle=0;}else{this.animation._stopAngle=(360-this.animation.stopAngle);}
|
|
||||||
this.animation.propertyValue=(this.animation.spins*360);if(this.animation.direction=='anti-clockwise'){this.animation.propertyValue=(0-this.animation.propertyValue);this.animation.propertyValue-=(360-this.animation._stopAngle);}else{this.animation.propertyValue+=this.animation._stopAngle;}}else if(this.animation.type=='custom'){}}}
|
|
||||||
Winwheel.prototype.getRandomForSegment=function(segmentNumber)
|
|
||||||
{let stopAngle=0;if(segmentNumber){if(typeof this.segments[segmentNumber]!=='undefined'){let startAngle=this.segments[segmentNumber].startAngle;let endAngle=this.segments[segmentNumber].endAngle;let range=(endAngle-startAngle)-2;if(range>0){stopAngle=(startAngle+1+Math.floor((Math.random()*range)));}else{console.log('Segment size is too small to safely get random angle inside it');}}else{console.log('Segment '+segmentNumber+' undefined');}}else{console.log('Segment number not specified');}
|
|
||||||
return stopAngle;}
|
|
||||||
function Pin(options)
|
|
||||||
{let defaultOptions={'visible':true,'number':36,'outerRadius':3,'fillStyle':'grey','strokeStyle':'black','lineWidth':1,'margin':3,'responsive':false,};for(let key in defaultOptions){if((options!=null)&&(typeof(options[key])!=='undefined')){this[key]=options[key];}else{this[key]=defaultOptions[key];}}
|
|
||||||
if(options!=null){for(let key in options){if(typeof(this[key])==='undefined'){this[key]=options[key];}}}}
|
|
||||||
function Animation(options)
|
|
||||||
{let defaultOptions={'type':'spinOngoing','direction':'clockwise','propertyName':null,'propertyValue':null,'duration':10,'yoyo':false,'repeat':null,'easing':null,'stopAngle':null,'spins':null,'clearTheCanvas':null,'callbackFinished':null,'callbackBefore':null,'callbackAfter':null,'callbackSound':null,'soundTrigger':'segment'};for(let key in defaultOptions){if((options!=null)&&(typeof(options[key])!=='undefined')){this[key]=options[key];}else{this[key]=defaultOptions[key];}}
|
|
||||||
if(options!=null){for(let key in options){if(typeof(this[key])==='undefined'){this[key]=options[key];}}}}
|
|
||||||
function Segment(options)
|
|
||||||
{let defaultOptions={'size':null,'text':'','fillStyle':null,'strokeStyle':null,'lineWidth':null,'textFontFamily':null,'textFontSize':null,'textFontWeight':null,'textOrientation':null,'textAlignment':null,'textDirection':null,'textMargin':null,'textFillStyle':null,'textStrokeStyle':null,'textLineWidth':null,'image':null,'imageDirection':null,'imgData':null};for(let key in defaultOptions){if((options!=null)&&(typeof(options[key])!=='undefined')){this[key]=options[key];}else{this[key]=defaultOptions[key];}}
|
|
||||||
if(options!=null){for(let key in options){if(typeof(this[key])==='undefined'){this[key]=options[key];}}}
|
|
||||||
this.startAngle=0;this.endAngle=0;}
|
|
||||||
Segment.prototype.changeImage=function(image,imageDirection)
|
|
||||||
{this.image=image;this.imgData=null;if(imageDirection){this.imageDirection=imageDirection;}
|
|
||||||
winhweelAlreadyDrawn=false;this.imgData=new Image();this.imgData.onload=winwheelLoadedImage;this.imgData.src=this.image;}
|
|
||||||
function PointerGuide(options)
|
|
||||||
{let defaultOptions={'display':false,'strokeStyle':'red','lineWidth':3};for(let key in defaultOptions){if((options!=null)&&(typeof(options[key])!=='undefined')){this[key]=options[key];}else{this[key]=defaultOptions[key];}}}
|
|
||||||
function winwheelPercentToDegrees(percentValue)
|
|
||||||
{let degrees=0;if((percentValue>0)&&(percentValue<=100)){let divider=(percentValue/100);degrees=(360*divider);}
|
|
||||||
return degrees;}
|
|
||||||
function winwheelAnimationLoop()
|
|
||||||
{if(winwheelToDrawDuringAnimation){if(winwheelToDrawDuringAnimation.animation.clearTheCanvas!=false){winwheelToDrawDuringAnimation.ctx.clearRect(0,0,winwheelToDrawDuringAnimation.canvas.width,winwheelToDrawDuringAnimation.canvas.height);}
|
|
||||||
let callbackBefore=winwheelToDrawDuringAnimation.animation.callbackBefore;let callbackAfter=winwheelToDrawDuringAnimation.animation.callbackAfter;if(callbackBefore!=null){if(typeof callbackBefore==='function'){callbackBefore();}else{eval(callbackBefore);}}
|
|
||||||
winwheelToDrawDuringAnimation.draw(false);if(callbackAfter!=null){if(typeof callbackAfter==='function'){callbackAfter();}else{eval(callbackAfter);}}
|
|
||||||
if(winwheelToDrawDuringAnimation.animation.callbackSound){winwheelTriggerSound();}}}
|
|
||||||
function winwheelTriggerSound()
|
|
||||||
{if(winwheelToDrawDuringAnimation.hasOwnProperty('_lastSoundTriggerNumber')==false){winwheelToDrawDuringAnimation._lastSoundTriggerNumber=0;}
|
|
||||||
let callbackSound=winwheelToDrawDuringAnimation.animation.callbackSound;let currentTriggerNumber=0;if(winwheelToDrawDuringAnimation.animation.soundTrigger=='pin'){currentTriggerNumber=winwheelToDrawDuringAnimation.getCurrentPinNumber();}else{currentTriggerNumber=winwheelToDrawDuringAnimation.getIndicatedSegmentNumber();}
|
|
||||||
if(currentTriggerNumber!=winwheelToDrawDuringAnimation._lastSoundTriggerNumber){if(typeof callbackSound==='function'){callbackSound();}else{eval(callbackSound);}
|
|
||||||
winwheelToDrawDuringAnimation._lastSoundTriggerNumber=currentTriggerNumber;}}
|
|
||||||
let winwheelToDrawDuringAnimation=null;function winwheelStopAnimation(canCallback)
|
|
||||||
{if(canCallback!=false){let callback=winwheelToDrawDuringAnimation.animation.callbackFinished;if(callback!=null){if(typeof callback==='function'){callback(winwheelToDrawDuringAnimation.getIndicatedSegment());}else{eval(callback);}}}}
|
|
||||||
let winhweelAlreadyDrawn=false;function winwheelLoadedImage()
|
|
||||||
{if(winhweelAlreadyDrawn==false){let winwheelImageLoadCount=0;for(let i=1;i<=winwheelToDrawDuringAnimation.numSegments;i++){if((winwheelToDrawDuringAnimation.segments[i].imgData!=null)&&(winwheelToDrawDuringAnimation.segments[i].imgData.height)){winwheelImageLoadCount++;}}
|
|
||||||
if(winwheelImageLoadCount==winwheelToDrawDuringAnimation.numSegments){winhweelAlreadyDrawn=true;winwheelToDrawDuringAnimation.draw();}}}
|
|
||||||
function winwheelResize()
|
|
||||||
{let margin=40;if(typeof(winwheelToDrawDuringAnimation._responsiveMargin)!=='undefined'){margin=winwheelToDrawDuringAnimation._responsiveMargin;}
|
|
||||||
let width=window.innerWidth-margin;let minWidth=winwheelToDrawDuringAnimation._responsiveMinWidth;let minHeight=winwheelToDrawDuringAnimation._responsiveMinHeight;if(width<minWidth){width=minWidth;}else if(width>winwheelToDrawDuringAnimation._originalCanvasWidth){width=winwheelToDrawDuringAnimation._originalCanvasWidth;}
|
|
||||||
let percent=(width/winwheelToDrawDuringAnimation._originalCanvasWidth);winwheelToDrawDuringAnimation.canvas.width=(winwheelToDrawDuringAnimation._originalCanvasWidth*percent);if(winwheelToDrawDuringAnimation._responsiveScaleHeight){let height=(winwheelToDrawDuringAnimation._originalCanvasHeight*percent);if(height<minHeight){height=minHeight;}else if(height>winwheelToDrawDuringAnimation._originalCanvasHeight){height=winwheelToDrawDuringAnimation._originalCanvasHeight;}
|
|
||||||
winwheelToDrawDuringAnimation.canvas.height=height;}
|
|
||||||
winwheelToDrawDuringAnimation.scaleFactor=percent;winwheelToDrawDuringAnimation.draw();}
|
|
@ -1 +0,0 @@
|
|||||||
.elementor-443 .elementor-element.elementor-element-55a9332{padding:0}.elementor-443 .elementor-element.elementor-element-976a94c>.elementor-element-populated{padding:10px}.elementor-443 .elementor-element.elementor-element-bffad37 .hfe-copyright-wrapper{text-align:center}@media(max-width:1024px){.elementor-443 .elementor-element.elementor-element-55a9332{padding:20px}}@media(max-width:767px){.elementor-443 .elementor-element.elementor-element-bffad37 .hfe-copyright-wrapper{text-align:center}}
|
|
Binary file not shown.
Before Width: | Height: | Size: 300 B |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,65 +0,0 @@
|
|||||||
import clippy from '../clippy/dist/index.js'
|
|
||||||
|
|
||||||
const ClippyDemo = (function() {
|
|
||||||
const availableAgents = ['Bonzi', 'Clippy', 'F1', 'Genie', 'Genius', 'Links', 'Merlin', 'Peedy', 'Rocky', 'Rover']
|
|
||||||
const talks = [
|
|
||||||
'How can i help you?',
|
|
||||||
'Nice day!',
|
|
||||||
'Glad to meet you.',
|
|
||||||
'At your service',
|
|
||||||
'Helloo'
|
|
||||||
]
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
this.$el = document.querySelector('.my-clippy')
|
|
||||||
}
|
|
||||||
|
|
||||||
function nextAgent() {
|
|
||||||
// let agentName = availableAgents[Math.floor(Math.random() * (availableAgents.length))]
|
|
||||||
let agentName = 'Clippy';
|
|
||||||
if (!agentName) return;
|
|
||||||
|
|
||||||
clippy.load({
|
|
||||||
name: agentName,
|
|
||||||
selector: "my-clippy",
|
|
||||||
successCb: agent => {
|
|
||||||
window[agentName] = agent
|
|
||||||
agent.show();
|
|
||||||
|
|
||||||
// Speak on click and start
|
|
||||||
const speak = () => {
|
|
||||||
agent.speak('I am ' + agentName + ', ' + talks[~~(Math.random() * talks.length)])
|
|
||||||
agent.animate()
|
|
||||||
}
|
|
||||||
agent._el.addEventListener('click', () =>{
|
|
||||||
document.getElementById("legend-modal").style.display = "block";
|
|
||||||
return;
|
|
||||||
});
|
|
||||||
speak()
|
|
||||||
|
|
||||||
// Animate randomly
|
|
||||||
setInterval(() => {
|
|
||||||
agent.animate()
|
|
||||||
}, 3000 + (Math.random() * 4000))
|
|
||||||
setInterval(() => speak(), 15000 + (Math.random() * 4000));
|
|
||||||
speak()
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function destroy() {
|
|
||||||
this.$el.innerHTML = ''
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
init,
|
|
||||||
nextAgent,
|
|
||||||
destroy,
|
|
||||||
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
|
|
||||||
window.onload = () => {
|
|
||||||
ClippyDemo.init();
|
|
||||||
ClippyDemo.nextAgent();
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
.confetti{
|
|
||||||
max-width: 640px;
|
|
||||||
display: block;
|
|
||||||
margin: 0 auto;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
#wheel-container {
|
|
||||||
position: relative;
|
|
||||||
left: 30%;
|
|
||||||
}
|
|
||||||
.wheel-tab-section {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
#main {
|
|
||||||
background-image: url("./bgdottedeven.png");
|
|
||||||
background-color:#fff4f6;
|
|
||||||
/* Additional background styles if needed */
|
|
||||||
}
|
|
||||||
*{cursor: url("pincursorsh.png"), default;}
|
|
||||||
|
|
@ -1,180 +0,0 @@
|
|||||||
//-----------Var Inits--------------
|
|
||||||
canvas = document.getElementById("confetti");
|
|
||||||
ctx = canvas.getContext("2d");
|
|
||||||
canvas.width = window.innerWidth;
|
|
||||||
canvas.height = window.innerHeight;
|
|
||||||
cx = ctx.canvas.width / 2;
|
|
||||||
cy = ctx.canvas.height / 2;
|
|
||||||
|
|
||||||
let confetti = [];
|
|
||||||
const confettiCount = 300;
|
|
||||||
const gravity = 0.5;
|
|
||||||
const terminalVelocity = 5;
|
|
||||||
const drag = 0.075;
|
|
||||||
const colors = [
|
|
||||||
{ front: 'red', back: 'darkred' },
|
|
||||||
{ front: 'green', back: 'darkgreen' },
|
|
||||||
{ front: 'blue', back: 'darkblue' },
|
|
||||||
{ front: 'yellow', back: 'darkyellow' },
|
|
||||||
{ front: 'orange', back: 'darkorange' },
|
|
||||||
{ front: 'pink', back: 'darkpink' },
|
|
||||||
{ front: 'purple', back: 'darkpurple' },
|
|
||||||
{ front: 'turquoise', back: 'darkturquoise' }];
|
|
||||||
|
|
||||||
|
|
||||||
//-----------Functions--------------
|
|
||||||
resizeCanvas = () => {
|
|
||||||
canvas.width = window.innerWidth;
|
|
||||||
canvas.height = window.innerHeight;
|
|
||||||
cx = ctx.canvas.width / 2;
|
|
||||||
cy = ctx.canvas.height / 2;
|
|
||||||
};
|
|
||||||
|
|
||||||
randomRange = (min, max) => Math.random() * (max - min) + min;
|
|
||||||
|
|
||||||
initConfetti = () => {
|
|
||||||
for (let i = 0; i < confettiCount; i++) {
|
|
||||||
confetti.push({
|
|
||||||
color: colors[Math.floor(randomRange(0, colors.length))],
|
|
||||||
dimensions: {
|
|
||||||
x: randomRange(10, 20),
|
|
||||||
y: randomRange(10, 30) },
|
|
||||||
|
|
||||||
position: {
|
|
||||||
x: randomRange(0, canvas.width),
|
|
||||||
y: canvas.height - 1 },
|
|
||||||
|
|
||||||
rotation: randomRange(0, 2 * Math.PI),
|
|
||||||
scale: {
|
|
||||||
x: 1,
|
|
||||||
y: 1 },
|
|
||||||
|
|
||||||
velocity: {
|
|
||||||
x: randomRange(-25, 25),
|
|
||||||
y: randomRange(0, -50) } });
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//---------Render-----------
|
|
||||||
function render (canvas) {
|
|
||||||
|
|
||||||
let ctx = canvas.getContext('2d');
|
|
||||||
canvas.width = window.innerWidth;
|
|
||||||
canvas.height = window.innerHeight;
|
|
||||||
let cx = ctx.canvas.width / 2;
|
|
||||||
let cy = ctx.canvas.height / 2;
|
|
||||||
|
|
||||||
|
|
||||||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
||||||
|
|
||||||
confetti.forEach((confetto, index) => {
|
|
||||||
let width = confetto.dimensions.x * confetto.scale.x;
|
|
||||||
let height = confetto.dimensions.y * confetto.scale.y;
|
|
||||||
|
|
||||||
// Move canvas to position and rotate
|
|
||||||
ctx.translate(confetto.position.x, confetto.position.y);
|
|
||||||
ctx.rotate(confetto.rotation);
|
|
||||||
|
|
||||||
// Apply forces to velocity
|
|
||||||
confetto.velocity.x -= confetto.velocity.x * drag;
|
|
||||||
confetto.velocity.y = Math.min(confetto.velocity.y + gravity, terminalVelocity);
|
|
||||||
confetto.velocity.x += Math.random() > 0.5 ? Math.random() : -Math.random();
|
|
||||||
|
|
||||||
// Set position
|
|
||||||
confetto.position.x += confetto.velocity.x;
|
|
||||||
confetto.position.y += confetto.velocity.y;
|
|
||||||
|
|
||||||
// Delete confetti when out of frame
|
|
||||||
if (confetto.position.y >= canvas.height) confetti.splice(index, 1);
|
|
||||||
|
|
||||||
// Loop confetto x position
|
|
||||||
if (confetto.position.x > canvas.width) confetto.position.x = 0;
|
|
||||||
if (confetto.position.x < 0) confetto.position.x = canvas.width;
|
|
||||||
|
|
||||||
// Spin confetto by scaling y
|
|
||||||
confetto.scale.y = Math.cos(confetto.position.y * 0.1);
|
|
||||||
ctx.fillStyle = confetto.scale.y > 0 ? confetto.color.front : confetto.color.back;
|
|
||||||
|
|
||||||
// Draw confetti
|
|
||||||
ctx.fillRect(-width / 2, -height / 2, width, height);
|
|
||||||
|
|
||||||
// Reset transform matrix
|
|
||||||
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Fire off another round of confetti
|
|
||||||
// if (confetti.length <= 10) initConfetti();
|
|
||||||
|
|
||||||
window.requestAnimationFrame(function() {render(canvas); });
|
|
||||||
};
|
|
||||||
|
|
||||||
//---------Execution--------
|
|
||||||
// initConfetti();
|
|
||||||
// render();
|
|
||||||
|
|
||||||
//----------Resize----------
|
|
||||||
window.addEventListener('resize', function () {
|
|
||||||
resizeCanvas();
|
|
||||||
});
|
|
||||||
|
|
||||||
//------------Click------------
|
|
||||||
// window.addEventListener('click', function () {
|
|
||||||
// initConfetti();
|
|
||||||
// });
|
|
||||||
function renderAnimation() {
|
|
||||||
// Create a new canvas element
|
|
||||||
var canvas = document.createElement('canvas');
|
|
||||||
|
|
||||||
// Set the canvas position to be fixed, covering the entire viewport
|
|
||||||
canvas.style.position = 'fixed';
|
|
||||||
canvas.style.top = '0';
|
|
||||||
canvas.style.left = '0';
|
|
||||||
canvas.style.width = '100%';
|
|
||||||
canvas.style.height = '100%';
|
|
||||||
|
|
||||||
// Make sure the canvas is displayed on top of other elements
|
|
||||||
canvas.style.zIndex = '9999';
|
|
||||||
|
|
||||||
// Append the canvas to the document body
|
|
||||||
document.body.appendChild(canvas);
|
|
||||||
|
|
||||||
// Get the rendering context for the canvas
|
|
||||||
let ctx = canvas.getContext('2d');
|
|
||||||
|
|
||||||
// Perform your animation logic here using the ctx object
|
|
||||||
|
|
||||||
// Example animation: drawing a red circle that moves diagonally
|
|
||||||
var x = 0;
|
|
||||||
var y = 0;
|
|
||||||
var radius = 50;
|
|
||||||
|
|
||||||
initConfetti();
|
|
||||||
render(canvas);
|
|
||||||
|
|
||||||
// Add a delay before removing the canvas (adjust the delay time as needed)
|
|
||||||
setTimeout(function() {
|
|
||||||
// Remove the canvas from the document body
|
|
||||||
document.body.removeChild(canvas);
|
|
||||||
}, 8000); // Animation duration in milliseconds
|
|
||||||
}
|
|
||||||
|
|
||||||
function disableScroll() {
|
|
||||||
document.addEventListener('wheel', preventDefault);
|
|
||||||
document.addEventListener('touchmove', preventDefault);
|
|
||||||
document.addEventListener('keydown', preventDefault);
|
|
||||||
}
|
|
||||||
|
|
||||||
function enableScroll() {
|
|
||||||
document.removeEventListener('wheel', preventDefault);
|
|
||||||
document.removeEventListener('touchmove', preventDefault);
|
|
||||||
document.removeEventListener('keydown', preventDefault);
|
|
||||||
}
|
|
||||||
|
|
||||||
function preventDefault(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Call disableScroll() to disable scrolling
|
|
||||||
disableScroll();
|
|
@ -1,19 +0,0 @@
|
|||||||
var audioFiles = [];
|
|
||||||
var numAudioFiles = 14;
|
|
||||||
|
|
||||||
// Preload the audio files
|
|
||||||
for (var i = 1; i <= numAudioFiles; i++) {
|
|
||||||
var coro = new Audio("cheers/" + i + ".ogg");
|
|
||||||
audioFiles.push(coro);
|
|
||||||
}
|
|
||||||
|
|
||||||
function coro() {
|
|
||||||
// Generate a random index between 0 and the number of audio files
|
|
||||||
var randomIndex = Math.floor(Math.random() * numAudioFiles);
|
|
||||||
|
|
||||||
// Get the randomly selected audio from the array
|
|
||||||
var c = audioFiles[randomIndex];
|
|
||||||
|
|
||||||
// Play the audio
|
|
||||||
c.play();
|
|
||||||
}
|
|
2
bocciofila/frontend.min.js
vendored
2
bocciofila/frontend.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,56 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title></title>
|
|
||||||
<link rel="stylesheet" href="style2.css">
|
|
||||||
</head>
|
|
||||||
<body style="background-color:#fff4f6;" background="https://softheartclinic.neocities.org/Visuals/bgdottedeven.png">
|
|
||||||
<button id="startButton">Avvia il gioco</button>
|
|
||||||
|
|
||||||
<div id="gameContainer">
|
|
||||||
<video id="gameVideo" controls>
|
|
||||||
<source src="audiovideo.webm" type="video/mp4">
|
|
||||||
</video>
|
|
||||||
<button id="toggleButton">Fanculo Mancini, io mi drogo</button>
|
|
||||||
|
|
||||||
<div class="my-clippy" id="my-clippy"></div>
|
|
||||||
<div id="legend-modal" class="modal">
|
|
||||||
<div class="modal-content" bgcolor="#ffe5e9" style="background-color:#ffe5e9;">
|
|
||||||
<h2>Legenda</h2>
|
|
||||||
<ul>
|
|
||||||
<li>Horny: sei horny per Riccardo, gli metti la mano sulla coscia e non la lasci più andare</li>
|
|
||||||
<li>Egodeath: hai smesso di usare la prima persona singolare e plurale</li>
|
|
||||||
<li>Pappagallo: ripeti a pappagallo tutto quello che dice Riccardo</li>
|
|
||||||
<li>Gemello: ripeti tutte le azioni che Riccardo fa</li>
|
|
||||||
<li>Desiderio: Riccardo esprime un desiderio, tu lo realizzi</li>
|
|
||||||
<li>2 Desideri: Riccardo esprime due desideri, tu ne realizzi uno e fai il possibile per non</li>
|
|
||||||
<li>Schiavo: Riccarrdo farà la prima cosa che gli chiedi. Non devi chiedere con gentilezza</li>
|
|
||||||
<li>Niente nomi: amnesia collettiva, non ci ricordiamo i nostri nomi</li>
|
|
||||||
<li>Trivia</li>
|
|
||||||
<li>Complimento: fai un complimento a Riccardo. Non ho detto di non mentire</li>
|
|
||||||
<li>Strip: un indumento giù, e Riccardo segue</li>
|
|
||||||
<li>Flessioni: fai delle flessioni. Riccardo ne farà il doppio</li>
|
|
||||||
<li>Scelte sbagliate: è arrivato il momento di ricordare a Riccardo quali scelte</li>
|
|
||||||
<li>ha sbagliato nella vita</li>
|
|
||||||
<li>Coro: Riccardo ti insegna un coro</li>
|
|
||||||
<li>Selfie</li>
|
|
||||||
<li>Sexy selfie</li>
|
|
||||||
<li>USA: gli stati uniti sono un paese pericoloso. Fai la Cassandra</li>
|
|
||||||
<li>Culo al muro: tu e Riccardo vi odiate così tanto che tenete il culo attaccato</li>
|
|
||||||
<li>al muro, ai punti opposti della stanza</li>
|
|
||||||
<li>Verità: fai una domanda a Riccardo, deve rispondere sinceramente. Poi tocca a lui</li>
|
|
||||||
</ul>
|
|
||||||
<button id="close-button">Close</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="wheel"></div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<!-- <iframe id="gameIframe" src="./ruota.html" width="100%" height="100%" scrolling="no" frameborder="0"></iframe> -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script src="clippy.js" type="module"></script>
|
|
||||||
<script src="script.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,34 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title></title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
height: 100vh;
|
|
||||||
margin: 0;
|
|
||||||
background-color: #fff4f6;
|
|
||||||
}
|
|
||||||
|
|
||||||
#startButton {
|
|
||||||
cursor: pointer;
|
|
||||||
transform: scale(0.6);
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body background="bgdottedeven.png">
|
|
||||||
<a href="#" onclick="startGame();">
|
|
||||||
<img src="landingfull.png" alt="Start Game" id="startButton">
|
|
||||||
</a>
|
|
||||||
<script>
|
|
||||||
function startGame() {
|
|
||||||
// Redirect to another page
|
|
||||||
window.location.href = "/bocciofila/home.html";
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
2
bocciofila/jquery.cookie.min.js
vendored
2
bocciofila/jquery.cookie.min.js
vendored
@ -1,2 +0,0 @@
|
|||||||
/*! jquery.cookie v1.4.1 | MIT */
|
|
||||||
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?a(require("jquery")):a(jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});
|
|
5
bocciofila/jquery.min.js
vendored
5
bocciofila/jquery.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Before Width: | Height: | Size: 4.5 MiB |
@ -1,55 +0,0 @@
|
|||||||
import random
|
|
||||||
|
|
||||||
a = """La povertà è una brutta bestia ma ti fa scoprire la solidarietà.
|
|
||||||
Il tuo compagno di ponte Riccardo condivide un cicchetto di colluttorio con te"""
|
|
||||||
|
|
||||||
PENITENZE = [
|
|
||||||
"X punti",
|
|
||||||
"X punti per te e Riccardo",
|
|
||||||
"X punti per te e un altro infame",
|
|
||||||
"-X punti per Riccardo",
|
|
||||||
"-X punti per te e Riccardo",
|
|
||||||
"Sei ignorante, lanciagli il pezzo che hai appena estratto. Se non cade a terra, Ieso fa X punti",
|
|
||||||
"Sei horny per Riccardo e glielo devi far capire. Mano sulla coscia",
|
|
||||||
"Fai il pappagallo",
|
|
||||||
"Sei il gemello di Riccardo. Fai tutto quello che fa lui, meglio",
|
|
||||||
"Sei il gemello di Riccardo. Fai tutto quello che fa lui",
|
|
||||||
"Riccardo esprime un desiderio, tu lo realizzi",
|
|
||||||
"Riccardo esprime due desideri, tu ne realizzi uno e fai il possibile per non far avverare l'altro",
|
|
||||||
"Esprimi un desiderio, Riccardo lo avvererà",
|
|
||||||
"COLLUTTORIO",
|
|
||||||
"TRIVIA",
|
|
||||||
"Riccardo è la tua badante",
|
|
||||||
"Fai un complimento a Riccardo, un complimento falso?",
|
|
||||||
"Tu e Riccardo perdete un indumento",
|
|
||||||
"Fai delle flessioni. Riccardo ne farà il doppio",
|
|
||||||
"Sei un genitore severo, ricorda a Riccardo quale scelta sbagliata ha fatto nella vita",
|
|
||||||
"Ruba la sedia a Riccardo, lui sta in piedi per un po'",
|
|
||||||
"Fatti insegnare un coro",
|
|
||||||
"Fatti un selfie",
|
|
||||||
"Fatti mandare una sexy fotina col pelo",
|
|
||||||
"Fatti mandare vocalino sexy prima di andare a dormire stanotte",
|
|
||||||
"Gli USA sono un paese pericoloso. Spiegagli perchè farà una brutta fine",
|
|
||||||
]
|
|
||||||
|
|
||||||
PERIOD = 12
|
|
||||||
def perform_extraction(nround: int, requirements: set):
|
|
||||||
assert(nround < PERIOD)
|
|
||||||
assert(nround > 0)
|
|
||||||
|
|
||||||
range_ = 100 / (PERIOD - len(requirements)) * nround
|
|
||||||
r = random.uniform(0, 100)
|
|
||||||
if r < range_:
|
|
||||||
return random.choice(requirements)
|
|
||||||
else:
|
|
||||||
return random.choice(PENITENZE)
|
|
||||||
|
|
||||||
def advance(nround: int, last_choices: list):
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
# Requisiti:
|
|
||||||
# - ogni 12 estrazioni si deve garantire che almeno una di queste abbia risultato TRIVIA
|
|
||||||
# - ogni 12 estrazioni si deve garantire che almeno tre di queste abbiano risultato X
|
|
||||||
# - il risultato COLLUTTORIO può capitare solo una volta ogni 80 estrazioni
|
|
||||||
# - il risultato delle precedenti 6 estrazioni non si ripete, eccetto che per risultato X
|
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 72 KiB |
Binary file not shown.
Before Width: | Height: | Size: 309 B |
2
bocciofila/preloaded-modules.min.js
vendored
2
bocciofila/preloaded-modules.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,90 +0,0 @@
|
|||||||
document.addEventListener("DOMContentLoaded", function() {
|
|
||||||
// var startButton = document.getElementById("startButton");
|
|
||||||
|
|
||||||
// startButton.addEventListener("click", function() {
|
|
||||||
let fun = function() {
|
|
||||||
|
|
||||||
startButton.style.display = "none";
|
|
||||||
|
|
||||||
// Ottieni il riferimento al contenitore del gioco
|
|
||||||
var gameContainer = document.getElementById("gameContainer");
|
|
||||||
var ruota = document.getElementById("gameIframe");
|
|
||||||
|
|
||||||
// Mostra il contenitore del gioco
|
|
||||||
gameContainer.style.display = "block";
|
|
||||||
var ruota = document.getElementById("block");
|
|
||||||
|
|
||||||
// Ottieni il riferimento al video del gioco
|
|
||||||
var gameVideo = document.getElementById("gameVideo");
|
|
||||||
|
|
||||||
// Avvia il video
|
|
||||||
gameVideo.play();
|
|
||||||
|
|
||||||
// Aggiungi una classe CSS per far girare la ruota
|
|
||||||
gameContainer.classList.add("spin");
|
|
||||||
loadIframeWithTimeout();
|
|
||||||
};
|
|
||||||
fun();
|
|
||||||
});
|
|
||||||
|
|
||||||
function loadIframeWithTimeout() {
|
|
||||||
// Specify the timeout duration in milliseconds (e.g., 3000ms = 3 seconds)
|
|
||||||
var timeoutDuration = 0;
|
|
||||||
|
|
||||||
// Wait for the specified timeout
|
|
||||||
setTimeout(function() {
|
|
||||||
// Create the iframe element
|
|
||||||
var iframe = document.createElement('iframe');
|
|
||||||
|
|
||||||
// Set the source URL of the iframe
|
|
||||||
iframe.src = './ruota.html';
|
|
||||||
|
|
||||||
// Set the desired attributes for the iframe
|
|
||||||
iframe.width = '100%';
|
|
||||||
iframe.height = '100%';
|
|
||||||
iframe.frameBorder = '0';
|
|
||||||
// Apply CSS styles to cut the left part and center the iframe
|
|
||||||
iframe.style.position = 'absolute';
|
|
||||||
// iframe.style.left = '50%';
|
|
||||||
// iframe.style.transform = 'translateX(-50%)';
|
|
||||||
|
|
||||||
// Append the iframe to the bottom of the document body
|
|
||||||
document.body.appendChild(iframe);
|
|
||||||
console.log("loaded");
|
|
||||||
}, timeoutDuration);
|
|
||||||
}
|
|
||||||
function disableScroll() {
|
|
||||||
document.addEventListener('wheel', preventDefault);
|
|
||||||
document.addEventListener('touchmove', preventDefault);
|
|
||||||
document.addEventListener('keydown', preventDefault);
|
|
||||||
}
|
|
||||||
|
|
||||||
function enableScroll() {
|
|
||||||
document.removeEventListener('wheel', preventDefault);
|
|
||||||
document.removeEventListener('touchmove', preventDefault);
|
|
||||||
document.removeEventListener('keydown', preventDefault);
|
|
||||||
}
|
|
||||||
|
|
||||||
function preventDefault(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Call disableScroll() to disable scrolling
|
|
||||||
disableScroll();
|
|
||||||
var toggleButton = document.getElementById('toggleButton');
|
|
||||||
var contentDiv = document.getElementById('gameVideo');
|
|
||||||
|
|
||||||
toggleButton.addEventListener('click', function() {
|
|
||||||
if (contentDiv.style.display === 'none') {
|
|
||||||
contentDiv.style.display = 'block';
|
|
||||||
} else {
|
|
||||||
contentDiv.style.display = 'none';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// document.getElementById("legend-button").addEventListener("click", function() {
|
|
||||||
// document.getElementById("legend-modal").style.display = "block";
|
|
||||||
// });
|
|
||||||
|
|
||||||
document.getElementById("close-button").addEventListener("click", function() {
|
|
||||||
document.getElementById("legend-modal").style.display = "none";
|
|
||||||
});
|
|
1
bocciofila/script.min.js
vendored
1
bocciofila/script.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,71 +0,0 @@
|
|||||||
#gameContainer {
|
|
||||||
width: 400px;
|
|
||||||
height: auto;
|
|
||||||
margin: 0 auto; /* Centers the container horizontally */
|
|
||||||
display: none; /* Hides the container by default */
|
|
||||||
}
|
|
||||||
html, body {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #gameContainer { */
|
|
||||||
/* position: absolute; */
|
|
||||||
/* top: 0; */
|
|
||||||
/* left: 0; */
|
|
||||||
/* width: 100%; */
|
|
||||||
/* height: 100%; */
|
|
||||||
/* } */
|
|
||||||
|
|
||||||
#gameIframe {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
border: none;
|
|
||||||
/* display: none; /\* Hides the container by default *\/ */
|
|
||||||
margin: 0 auto; /* Centers the container horizontally */
|
|
||||||
}
|
|
||||||
.modal {
|
|
||||||
display: none;
|
|
||||||
position: fixed;
|
|
||||||
z-index: 999;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
overflow: auto;
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-content {
|
|
||||||
background-color: #fefefe;
|
|
||||||
margin: 20% auto;
|
|
||||||
padding: 20px;
|
|
||||||
border: 1px solid #888;
|
|
||||||
width: 80%;
|
|
||||||
max-width: 800px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-button {
|
|
||||||
background: none;
|
|
||||||
border: none;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#legend-button img {
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
*{cursor: url("pincursorsh.png"), default;}
|
|
||||||
#my-clippy {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#my-clippy {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
padding: 100px;
|
|
||||||
}
|
|
Binary file not shown.
@ -1,64 +0,0 @@
|
|||||||
|
|
||||||
import clippy from '../dist/index.js'
|
|
||||||
|
|
||||||
const ClippyDemo = (function() {
|
|
||||||
const availableAgents = ['Bonzi', 'Clippy', 'F1', 'Genie', 'Genius', 'Links', 'Merlin', 'Peedy', 'Rocky', 'Rover']
|
|
||||||
const talks = [
|
|
||||||
'How can i help you?',
|
|
||||||
'Nice day!',
|
|
||||||
'Glad to meet you.',
|
|
||||||
'At your service',
|
|
||||||
'Helloo'
|
|
||||||
]
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
this.$el = document.querySelector('.my-clippy')
|
|
||||||
}
|
|
||||||
|
|
||||||
function nextAgent() {
|
|
||||||
let agentName = availableAgents[Math.floor(Math.random() * (availableAgents.length))]
|
|
||||||
if (!agentName) return;
|
|
||||||
|
|
||||||
clippy.load({
|
|
||||||
name: agentName,
|
|
||||||
selector: "my-clippy",
|
|
||||||
successCb: agent => {
|
|
||||||
window[agentName] = agent
|
|
||||||
agent.show();
|
|
||||||
|
|
||||||
// Speak on click and start
|
|
||||||
const speak = () => {
|
|
||||||
agent.speak('I am ' + agentName + ', ' + talks[~~(Math.random() * talks.length)])
|
|
||||||
agent.animate()
|
|
||||||
}
|
|
||||||
agent._el.addEventListener('click', () => speak());
|
|
||||||
speak()
|
|
||||||
|
|
||||||
// Animate randomly
|
|
||||||
setInterval(() => {
|
|
||||||
agent.animate()
|
|
||||||
}, 3000 + (Math.random() * 4000))
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function destroy() {
|
|
||||||
this.$el.innerHTML = ''
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
init,
|
|
||||||
nextAgent,
|
|
||||||
destroy,
|
|
||||||
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
|
|
||||||
|
|
||||||
window.onload = () => {
|
|
||||||
ClippyDemo.init();
|
|
||||||
ClippyDemo.nextAgent();
|
|
||||||
document.getElementById('next-agent').addEventListener('click', () => {
|
|
||||||
ClippyDemo.destroy();
|
|
||||||
ClippyDemo.nextAgent();
|
|
||||||
});
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style>
|
|
||||||
html {
|
|
||||||
background: url('http://wallpapercave.com/wp/7VNksl0.jpg') no-repeat center center fixed;
|
|
||||||
-webkit-background-size: cover;
|
|
||||||
-moz-background-size: cover;
|
|
||||||
-o-background-size: cover;
|
|
||||||
background-size: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
#next-agent {
|
|
||||||
font-size: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.my-clippy {
|
|
||||||
padding-top: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<script src="./demo.js" type="module"></script>
|
|
||||||
<button id="next-agent">Random agent</button>
|
|
||||||
<div class="my-clippy"></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
117
clippy/dist/agent.d.ts
vendored
117
clippy/dist/agent.d.ts
vendored
@ -1,117 +0,0 @@
|
|||||||
import { AgentWrapper } from './types';
|
|
||||||
export interface AgentOptions {
|
|
||||||
agent: AgentWrapper;
|
|
||||||
selector?: string;
|
|
||||||
}
|
|
||||||
export default class Agent {
|
|
||||||
private _queue;
|
|
||||||
private _el;
|
|
||||||
private _animator;
|
|
||||||
private _balloon;
|
|
||||||
private _hidden;
|
|
||||||
private _idleDfd?;
|
|
||||||
private _offset;
|
|
||||||
private _dragUpdateLoop?;
|
|
||||||
private _targetX?;
|
|
||||||
private _targetY?;
|
|
||||||
private _moveHandle?;
|
|
||||||
private _upHandle?;
|
|
||||||
constructor(options: AgentOptions);
|
|
||||||
/***
|
|
||||||
*
|
|
||||||
* @param {Number} x
|
|
||||||
* @param {Number} y
|
|
||||||
*/
|
|
||||||
gestureAt(x: number, y: number): boolean;
|
|
||||||
/***
|
|
||||||
*
|
|
||||||
* @param {Boolean=} fast
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
hide(fast: boolean, callback: () => void): void;
|
|
||||||
moveTo(x: number, y: number, duration: number): void;
|
|
||||||
private _playInternal;
|
|
||||||
play(animation: any, timeout?: number, cb?: Function): boolean;
|
|
||||||
/***
|
|
||||||
*
|
|
||||||
* @param {Boolean=} fast
|
|
||||||
*/
|
|
||||||
show(fast?: boolean): boolean | undefined;
|
|
||||||
/***
|
|
||||||
*
|
|
||||||
* @param {String} text
|
|
||||||
*/
|
|
||||||
speak(text: string, hold?: boolean): void;
|
|
||||||
/***
|
|
||||||
* Close the current balloon
|
|
||||||
*/
|
|
||||||
closeBalloon(): void;
|
|
||||||
delay(time: number): void;
|
|
||||||
/***
|
|
||||||
* Skips the current animation
|
|
||||||
*/
|
|
||||||
stopCurrent(): void;
|
|
||||||
stop(): void;
|
|
||||||
/***
|
|
||||||
*
|
|
||||||
* @param {String} name
|
|
||||||
* @returns {Boolean}
|
|
||||||
*/
|
|
||||||
hasAnimation(name: string): boolean;
|
|
||||||
/***
|
|
||||||
* Gets a list of animation names
|
|
||||||
*
|
|
||||||
* @return {Array.<string>}
|
|
||||||
*/
|
|
||||||
animations(): string[];
|
|
||||||
/***
|
|
||||||
* Play a random animation
|
|
||||||
* @return {Deferred}
|
|
||||||
*/
|
|
||||||
animate(): any;
|
|
||||||
/**************************** Utils ************************************/
|
|
||||||
/***
|
|
||||||
*
|
|
||||||
* @param {Number} x
|
|
||||||
* @param {Number} y
|
|
||||||
* @return {String}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
private _getDirection;
|
|
||||||
/**************************** Queue and Idle handling ************************************/
|
|
||||||
/***
|
|
||||||
* Handle empty queue.
|
|
||||||
* We need to transition the animation to an idle state
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
private _onQueueEmpty;
|
|
||||||
private _onIdleComplete;
|
|
||||||
/***
|
|
||||||
* Is the current animation is Idle?
|
|
||||||
* @return {Boolean}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
private _isIdleAnimation;
|
|
||||||
/**
|
|
||||||
* Gets a random Idle animation
|
|
||||||
* @return {String}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
private _getIdleAnimation;
|
|
||||||
/**************************** Events ************************************/
|
|
||||||
private _setupEvents;
|
|
||||||
private _onDoubleClick;
|
|
||||||
reposition(): void;
|
|
||||||
private _onMouseDown;
|
|
||||||
/**************************** Drag ************************************/
|
|
||||||
private _startDrag;
|
|
||||||
private _calculateClickOffset;
|
|
||||||
private _updateLocation;
|
|
||||||
private _dragMove;
|
|
||||||
private _finishDrag;
|
|
||||||
private _addToQueue;
|
|
||||||
/**************************** Pause and Resume ************************************/
|
|
||||||
pause(): void;
|
|
||||||
resume(): void;
|
|
||||||
}
|
|
||||||
//# sourceMappingURL=agent.d.ts.map
|
|
1
clippy/dist/agent.d.ts.map
vendored
1
clippy/dist/agent.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,OAAO,CAAuD;IACtE,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAC,CAA4B;IAChD,OAAO,CAAC,SAAS,CAAC,CAA4B;gBAEjC,OAAO,EAAE,YAAY;IAsBlC;;;;OAIG;IACH,SAAS,CAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAS/B;;;;OAIG;IACH,IAAI,CAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI;IAoBzC,MAAM,CAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAsD9C,OAAO,CAAC,aAAa;IAYrB,IAAI,CAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ;IAgCrD;;;OAGG;IACH,IAAI,CAAE,IAAI,GAAE,OAAc;IA0B1B;;;OAGG;IACH,KAAK,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAe;IAO1C;;OAEG;IACH,YAAY;IAIZ,KAAK,CAAE,IAAI,EAAE,MAAM;IASnB;;OAEG;IACH,WAAW;IAMX,IAAI;IAOJ;;;;OAIG;IACH,YAAY,CAAE,IAAI,EAAE,MAAM;IAI1B;;;;OAIG;IACH,UAAU;IAIV;;;OAGG;IACH,OAAO,IAAK,GAAG;IAUf,yEAAyE;IAEzE;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAwBrB,2FAA2F;IAE3F;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,eAAe;IAMvB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAezB,0EAA0E;IAE1E,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,cAAc;IAMtB,UAAU;IA+BV,OAAO,CAAC,YAAY;IAMpB,wEAAwE;IAExE,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,WAAW;IAKnB,oFAAoF;IAEpF,KAAK;IAML,MAAM;CAKT"}
|
|
2
clippy/dist/agents/Bonzi.js
vendored
2
clippy/dist/agents/Bonzi.js
vendored
File diff suppressed because one or more lines are too long
1
clippy/dist/agents/Bonzi.js.map
vendored
1
clippy/dist/agents/Bonzi.js.map
vendored
File diff suppressed because one or more lines are too long
3
clippy/dist/agents/Bonzi/agent.d.ts
vendored
3
clippy/dist/agents/Bonzi/agent.d.ts
vendored
@ -1,3 +0,0 @@
|
|||||||
import { AgentConfig } from "../../types";
|
|
||||||
export declare const agent: AgentConfig;
|
|
||||||
//# sourceMappingURL=agent.d.ts.map
|
|
1
clippy/dist/agents/Bonzi/agent.d.ts.map
vendored
1
clippy/dist/agents/Bonzi/agent.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/Bonzi/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,WAyxBnB,CAAA"}
|
|
4
clippy/dist/agents/Bonzi/index.d.ts
vendored
4
clippy/dist/agents/Bonzi/index.d.ts
vendored
@ -1,4 +0,0 @@
|
|||||||
import { AgentWrapper } from '../../types';
|
|
||||||
declare const Bonzi: AgentWrapper;
|
|
||||||
export default Bonzi;
|
|
||||||
//# sourceMappingURL=index.d.ts.map
|
|
1
clippy/dist/agents/Bonzi/index.d.ts.map
vendored
1
clippy/dist/agents/Bonzi/index.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/Bonzi/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,QAAA,MAAM,KAAK,EAAE,YAMZ,CAAA;AAED,eAAe,KAAK,CAAC"}
|
|
4
clippy/dist/agents/Bonzi/sounds-mp3.d.ts
vendored
4
clippy/dist/agents/Bonzi/sounds-mp3.d.ts
vendored
@ -1,4 +0,0 @@
|
|||||||
export declare const soundMp3: {
|
|
||||||
"1": string;
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=sounds-mp3.d.ts.map
|
|
1
clippy/dist/agents/Bonzi/sounds-mp3.d.ts.map
vendored
1
clippy/dist/agents/Bonzi/sounds-mp3.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"sounds-mp3.d.ts","sourceRoot":"","sources":["../../../src/agents/Bonzi/sounds-mp3.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;CAA8huC,CAAA"}
|
|
10
clippy/dist/agents/Bonzi/sounds-ogg.d.ts
vendored
10
clippy/dist/agents/Bonzi/sounds-ogg.d.ts
vendored
@ -1,10 +0,0 @@
|
|||||||
export declare const soundOgg: {
|
|
||||||
'1': string;
|
|
||||||
'2': string;
|
|
||||||
'3': string;
|
|
||||||
'4': string;
|
|
||||||
'5': string;
|
|
||||||
'6': string;
|
|
||||||
'7': string;
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=sounds-ogg.d.ts.map
|
|
1
clippy/dist/agents/Bonzi/sounds-ogg.d.ts.map
vendored
1
clippy/dist/agents/Bonzi/sounds-ogg.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"sounds-ogg.d.ts","sourceRoot":"","sources":["../../../src/agents/Bonzi/sounds-ogg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;CAA2j0E,CAAA"}
|
|
2
clippy/dist/agents/Clippy.js
vendored
2
clippy/dist/agents/Clippy.js
vendored
File diff suppressed because one or more lines are too long
1
clippy/dist/agents/Clippy.js.map
vendored
1
clippy/dist/agents/Clippy.js.map
vendored
File diff suppressed because one or more lines are too long
3
clippy/dist/agents/Clippy/agent.d.ts
vendored
3
clippy/dist/agents/Clippy/agent.d.ts
vendored
@ -1,3 +0,0 @@
|
|||||||
import { AgentConfig } from "../../types";
|
|
||||||
export declare const agent: AgentConfig;
|
|
||||||
//# sourceMappingURL=agent.d.ts.map
|
|
1
clippy/dist/agents/Clippy/agent.d.ts.map
vendored
1
clippy/dist/agents/Clippy/agent.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/Clippy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,WAo9CnB,CAAA"}
|
|
4
clippy/dist/agents/Clippy/index.d.ts
vendored
4
clippy/dist/agents/Clippy/index.d.ts
vendored
@ -1,4 +0,0 @@
|
|||||||
import { AgentWrapper } from '../../types';
|
|
||||||
declare const Clippy: AgentWrapper;
|
|
||||||
export default Clippy;
|
|
||||||
//# sourceMappingURL=index.d.ts.map
|
|
1
clippy/dist/agents/Clippy/index.d.ts.map
vendored
1
clippy/dist/agents/Clippy/index.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/Clippy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,QAAA,MAAM,MAAM,EAAE,YAMb,CAAA;AAED,eAAe,MAAM,CAAC"}
|
|
18
clippy/dist/agents/Clippy/sounds-mp3.d.ts
vendored
18
clippy/dist/agents/Clippy/sounds-mp3.d.ts
vendored
@ -1,18 +0,0 @@
|
|||||||
export declare const soundMp3: {
|
|
||||||
'1': string;
|
|
||||||
'2': string;
|
|
||||||
'3': string;
|
|
||||||
'4': string;
|
|
||||||
'5': string;
|
|
||||||
'6': string;
|
|
||||||
'7': string;
|
|
||||||
'8': string;
|
|
||||||
'9': string;
|
|
||||||
'10': string;
|
|
||||||
'11': string;
|
|
||||||
'12': string;
|
|
||||||
'13': string;
|
|
||||||
'14': string;
|
|
||||||
'15': string;
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=sounds-mp3.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"sounds-mp3.d.ts","sourceRoot":"","sources":["../../../src/agents/Clippy/sounds-mp3.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;CAAwmyB,CAAA"}
|
|
18
clippy/dist/agents/Clippy/sounds-ogg.d.ts
vendored
18
clippy/dist/agents/Clippy/sounds-ogg.d.ts
vendored
@ -1,18 +0,0 @@
|
|||||||
export declare const soundOgg: {
|
|
||||||
'1': string;
|
|
||||||
'2': string;
|
|
||||||
'3': string;
|
|
||||||
'4': string;
|
|
||||||
'5': string;
|
|
||||||
'6': string;
|
|
||||||
'7': string;
|
|
||||||
'8': string;
|
|
||||||
'9': string;
|
|
||||||
'10': string;
|
|
||||||
'11': string;
|
|
||||||
'12': string;
|
|
||||||
'13': string;
|
|
||||||
'14': string;
|
|
||||||
'15': string;
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=sounds-ogg.d.ts.map
|
|
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"sounds-ogg.d.ts","sourceRoot":"","sources":["../../../src/agents/Clippy/sounds-ogg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;CAAigoF,CAAA"}
|
|
2
clippy/dist/agents/F1.js
vendored
2
clippy/dist/agents/F1.js
vendored
File diff suppressed because one or more lines are too long
1
clippy/dist/agents/F1.js.map
vendored
1
clippy/dist/agents/F1.js.map
vendored
File diff suppressed because one or more lines are too long
3
clippy/dist/agents/F1/agent.d.ts
vendored
3
clippy/dist/agents/F1/agent.d.ts
vendored
@ -1,3 +0,0 @@
|
|||||||
import { AgentConfig } from "../../types";
|
|
||||||
export declare const agent: AgentConfig;
|
|
||||||
//# sourceMappingURL=agent.d.ts.map
|
|
1
clippy/dist/agents/F1/agent.d.ts.map
vendored
1
clippy/dist/agents/F1/agent.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/F1/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,WA8tDnB,CAAA"}
|
|
4
clippy/dist/agents/F1/index.d.ts
vendored
4
clippy/dist/agents/F1/index.d.ts
vendored
@ -1,4 +0,0 @@
|
|||||||
import { AgentWrapper } from '../../types';
|
|
||||||
declare const F1: AgentWrapper;
|
|
||||||
export default F1;
|
|
||||||
//# sourceMappingURL=index.d.ts.map
|
|
1
clippy/dist/agents/F1/index.d.ts.map
vendored
1
clippy/dist/agents/F1/index.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/F1/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,QAAA,MAAM,EAAE,EAAE,YAMT,CAAA;AAED,eAAe,EAAE,CAAC"}
|
|
34
clippy/dist/agents/F1/sounds-mp3.d.ts
vendored
34
clippy/dist/agents/F1/sounds-mp3.d.ts
vendored
@ -1,34 +0,0 @@
|
|||||||
export declare const soundMp3: {
|
|
||||||
'1': string;
|
|
||||||
'2': string;
|
|
||||||
'3': string;
|
|
||||||
'4': string;
|
|
||||||
'5': string;
|
|
||||||
'6': string;
|
|
||||||
'7': string;
|
|
||||||
'8': string;
|
|
||||||
'9': string;
|
|
||||||
'10': string;
|
|
||||||
'11': string;
|
|
||||||
'12': string;
|
|
||||||
'13': string;
|
|
||||||
'14': string;
|
|
||||||
'15': string;
|
|
||||||
'16': string;
|
|
||||||
'17': string;
|
|
||||||
'18': string;
|
|
||||||
'19': string;
|
|
||||||
'20': string;
|
|
||||||
'21': string;
|
|
||||||
'22': string;
|
|
||||||
'23': string;
|
|
||||||
'24': string;
|
|
||||||
'25': string;
|
|
||||||
'26': string;
|
|
||||||
'27': string;
|
|
||||||
'28': string;
|
|
||||||
'29': string;
|
|
||||||
'30': string;
|
|
||||||
'31': string;
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=sounds-mp3.d.ts.map
|
|
1
clippy/dist/agents/F1/sounds-mp3.d.ts.map
vendored
1
clippy/dist/agents/F1/sounds-mp3.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"sounds-mp3.d.ts","sourceRoot":"","sources":["../../../src/agents/F1/sounds-mp3.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAw9pG,CAAA"}
|
|
34
clippy/dist/agents/F1/sounds-ogg.d.ts
vendored
34
clippy/dist/agents/F1/sounds-ogg.d.ts
vendored
@ -1,34 +0,0 @@
|
|||||||
export declare const soundOgg: {
|
|
||||||
'1': string;
|
|
||||||
'2': string;
|
|
||||||
'3': string;
|
|
||||||
'4': string;
|
|
||||||
'5': string;
|
|
||||||
'6': string;
|
|
||||||
'7': string;
|
|
||||||
'8': string;
|
|
||||||
'9': string;
|
|
||||||
'10': string;
|
|
||||||
'11': string;
|
|
||||||
'12': string;
|
|
||||||
'13': string;
|
|
||||||
'14': string;
|
|
||||||
'15': string;
|
|
||||||
'16': string;
|
|
||||||
'17': string;
|
|
||||||
'18': string;
|
|
||||||
'19': string;
|
|
||||||
'20': string;
|
|
||||||
'21': string;
|
|
||||||
'22': string;
|
|
||||||
'23': string;
|
|
||||||
'24': string;
|
|
||||||
'25': string;
|
|
||||||
'26': string;
|
|
||||||
'27': string;
|
|
||||||
'28': string;
|
|
||||||
'29': string;
|
|
||||||
'30': string;
|
|
||||||
'31': string;
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=sounds-ogg.d.ts.map
|
|
1
clippy/dist/agents/F1/sounds-ogg.d.ts.map
vendored
1
clippy/dist/agents/F1/sounds-ogg.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"sounds-ogg.d.ts","sourceRoot":"","sources":["../../../src/agents/F1/sounds-ogg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAqx/P,CAAA"}
|
|
2
clippy/dist/agents/Genie.js
vendored
2
clippy/dist/agents/Genie.js
vendored
File diff suppressed because one or more lines are too long
1
clippy/dist/agents/Genie.js.map
vendored
1
clippy/dist/agents/Genie.js.map
vendored
File diff suppressed because one or more lines are too long
3
clippy/dist/agents/Genie/agent.d.ts
vendored
3
clippy/dist/agents/Genie/agent.d.ts
vendored
@ -1,3 +0,0 @@
|
|||||||
import { AgentConfig } from "../../types";
|
|
||||||
export declare const agent: AgentConfig;
|
|
||||||
//# sourceMappingURL=agent.d.ts.map
|
|
1
clippy/dist/agents/Genie/agent.d.ts.map
vendored
1
clippy/dist/agents/Genie/agent.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/Genie/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,WAA4pkE,CAAA"}
|
|
4
clippy/dist/agents/Genie/index.d.ts
vendored
4
clippy/dist/agents/Genie/index.d.ts
vendored
@ -1,4 +0,0 @@
|
|||||||
import { AgentWrapper } from '../../types';
|
|
||||||
declare const Genie: AgentWrapper;
|
|
||||||
export default Genie;
|
|
||||||
//# sourceMappingURL=index.d.ts.map
|
|
1
clippy/dist/agents/Genie/index.d.ts.map
vendored
1
clippy/dist/agents/Genie/index.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/Genie/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,QAAA,MAAM,KAAK,EAAE,YAMZ,CAAA;AAED,eAAe,KAAK,CAAC"}
|
|
17
clippy/dist/agents/Genie/sounds-mp3.d.ts
vendored
17
clippy/dist/agents/Genie/sounds-mp3.d.ts
vendored
@ -1,17 +0,0 @@
|
|||||||
export declare const soundMp3: {
|
|
||||||
'1': string;
|
|
||||||
'2': string;
|
|
||||||
'3': string;
|
|
||||||
'4': string;
|
|
||||||
'5': string;
|
|
||||||
'6': string;
|
|
||||||
'7': string;
|
|
||||||
'8': string;
|
|
||||||
'9': string;
|
|
||||||
'10': string;
|
|
||||||
'11': string;
|
|
||||||
'12': string;
|
|
||||||
'13': string;
|
|
||||||
'14': string;
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=sounds-mp3.d.ts.map
|
|
1
clippy/dist/agents/Genie/sounds-mp3.d.ts.map
vendored
1
clippy/dist/agents/Genie/sounds-mp3.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"sounds-mp3.d.ts","sourceRoot":"","sources":["../../../src/agents/Genie/sounds-mp3.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CAAiw8B,CAAA"}
|
|
17
clippy/dist/agents/Genie/sounds-ogg.d.ts
vendored
17
clippy/dist/agents/Genie/sounds-ogg.d.ts
vendored
@ -1,17 +0,0 @@
|
|||||||
export declare const soundOgg: {
|
|
||||||
'1': string;
|
|
||||||
'2': string;
|
|
||||||
'3': string;
|
|
||||||
'4': string;
|
|
||||||
'5': string;
|
|
||||||
'6': string;
|
|
||||||
'7': string;
|
|
||||||
'8': string;
|
|
||||||
'9': string;
|
|
||||||
'10': string;
|
|
||||||
'11': string;
|
|
||||||
'12': string;
|
|
||||||
'13': string;
|
|
||||||
'14': string;
|
|
||||||
};
|
|
||||||
//# sourceMappingURL=sounds-ogg.d.ts.map
|
|
1
clippy/dist/agents/Genie/sounds-ogg.d.ts.map
vendored
1
clippy/dist/agents/Genie/sounds-ogg.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"sounds-ogg.d.ts","sourceRoot":"","sources":["../../../src/agents/Genie/sounds-ogg.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;CAA+h7F,CAAA"}
|
|
2
clippy/dist/agents/Genius.js
vendored
2
clippy/dist/agents/Genius.js
vendored
File diff suppressed because one or more lines are too long
1
clippy/dist/agents/Genius.js.map
vendored
1
clippy/dist/agents/Genius.js.map
vendored
File diff suppressed because one or more lines are too long
3
clippy/dist/agents/Genius/agent.d.ts
vendored
3
clippy/dist/agents/Genius/agent.d.ts
vendored
@ -1,3 +0,0 @@
|
|||||||
import { AgentConfig } from "../../types";
|
|
||||||
export declare const agent: AgentConfig;
|
|
||||||
//# sourceMappingURL=agent.d.ts.map
|
|
1
clippy/dist/agents/Genius/agent.d.ts.map
vendored
1
clippy/dist/agents/Genius/agent.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agents/Genius/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,KAAK,EAAE,WAA03hF,CAAA"}
|
|
4
clippy/dist/agents/Genius/index.d.ts
vendored
4
clippy/dist/agents/Genius/index.d.ts
vendored
@ -1,4 +0,0 @@
|
|||||||
import { AgentWrapper } from '../../types';
|
|
||||||
declare const Genius: AgentWrapper;
|
|
||||||
export default Genius;
|
|
||||||
//# sourceMappingURL=index.d.ts.map
|
|
1
clippy/dist/agents/Genius/index.d.ts.map
vendored
1
clippy/dist/agents/Genius/index.d.ts.map
vendored
@ -1 +0,0 @@
|
|||||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/Genius/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,QAAA,MAAM,MAAM,EAAE,YAMb,CAAA;AAED,eAAe,MAAM,CAAC"}
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user