[GUI] Fruit & Co

Antony Courtney antony@apocalypse.org
Wed, 19 Feb 2003 09:27:33 -0500


This is a multi-part message in MIME format.
--------------010404080007000902000102
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Hi George,

Appologies for taking a little while to reply.  I actually finished the 
game a few days after you sent your message, but was travelling last 
week and away from my email.

George Russell wrote:
> I have to say I'm very sceptical about things like Fruit which rely on reactive
> animation, ever since I set our students an exercise implementing a simple
> space-invaders game in such a system, and had no end of a job producing an
> example solution.  Things like getting an alien spaceship to move slowly downwards,
> moving randomly to the left and right, and bouncing off the walls, turned out to
> be a major headache.  Also I think I had to use "error" to get the message out to
> the outside world that the aliens had won.  

I'm sorry to hear you had such unfortunate experiences using reactive 
animation.  However, I'd like to make just a few points in defense of 
reactive animation (and those of us who work on such systems):

First, you don't mention which particular reactive animation system you 
were using for your class.  Were the problems you encountered specific 
issues with the implementation you were using, or were they deeper 
problems with the whole conceptual framework of reactive animation? 
Since you don't really clarify what the specific problems were, it's 
hard to tell.

Second, I think it's important to remember that all of the 
implementations of reactive animation (and many of the other more 
interesting software systems available in the f.p. community) that I 
know of are essentially research prototypes in varying stages of 
maturity.  While negative experiences with research prototypes are 
unpleasant, they also present an opportunity.  If you clearly articulate 
the problems you encounter it allows you or others to either (a) 
conclude definitively that the underlying idea is fundamentally flawed, 
or (preferably) (b) expand either the idea or the implementations to 
address your specific problems.  As it stands, though, your message 
seems to me to be a bit like throwing up your hands and concluding that 
Operating Systems are a bad idea because Windows crashed once.  An 
unfortunate and frustrating experience, to be sure, but it might not 
justify abandoning the whole idea.

Finally, functional reactive programming, like functional programming or 
object-oriented programming or any other new programming paradigm or 
programming language, is really about a new way of thinking.  My 
experience is that when experienced programmers learn a new programming 
paradigm, the new paradigm often seems disorienting, uncomfortable, 
awkward and counter-intuitive at first, because it has some new or 
different way of doing things that may be very different from what the 
programmer is used to from previous systems.  Hopefully, after enough 
experience, one eventually learns to think directly in the new model, 
instead of trying to transliterate every concept back into the old way 
of doing things.

> My suspicion is that reactive animation
 > works very nicely for the examples constructed by reactive animation
 > folk, but not for my examples.
 >
> I wonder how you would do it?  A translation of the exercise I set, without the hints
> we had to put in, is as follows:
> [...]

Working source code for SpaceInvaders in Fruit (along with a few 
screenshots) is attached to this message.  The invaders randomly change 
direction, bounce off the walls, accelerate as they travel down the 
screen, and die when hit by a bullet, as you specified.  When the game 
is over, this fact and the score are overlayed on a snapshot of the game 
in progress, and the user can play again by clicking the mouse.

This took me about a day to implement.  Since this example is 
fundamentally similar to the bouncing balls example and lots of other 
games of this sort, I factored out the common code into a small (~ 125 
lines) library for managing a dynamic collection of simulated entities, 
much of which is copied from our "FRP, Continued" paper.  The rest of 
the implementation of SpaceInvaders comes out to about 400 lines of 
code, the bulk of which is taken up by graphics, comments, and the data 
type and projection functions for the simulation state.  I found it 
reasonably natural to develop the invaders and the gun as signal 
functions (which can be tested and debugged independently of the rest of 
the game), and I wrote functions to specify when signal functions are 
added to or removed from the time-varying collection that comprises the 
simulation according to the rules of the game.

If anyone is interested in actually running the code, I've made a new 
release of Fruit available (at http://haskell.org/fruit ) that includes 
this example in the directory "examples/SpaceInvaders".

	-antony

-- 
Antony Courtney
Grad. Student, Dept. of Computer Science, Yale University
antony@apocalypse.org          http://www.apocalypse.org/pub/u/antony

--------------010404080007000902000102
Content-Type: image/jpeg;
 name="playing.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="playing.jpg"

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
pqKaimopqKaimopqKaimopqKaimopqKaimopqKaimopqKaimopqKaimopqKaimopqKaimopq
KaimopqKaimjQ85YQNUkYTRobNkAEPgWv+uBWL//2gAIAQIDAT8hsBMpjK8IJySGBaTgGhIv
IEnDeBmmfb7WfZZ9vtZ9ln2Wbb7WbZZtvtZtlm2Wbb7WbZZtlm2WbZZtlm2WbZZtlm2WbZZt
vtZtlm2+1m2WbZZtlm2WbZZtlm2WbZZtlm2WbZZtlm2WbZZtlm2WbZZtln2WfZZ9ln2WfZZ9
ln2WfZZ9ln2VR2KACoAKgAoHD2MFABRZhs4gffTBkwb6QNrdCn5AqmiGZqtkYuoUTBjNSNX7
TINHlDPXWaIDwqiOCxvYgc7UvtTQeTADdFIXBqBADi26o4iVW++UWdfw6DhS4TbYsrgXsdCA
KegOU7zLDpmEEEljiSQ1ySAbdlIaTZLI/SF+pTWZKQ0myW1giW3ZRMsj9Kc8nyQAXtyQ/Rgs
bqsZY3VY3VY3VY3VYyxuqxuqxljdVjLGWMsZY3VYyxljdVjLGWMsZY3VYyxljLGWMsZYyxlj
LGWMsZYyxljJsobBQAoAUAJghawUAKddH/Qgy9QPuQfcnJCidP6euTifDXe31ycT4a727ZkJ
jwfDXek9MIoqnT+3emEUVTp/dQ9eo9Mh1dp4DH25Dq7TwGP+TpVC/PquRW258Q6oBvmxVrSJ
w/PjmhYqOQ+dFWtInD8+OaFio5D56IgGd08Hv58VBeSFgGH/AKNDMACL2YXggvBBeCCEwAAu
ZnndSFR+FCFTzs6cZmlosDZ3WBs7rA2d0NOMzT1+Qf/aAAgBAwMBPyEogqUV97dE5DMIu9hx
4cqyrKsiyLIsiyrKsqyLIsiyLKsqyrIsiyLIsqyrLusu6ybrJusm6y7rLusu6y7rLusm6ybr
Jusu/wBKi7lFIUUhRSEQlqjiopCFOZM+HWdE0WBdGKradUUQm4GZTIiSE0zapqAb9JqIcot6
fh1/ThUi3gxFQIJzhy0/aM0iSZAUvzTkxTFOTk5OT/awUVUABfhrDWCsFYKwVgrDWGsNYaw1
gLAWAsBYHRYXRYXRYXRYXRYXRYXRYHROlT4hRSFFIUUhEQWD2hRSETLqH/QYDr6YHqE5UFqA
gsa+4JyoLUBBY19uA6i9vtOEHQEFjX0rtBUqgABSvTq9vdoKlUAAKV6dXtyMmOakZ1O/CV6d
XpNQtCBuboBIOgILGvtmoWhA3N0AkHQEFjX3FGLi4oonF9+aIaXpGXJigpA+IQPJxVn7cy5M
UFIHxCB5OKs/82x8Akv82DvgE/Og74BPz13n4Aj/AOjQpJycnIpc7p/Cnnbyenp6a+Qf/9oA
DAMBAAIRAxEAABCsw0QiHrdZ9PrP4wGiGQ0UiPL9ZrSCGXmatrOBFBz9Pf5qEGT5rWEGygmf
Pxt8eOVXTKwwVP55pffWUEX7pp7fNEUyz3bQBkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSS
SSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSS
SSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSS
SSSSCSSSSRkSSTmSSSSSJSSSSSSSSSSSRKSQSSSSSMiSThKSSSSIqSSSSSSSSSSRFSSCSSSS
RkSSDdSSSSQdKSSSSSSSSSSDpSQSSSSSMiSSQxSSSSQ1SSSSSSSSSSSGqSCSSSSRkSSSSSSS
SSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSS
SSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQ
SSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSS
SSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSS
SSSSSSSSSSSSSCSSSSRkSSSSSSSSSSYSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSQ2SSSSSSSSS
SSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSS
RkSSSSSSSaSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSJySSSSSSSSSSSSSSSSCSSSSRkSSSSSSS
SSSSSSSSSSSSSSSSSQSSSSSMiSSSSSaSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSJySSSSSSSSS
SSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSJSSSSSSSSSSSSSSSSSSQ
SSSSSMiSSSSQGSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSS
SSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSS
SSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSS
SSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSS
RkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSS
SSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSS
SSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQ
SSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSS
SSSSSSSSSSSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSS
SSSSSSSSSSSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSS
SSSSCSSSSRkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSMiSSSSSSSSSSSSSSSSSSSSSSSSCSSSS
RkSSSSSSSSSSSSRtySSSSSSSSSQSSSSSMiSSSSSSSSSSSQgAySSSSSSSSSCSSSSRkSSSSSSS
SSSSST/ySSSSSSSSSQSSSSSPtttttttttttttttttttttttttttttt//AP/aAAgBAQMBPxA4
bw0BNUCR40WM5qAKYbTQ2xgFW8h+BGjJEjgJYj0PPlKNufDgwcBkAKgFQCABKApAXgcDJ0JK
ENHo3bpUbJw8TKkcAEgfdo8mgfZo8ygfcoH3SB9lwGBwg0HAR0I0IUKU3zRFhSLvHslGn8QC
65aOeVtALgByGIeNP4pASgGFARAklHYuYYh40/iG2ChHIkMAAxwax3IViH18KEtVKzrw9tU0
aZgRNjWi/wBowSguC8EIC/0ANUqACZAAlikrVbtAE3oFMdy7Mmf86A5BkADPNGZoxkDXD7UA
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
--------------010404080007000902000102
Content-Type: image/jpeg;
 name="playing2.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="playing2.jpg"

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
AAAAADKQasAAAAQVArZyasAAAAAAAAAAAAAAAAAAAAAAADKQasAAAAQVArZyasAAAAAAAAAA
AAAAAAAAAAAAADKQasAAAAQVArZyasAAAAAAAAAAAAAAAAAAAAAAADKQasAAAAQVArZyasAA
AAAAAAAAAAAAAAAAAAAAADKQasAAAAQVArZyasAAAAAAAAAAAAAAAAAAAAAAADKQasAAAAQV
ArZyasAAAD5FHp/Xv8wAAAAAAAAAAAAAAAAAADKQasAAAAQVArZyasAAAV7L7dKwfW3/ANL4
r69/mAAAAAAAAAAAAAAAAAADKQasAAAAQVArZyasAAAVnJ9BVsf0Xtsy6F6fw4AAAAAAAAAA
AAAAAAAAykGrAAAAEFQK2cmrAAAA4jqt5fe+xd5nvtxAAAAAAAAAAAAAAAAAAZSDVgAAACCo
FbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSDVgAAACCoFbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSD
VgAAACCoFbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSDVgAAACCoFbOTVgAAAAAAAAAAAAAAAAAA
AAAAAZSDVgAAACCoFbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSDVgAAACCoFbOTVgAAAAAAAAAA
AAAAAAAAAAAAAZSDVgAAACCoFbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSDVgAAACCoFbOTVgAA
AAAAAAAAAAAAAAAAAAAAAZSDVgAAACCoFbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSDVgAAACCo
FbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSDVgAAACCoFbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSD
VgAAACCoFbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSDVgAAACCoFbOTVgAAAAAAAAAAAAAAAAAA
AAAAAZSDVgAAACCoFbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSDVgAAACCoFbOTVgAAAAAAAAAA
AAAAAAAAAAAAAZSDVgAAACCoFbOTVgAAAAAAAAAAAAAAAAAAAAAAAZSDVgAAACCoFbOTVgAA
AAAAAAAADNfrc9T9ysDZ/wA/1e/N0AAAAAAAAAMpBqwAAABBUCtnJqwAAAAAAAAAABmv1uep
+5WBs/5/q9+boAAAAAAAAAZSDVgAAACCoHxjg0sAAAAAAAAAAArXrV/J3cgXT5+3965AAAAA
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
vf8Ai73/AIu9/wCJz1En/Q//2gAIAQMDAT8hnxoI5sYPEQmPKizvHT+p3S9PT05OTk5PT09O
Tk5OT09PT05OTupbS2ltLYWwthbC2ltLaW0thbC2FsLaW2ttba2VsrZWyttba21toE4/JdkV
2RXZFVAz5rsiiQeAls+na3CKQImMfeClb/oozTJkE0UyMl+CaLJhZN+ky6A2Efl+ju9+n4nS
MUZBlKNf4nNZ3cl/q+5OTk5PT09PTk5BXafcLsEKVAhPT09OTk7obS2ltLYWwthbC2FtLaW0
tpbC2FsLYW0tpba21srZWytlba21toEw/JdkV2RXZFVQzZrsiiQeAF8/SHJwWKChFXNC7nae
2Pv90B0xjxRRP/uAZx84emCJSSG67AHHTEwmUEQ5LsAF2EOORBKTdBnJgiyH3PCKuTnBQgD0
0ECWZ4RVyc4Q7/viGwOZvVz4J/XH2s/zefHgWR/3oRDY9P8A8RfBvsz4/wCTfZm/7PjSXSuP
djv/ABAKR6nOOmgBxqEPc3TzoiMeMuTFBQB6hRpeJ/4PJ/okxuf6JMbd+jgf6H//2gAMAwEA
AhEDEQAAECpXzljDYbCJQbCv0/mvQaDIRaDM15AYWFRrQxFMps19mmIYfOn9QQLCDZ8/i3xw
+bns1qDAZYdQbGvk9yLRYDKRQOG19tMXJJJJJJJJJSpJJJJJJJJJJJJJJJJJJJI5JJJJJJJJ
JPJJJJJJvJJJJJJJJJJJJJHJJJJJJJJJJJJJJJJH5JJJJJJJJJJJJI5JJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJPJJJJJJJJJJJJJI5JJJJJJJJJJJJJJJJ5JJJJJJJJJJJJJFJJJJJJJJJJFJ
JJJJHJJJJJJJJJJJJJJJJJJJJJJJJAFpJJJI5JJJJJJJJJJJJJJJJJJJJJJJIyHJJJJHJJJJ
JJJJJJJJIxJJJJJJJJJJEpJJJJI5JJJJJJJJJJJJEpJJJJJJJJJJJJJJJJHJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJI5JJJJJJJJJJJJBJJJJJJJJJJJJJJJJJLJJJJJJJJJJJJIBJJJJJJJJ
JJJJJJJJJpJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJHJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJI
JJJJJJJJJJJJJAJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJIHJJJJJJJJJJJJJJJJIJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJIxJJJJJJJJJJJJJJJJIJJJJJJJJJJJJJAJJJJ
JJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJI5JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJI
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJBJJJJJ5JJJJJJJJJJJJJJJJJJJJJJJJIJJJJJ3ZJJJJJJJJJJJJJJJJJJJJ
JJJJBJJJJJhJJJJJJJJJJJJJJJJJJJJJJJJIJJJJJDVJJJJJJJJJJJJJJJJJJJJJJJJBJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJI
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJBJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJBJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJBJJJJ
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
--------------010404080007000902000102
Content-Type: image/jpeg;
 name="gameOver.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="gameOver.jpg"

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
vuglaU2F3C3tX2XcvDmt7V94XcLe1fZdy8Oa3tX3RhrsLuFvavsu5eHNb2r7oNy/vdwt7V9l
3Lw5re1feF3C3tX2XcvDmt7V90VLTh+93C3tX2XcvDmt7V90VNxp+93C3tX2XcvDmt7V94Xc
Le1fZdy8Oa3tX+UcxSFZvk3JdoUvEV/v+13C3tX2XcvDmt7V/lTLnCRNQ6Z2T4jkmzJWlBX+
/wC13C3tX2XcvDmt7V/knMUhXCxllkGq69WcUVA3w7uFvavsu5eHNb2r/JkqLqlbQ6JBSlKU
+Jdwt7V9l3Lw5re1fc7168K8898PPfBk9eGefrdwt7V9l3Lw5re1fc7/AP734Yf979buFvav
su5eHNb2r7nc2+8Vc/Wnw+tPg2t94k5/W7hb2r7LuKZmLqDqDqDqDqDqDqDqDqDqDqDqDqDq
DqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDq
DqDqDqDqDqDqDqDqDqDqDqD/AJ4//9oACAECAAEFAq8KFNwoRJUpzeOPHHjjxx448ceOPHHj
jxx448ceOPHHjjxx448ceOPHHjjxx448ceOPHHjjxx448ceOPHHjjxx448ceOPHHjjxx448c
ZAyBkDIGQMgZAyBkDIBkqUGEowlGEowUGEooSlfwr/iZJYqMv8pKf1KoKqf04AleBMdQU3Ex
64a8eIzKg1eIzKiitd0L/oXlCXMDU4kPQ1R/xx5pRmEGYQZpRmEGYQZhBmlGYQZhBjIMwgzC
DNKM0ozSjNKM0ozSjNKM0ozSjNKM0ozSjNKM0ozSjNKM0ozSjNKM0ozSjNKM0ozSjNKM0ozS
jNKM0ozSjNKM0ozSjNKM0ozSjNKM0ozSg9SmGEowlGEoph4YSguGlfgqGBD8d/Grx/BDcd80
Nx/KlRQvEUT3ypUUrwBTcfxg32avH8EJvw9RRMUp/ueqKFrv9r/l39QlKfz5tXq7+I3KWv8A
oKstRMEPipv16StaIU4E/nz+v9Sf236ogU4pv5w5yxSu/naJj1L/AG/nhHBTV382LXN/nqDg
xj7+Sa1Kf+YFNx2rhfLCZ8Rd3qV/BTcdo8SMeiJeBN31rxFC8QVPhvw4on/DEki4ckgySBVI
uHfaPJ+FuTfab0tC+eQeeQKPS1L/ABH/2gAIAQMAAQUCLTjWhK8To1LTiOI4jEMQxDEMQxDE
MYxjGMYxjGMYxjMGYMwZgzBmDMGaM0ZozRmjNGaM4ZwzhnDOGcM4ZwzxnjPGeM8Z4zxnjyB5
A8geQCq1qMRhiMMRhmVGIwqpWn4R51z8Kr8mx4fjgMO6G/6G5gtyhM3AxTlGP+nD88BwHAcB
wHCo4VHCo4VHCow1GGow1GGow1GGowVGCowVGCowVGCowVGCowVGCowVGXUZdRl1GXUZdRl1
GXUZdRl1GXUZRhlGGUYZRhlGGUYZRhlGGUYZRhlGGSYJ0MUYjDEYYjCuLjiMD4q0+CzSxGct
sO/kE8BQ6QoSu+FUak/LJLiZRYpAq+rUVrvhmliMclDUWRqSoo5qUta76bpYCmNSgcOympvt
qSnFV8DqVN/uua/2/wBPK7/4/wCg1Kb/ACiv8/Lv/jv+lN/lr/PuG/6/z6tN/wBa/wAwpTiF
29U9rSm8WKX9TFoai7epK7Moru+lOITJhKosUgXeYt+NalKFXtaitf4XWo4jiKV35X8035hG
EYRh/iX/2gAIAQICBj8CVV2HV6+Rkf1xqskkkkkk4c3D5FVdvagguYnucP3g+HAzH3JhxM6a
vgVN5y9LInLn/BFRk3z/ACqySSSSST9+HPk7dNQ1x68jCafpX71+K/bT5k1estf6tP3ryMIi
6u0skEIQgtkiuJliuVcRLm02ipfRL//aAAgBAwIGPwJhh6rBBBBBBGCDJnWk8Diu9xqrBBBA
7EEfROsIOkV5sLVm+L7i522rL7hlxbltW2LjJXHWEO0v+Oi9q91DKe1dYuMkVzq5jtt5H//a
AAgBAQEGPwJhlDSVl4GuQlZSD+VW/Fn5dvPao/24LqsO3ZTvK935I+lHCO7H0o4R3Y+lHCO7
H0o4R3Y+lHCO7H0w4R3Y+mHCO7H0w4R3Y+mHCO7H0w4R3Y+mHCO7H0w4R3Y+mHCO7H0w4R3Y
+mHCO7H0w4R3Y+nHCO7H044R3Y+nHCO7H044R3Y+nHCO7H044R3Y+nHCO7H044u7H044u7H0
44u7HgDi7seAOLux4A4u7HgDi7seAOLux4A4u7HgDi7seAOLux4A4u7HgDi7seAOLux4I4u7
Hgji7seCOLux4I4u7Hgji7seCOLux4I4u7Hgji7seCOLux4I4u7Hgji7seEOL4R4Q4vhHhDi
+EeEOL4Qdmwk2a6UCvOBH06P624U2GEW0AFXOb605aJj6dH9bcfL7FO2laszRVTllLJH06P6
24TtWUC2bKaUGmU8gO9F/eH5IwGZegISlOTnmHPdpCMG2nEOoKsG1+wnw1A0G0bQyfpjHoY2
ql4TYBsTBtKeO8EjfohLVpbrCcTY2DklIM8NbtFMpTnG0YKmiJ2CDzgM4lkj5Nx1QZokK5DZ
hRsioTlDBQtwsuIcKjJVkFFR2pbTzaaTZoh4bJQcTi7CFOBIcA2c5KlOYzH2w3h3VJBwTu0V
bNkfLqpcAl7R/bDeEackcfikKSppUyMOFft0mozNBhttTjxxGKcxCQ4SkgbIq5yqJkmQh4C0
p177ct5SpizJXVsy45w82XFp+VWwHnCRJQe6RAlzZT3zD6y/zmELKk2kzBPgg0ZRX7avVD2d
GtAQ2+2tZqSlQJj7r/oI0XYfcQzJaG1KSbSqwM8L/wBIaK4UMEpS3LP/ACG5WwgZFJBI5/6c
sYEtOF1u0ZOKNonmGsmL+pGDdMrKAqc1ITWgCi0UwpKRtXHMiVsz04W3sVlRkEzLcqDP80J2
jalWBZTNaTJIqApqgvDaB5VCnNqLRGe1PJE1bQm0F0uDpCgK6VcoKlNFSlUlRUmZPDG2UlRe
r2hWLUxVTOcB47QvJoS5tBaAzznlhwWVSdpd545xr51NNMKsNlNoWVSWkTByGmqEKKVWm5Bs
2xNIFUqaJQlX7lpEyg7QTBV0pU5csbFO0DVI2YcFmRronCWlham09FBcBAlvCcLtBatpLaTc
HOs1TpplHg9pPxjwe0n4x4PaT8Y8HtJ+MeD2k/GPB40/GPB40/GPB40/GPB40/GPB40/GPC4
0/GPC40/GPC40/GPC40/GPC40/GPC40/GPC40/GPC40/GPC40/GPC40x4XGI8LjEeFxiPC4x
Hh8Yjw+MR4fGI8PjEeHxiPD4xHh8Yjw+MR4fGI8PjEDbWW7VVtaRymAhtba1mpKXEE8seHxi
PD4xHh8YgpZCU2pFVoWqrw34C22mELFSktJB0odJ2Z2wSFzRkTa/V+qPp8P/APij4wrEc0vF
NkGVGUVWv1RWj+j/ALobL1khszAAAyS/Md+L+pGEzK5EQxe0Du4QgyWvkjZuUO8vqHCeZqwx
e0Dud/UjCZlciIYvaB3dS+rUnNExXEljnJ6+Q/2+oMJ5mrDF7QO539SMJmVyIhi9oHcyWzVW
PTsx0nOTLH7aZ+3JE3jtFb2SJASG96gwnmasMXtA7nf1IwmZXIiGL2gdysDpuUe7LAWgyIi0
mhQ6Sd70F57n/lTkAiQEhveosJ5mrDF7QO539SMJmVyIhi9oHclL6tSM0WUJKlbwgOrXZP5E
/wA/UuE8zVhi9oHc7+pGEzK5EQxe0DuOxaBLjtEhvZYtYgy/QPjFltNkepsJ5mrDF7QO539S
MJmVyIhi9oH1jhPM1YYvaB3O/qRhMyuREMXtA+scJ5mrDF7QO539SMJmVyIhi9oH1jhPM1YY
vaB3O/qRhMyuREMXtA+scJ5mrDF7QO539SMJmVyIhi9oH1jhPM1YYvaB3O/qRhMyuREMXtA+
scJ5mrDF7QO539SMJmVyIhi9oH1jhPM1YYvaB3O/qRhMyuREMXtA+gNpTtHz1cgzxtHcGA1v
2Vp4zG1boIoWg5DDTbCUqcXSQqZoyVShSnAA6hUlBNUsm/DOxSlW0tTtzyS3iN+FqdAS4hUi
E73vnDrLKGy22ZTUDOcqcojCpabQpT7KHJSUecvIJGPof/U58YUvFtbFwKkE2SmiQp50KdcN
lCBMmD8lhLaB7FLPZqj5bEt7F40DeJ3qaoZYUlHyzsufTOmg5ZQVGgCkmMXig22EM2Q3Qesq
VNO9AW3hAtBqUltwjlhDeIwuzZVO0vZrEqN8mVcPYfDsJd2SlAAJWoySZTMjCfnMJYQf0qQf
dahvE4eyraKAFqcpFJPs3oZdV0nEJUZe0T/E4TzNWGL2gdzv6kYTMrkRDF7QPoxJepUi2W5+
wyHFHy6sPtkrRM86VZIlKR3oeSxhhhwizORtTnP2DeguvOJQyweaVEAcygSn+qmHsO2sKYen
YKTMfmT8IwnmasYhs0NvNB4e6n4x82rp4jEE+6R/mTH2xbYtOJw7BQmuZBoEfQ/+pz4whzEI
2byp2kSIlTvGmqABUpwBWaRP8ow4RUUBRzmkxhXm/Gp7JFmA8OkwZ3TQf5QHp899Ib99SuQw
oHpLsuKvLH8oQ3h8LtGUzsr2azOnfBlXCkYvDbFsJmFWFppmKOdGMXhGts4VOApslVFuvmwn
BqCEWTMjo1ZyTRCWxSGLABzc2GkflQkcA/E4TzNWGL2gdzv6kYTMrkRDF7QPo+fwHi9ZOWe+
I2YwtlX59mRxq5sYl08/EOJFlpHOkROXLCnMcydoVc1KrSTLijDv/bmVc085KbS6RSDljCKZ
ZWuhRICSSJ2a4ZewyFKWAppVgEmyoez3xhWGm1LW2pNoJE+qbVXtj7e61h1rUzh2eoo85NMj
KPof/U58YUvFtbFwKkE2SmiQp50LYVRa6Kt4iqNgljbNjo80rHuswnF/cBZQikINFVQlkELa
V0VgpPvhnAusrGHbdJK7Jsyy01ZKIeQ2krUbMkpEz0hkhGHbwRKETkVNuTpM/ZvwhvEYXZsq
naXs1iVG+TKuMY4tpSW1bSysggGbgqMIx2ESdugi2EV+w+6G3E4PaOrUEvYdxtSvfZziGluC
y4pAK01SJFI/E4TzNWGL2gdzv6kYTMrkRDF7QPrHCeZqwxe0Dud/UjCZlciIYvaB9Cm2HLS0
9JMiDxgRtH12EVT/ALoDrRm2qoyI5f47T7gQDVOvgiw0+Co1AzTyy3JTizJCAVKPsEeP2V/C
C3h3LawLRElCj3gb/wCJwnmasMXtA7nf1IwmZXIiGL2gfQj7nhxzSf3k+3/uhDbcxg2aVHl9
5qgLKf0ttiBinMGn5U8MuE8kKx+GkapBX+IAgyg41QTtQhxUh0eZOXJGJxa0pDjNuyBOXNRa
ppgbJhuQVJ1ykJCeGv0JdxaFLwhAs2d4CqeeEDDPHBufrmZ8Jlxw0g/v4lQknJOVZNcIOLwY
2bhosV8qqYQoJK3XfDbq4YS5jcIEsKypr5TDWKw1lYdUALU6iCfZvQHnmkNYSxO3lJy5aoX/
APOwoWy3WpeXjTCwU7N9uhxEO/OMbGzZsc1SZznPpQptYmhYKVD2GFPHDzVU2m2ulXDHzCx+
+8OBO9+JwnmasMXtA7nf1IwmZXIiGL2gfRip0/tL4hDhlSXSJ3RDDo6CCQq9KXJDllxJU42U
pa6wJEqvZD9oeIoLSP02k/CFNKcG1sOI2fWmomVHvjHeb/tiHP8AVOin0LwuOaScL1SEzMjU
aSQYJwY/5GSwCke8GQj7XisROwkJndXaHZhJ2oXb/JzpZ4wWNIJY5vZVa5DCm2nUuLds2Qmm
UjOnejCNuUK2kyM4Wf5whtHSXhgE5yiFoP3E4FSTS3SkH29JNMOvNY35pSkkLEpGvpUkwr5d
duxK1QRXnlvejC4L/LTIqGek9kfisJ5mrDF7QO539SMJmVyIhi9oH0KbWJoWClQ9hgt4dFhB
NoiZNPvnvQUqFpJrBi2MOmfvI4KoskTSaCIUUsDnAg15d7e90Lw7aLLLk7aZmmYkfbVBbw6L
CCbREyaffPe9Fl9sLlVP4xaRhxP2zVyzgocSFoNaTTG0QwLWSczywUOpC0GtJjaNsC2KiZnl
nAbxCLaAbQEyKfdLfhLaBJCAEpHsEW3WAVmsiaeSUWWGwgZZQr5dFi3K1STVnnv+j5yx/wAj
88zvWaqqvxWE8zVhi9oHc7+pGEzK5EQxe0D6xwnmasMXtA7nf1IwmZXIiGL2gfQvCYfEKbtS
si2oJH7drJCHnMTtEky6RWMxCoaxT6tm26EyoJpUJ5IDLTtpwi1KRqrjZuvALyik8MpxtW1h
Tf58kWfmBPMqXDKUbVCwW67eSLPzAnmVLhlKA42oLQalCFPPKstprNddGSErL4sr6NBnvVSn
CHFvpsr6EqZ+4RtGVhaN8Rs1vi0K5TPJOA40oLQalCFfLrt2JWqCK88t6F4dtdp5udtMjRIy
PsrjZuvgLFYE1ck4tMOBYFcvhFl90JV+WkngE4tsLC0+z0YleNxJKRYs2yVfmqri0w4FgV/3
QvDtrtPNztpkaJGR9lcfJ2/+R+SR3rVdVUJ/el9vTlANPMy5elDbeCdkVC04ZGclAFMp74MK
eacm0gyUszTLhlvxYGIE/eBw1QXnVWWk1qrroyQhZfFlfRoM96qU4DjagtCqlDdsJ5mrDF7Q
O539SMJmVyIhi9oH0Lbw69m8qVlcyJftb4pqhPzuKtoH6lLPutQyhNCUuJAGZKoD7KAHvl7Z
XKkmzarhxR+3HHFRpcpMvZ0VUxjcKGV4dt5NpsLBABChzZnfEbDH/bLacr0qf6v7Ycb+3/tp
Xkq5wkZHPGwx/wBstpyvSp/q/tgKwabDU+jVI+2H7umIcfU2FOqQ4q2awUzlI+6HXHmw4oqs
c6mQkDRwx9yUg0gNyvEgmEuONJcW7atFVMpGVG9GMwiTNlNqV1VkcUYvy9aMd5v+4IcU/ghj
Wldci178soWMKzsHh00muWfeh99zAnHLVWKwmfskqCtOEcw2GeBtIINkUTrkMo9D6nkBywE2
UqpFM8nuhbDNDSpzGdFvljHeb/uCP+v/AAxsdknY/wDjkLPhTqqrjCltCUE2gbIl0bIHBDLD
CA204pSlhAsiaZSqhyy2kKbbKku9YkCdfth8L/y1hCc1pJ/nDjymwXVIcXbNYKZykfdC/Y6Z
f0jdsJ5mrDF7QO539SMJmVyIhi9oH0f/AELSdj+Wm14dnelX6EtNFIUFhXOzEZJ78NMLkbDa
UK3qBIwv/wCdighpfVX/AHKhxL+MUpxfRIps8MKZ+dSpldCrVcj7jywcM06UrVSXgOscsoUz
86lTK6FWq5H3HlgMpNoztKVvmHMO2QFrlIqqoUD7d6DglFO1KHEzHR585csKadKSorKubmAy
y3oxLWKKFofCRJM8k98DfhTeCxYSwrIqvkMK51t5fTX/ACELVgsSlplyudcs0pUQ68taVtqS
pKaTapUDTR7IUvDY4FKsjmT3SUIcxDzm0xDvSIqpMzwmF4j7a+Gtp0kKq5DyQpzF4vaz/wAs
dH/rN6FuNYlDb1SZUpIyzmIXisS5tcSvKKhOuFYvAvpbLkyq17a8hBhOLW8l1AmVKM7ZJTKq
Uqzvx89g3ktufqyUWd45IYG0G3arJqMwJ8kbDHuhb4VaQ6nJyQMK5jE/KjhlwDlhWAw0hVIq
/wAQJJlBwSinalDiZjo8+cuWFNOlJUVlXNzAZZb27YTzNWGL2gdzv6kYTMrkRDF7QPrHCeZq
wxe0Dud/UjCZlciIYvaB9CcAAS6ekcg5tr+JL2z2lpViU5ZCfbvQ09KztEhct6YnubexwqsT
bnOxOiWYKr/G4TzNWGL2gdzv6kYTMrkRDF7QPo+V+aVtv/6abXhz351UVwx9qwrv7oSkOvms
mVeXJTDbxxJxTKjJQXPgpnCXE9FYChmMYbYuqbtW52CRPo70DHKxZKqNo0KEpn7KjwRhn6rb
gmPaAoHjjCJwRCCW0bRZMpCyKoStr7p8wufObnOXumoQxjWXFNKklSwgkULHs3jHzSTJx1IS
mX5jQeCmG1PrUtxznkrJNdVfshtOGcDDH+c7ORENlr7h84nrpnMZq1QzgsKbLr1astJkIRPG
KcQtVK6QoKkaJznIxhflVgLWhG1dUaZWRTTCVtfdPmFz5zc5y901CMA604povIKlBBIrCTkz
xhti6pu1bnYJE+jvQ3jF4s2lqkppNCUmU5SqNUNOmguISrhE/wAVhPM1YYvaB3O/qRhMyuRE
MXtA+j5t1Ci1kll/bs0e+Gfu7LZcaWApYyjmyp90NYbBsqshVpa1ZMmSe/DbQqbSEj3CUYTz
NWPkPl1jFqkHUy3jOj3iMKwrpJcFrOQonljAbOZaDadqB/hEpwlODwZaabIU65IV9GU8tcMt
mlC2Qg/0yMM/aV9Fp5VvNl/nEhVGHcWkrwaeknJOdM84hpeGwxYwqJgKshM1KzZow33JgbRD
dmcvYbSTxw2W2VIYSsWlq/PI0DjjAbOZaDadqB/hEpwlODwZaabIU65IV9GU8tcfayP/ABEc
ASIwnmasN/6o0VRg3tntLSW0SnLqT9u9DT0rO0SFy3pif4nCeZqwxe0Dud/UjCZlciIYvaB/
iw/y6Ldi3apArlvy3v4QcE2lx21SFfl4Uw7jMZL5h3JXKdJ/gQvBO7N1E+bkUDCGcS22y0kz
KgRw1qhDaeigBI934/CeZqwxe0Dud/UjCZlciIYvaB9Y4TzNWGL2gdzv6kYTMrkRDF7QPrHC
eZqwxe0Dud/UjCZlciIYvaB9Y4TzNWGL2gdzv6kYTMrkRDF7QPrHCeZqwxe0Dud/UjCZlciI
YvaB9Y4TzNWGL2gdzv6kYTMrkRDF7QPrHCeZqwxe0Dud/UjCZlciIYvaB9Y4TzNWGL2gdzv6
kYTMrkRDF7QPrHCeZqwxe0Dud/UjCZlciIYvaB9Y4TzNWGL2gdzv6kYTMrkRDF7QPrHCeZqw
xe0Dud/UjCZlciIYvaB9Y4TzNWGL2gdzv6kYTMrkRDF7QPrHCeZqwxe0Dud/UjCZlciIYvaB
9Y4TzNWGL2gdzv6kYTMrkRDF7QPrHCeZqwxe0Dud/UjCZlciIYvaB9Y4TzNWGL2gdzv6kYTM
rkRDF7QPrHCeZqwxe0Dud/UjCZlciIYvaB9Y4TzNWGL2gdzv6kYTMrkRDF7QPrHCeZqwxe0D
ud/UjCZlciIYvaB9Y4TzNWGL2gdzv6kYTMrkRDF7QPrHCeZqwxe0Dud/UjCZlciIYvaB9Uy3
DCeZqwxe0Dud/UjCZlciIYvaB9Y4TzNWGL2gdzv6kYTMrkRDF7QP4sqVUmkxRQsVp/C4TzNW
GL2gdzv6kYTMrkRDF7QP4sMJrVSrNAWgyUI3nB0k/hMJ5mrDF7QO539SMJmVyIhi9oH8UVKq
TSYU4etH7aZ/qyQHFqtODeoH4TCeZqwxe0Dud/UjCZlciIYvaB/FDDsp6VK1ZJRN47RW9kiQ
EhvfhcJ5mrDF7QO539SMJmVyIhi9oH1Q+lL7gSHFAAKO/H1Dv9ao+od/rVDCVPuFJcSCCo7/
APFhPM1YYvaB3O/qRhMyuREMXtA+qMR/qr0vTh/9VGl/FhPM1YYvaB3O/qRhMyuREMXtA+qH
XErbsrWpQmTlOaOm1wq+EdNrhV8IacUtuyhaVGROQ5v4sJ5mrDF7QO539SOvk/JvR1+xHX7E
dfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+
xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7Ed
fsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+xHX7EdfsR1+x
HW6X6fyx/9oACAEBAwE/IaPQSxsFtjcYTW0FkTUGFNaLBvKbjz/6B88ePnn7583bFy5YuWLt
mzds3LlfsZfuZfsZfu5fs5fs5fu5fs5fu5fsZfsZfuZfsZfuf+COOuOuGGmGmmPvPvPZFLtH
KvQPhC6gD6BVnVZ0PCHc/RGy1Io17+EJ70EGtmhmizOm6cHTppvXPwH0wy8PT58PLfOeEBQM
zYq2n2zWEycxkNAA3+0vwDdsnEEVQ8pb3GpRZVWdqUCZZplUqtMm965hd4PdlIKXBfvrrZpW
Holc5tVA46J1aAboMlzK6WYRISqWk3CFwDdasr1BJDUOpAsvOSWcnUBssllH4ZlvFvoKBvrY
XLcr4rJWvvv9gf8ASePBuUapABlFtA3p4fs8EIaSjTTXwR02tS5PxlLodac2lK2dWuRd6m2l
Hh7sGjOtFq3WpnYEuqVkAbgg7IsAAcqbtNOC9eAsRsSv+aIYGHMMJhAiqmvUaIAdY/8AJUkZ
VW6soNyBvct8UVKfQstkYMYyi6HUDTmjurXma0v58KrNbkVFinriXpbK0nMK3mVLS37pkIxA
tg06bblHJ8cSiypRgnWcUdz7S9P+QprAACTRQSSxzywxzxQTifNOJ884XzzhfPOJ884vzzg/
LOP8s4/yzg/LOD8s4/yzj/LOF8s4HyzP2drOtaourgawgAotoLaE4XyzjfJOB8ktttALXVaG
q5okYGWU0ltJjikYI0gprm9+E1phKpCVc6rS3n6pNmDGba9f4H/F5TtqB6moNX+IKcHR2/v5
7DvlOqBVoMrH7SenT5gBKGRNRjh+/T3NPOEO+U6oFukvIXpNej2fHN+29D/LSVxxu8D1lP8A
aH5sPGHQYDziHfKdzH+FvfxPYTJOT0nvgGvjwVhemiTTvzh4waDAecw75TqgW4DVimaftPnW
FFDYuV/rqWclp55DvlO6UDMib38Sio/V9dH2lefQ1e7q+ew75TtF3vz/AP1lDvlOw75TsO+U
7DvlOw75TsO+U7DvlO1RPZegdFZ12J1wHJXeT2lbFm4fzHJl1hxKNFBam5muYosLWVZzvOjy
5cuoFKm8IWBHJa3AjIvPYC1uND3NmYpHGMGvglfwXMZQol1Wel/RTvvGo5tgghYVueoGS5Tl
lnU21NhzppFppqNg1i0DA5Uepp7bzVwwApppGak6S+ZmmULAT4mZzNntCsC+ib5EYamFlZZw
rZBKAL0Waq7xnymHfKdJ6z1g/t6YAJZ7TTKib0vdaW1TEDcWs1vFNVFDDRndCzBfd4R96dAL
fmUh6q6IDAz9GyNBlt5eCXS3zEw1RYGcDpgdRCdCndzyerAMpZJrke5ZQneuEzaUH7of4YV2
o+9o/ahOsvmZrhKkkvYLmEgWSaLNPAvN3aIdQi+fVtEIrcUXBMkoY5DL3n6iEPKYd8p0g/Oa
FBWTCJqfm5X5b9ysgJcAigjTdt51L6dCDE1QVlvWIq22yCm605GaciXTQEMPeMnrOBDSzVI9
ZfXYd2qqti8bNIgAdw2E3NfBK/guYyhRLqsWre7iXzHTlOl75kIPJiXmglm1jzmtwOb7cio0
4vilWoYU/VM08uJT4GcBM8CAsh3SNeSdJfMzTKFgJqfPmQLCmzMXFqBbrTDK6Hp2johAgoV0
GqEf5mBn2NEaHJTz+qId8p2HfKdoIO0OLrTeSo6wsFy7AFY7zNeztoB/zMaPGp2FrCeJQkXk
Vs/6tZQINBa0W6Hg7eBHQQhdk1HlMO+U7pDiGltb6D3lJRGk11dzD7y8gFY+0MHQAg4lTYpd
ouQvmzWBQq3ChCMl84R0FJyRwta35mPBQh1CinV5yhKGiwVVDdGVq9seFUioVbgcxdSZdzkB
dF1m+UkFQi3QGyW7TEZQ39PQbNQ5I2luue8101l3tgWhvnovRCD2hhRtwVcLsnV4pkFqtaWa
bxRTK1XZuPLLLwds/kvO3pP302gbqjSaygQLCksp0ZcgczIadpqwBqh38nqwvlMO+U6PEFlP
NUfRIemuG5Ck9LYcK07s5D7IukJE0EdZlLoMia7j3sD71lyK1VjnwSBfv4Qz+3aJmYAbNGv2
mWCS40vNHQ5EGOjr20OD3Z9owrrlQ5kcfmINkbhNwI6LoMVolgKi0dBWYAiIRqVI9iMYnpEz
3Zn5irgAyo0UmsBjaHuS2UOTXrPtn351p5ngrTPVP4Z5VDvlO6ygQLCksp0ZeAHUABdtaCHH
DRrE5IzVFbpfvK+yOjCsliOKrlBE25rwacl0Mbr8n5qVFjZl4AdQAF21oPAEP1Bk7Ckhep5F
+0xNHuJp7wYGW0hHmDQmk1A2QAGlopeYMErADoAEu2tFNZQINBQW26Eb67Ej3vb1iN37j3XL
6z759+da+Z4cd/rOhp9Uw75TsO+U7y/exgsXq6dpZNjedpaA1B0ltgnKTMV0IZIsnVGpqjDp
rEg9oino09ZiVq0TA1t2reXdkVY32F7oeZzAmBq303l3ZFWN9he6ZLQtsZgQfG0sDAXVmW6X
JoLZFGTchth2rMaXQuvSA3LHU5JqPeLB2oCl5KQTVYibJ9s+/OtPMmy/J+akFS2YgwAFU8mt
GOO7QL5qkgZLzhS6iibVqXY8k1PXwOtpt63KuW2aiPGSlid1SfabL8n5qQVLZnEf6Tqazd+8
HZWir5cpjCmyN3gVk4z2gVVBAQC3XYJqm9Wn3kPdMd4YnUBgLqwKq1yaC2cDI6kz6iZY/wDd
DvlO9L/MQXVFhI2dF0u5QBcAnoLAgmPrEFzA6nMtnuKDgPIZWt3LRV5UxSLVp5y6AK00qt6R
Gugg3mIVxRNXIKWXQBWmlVvSI10EHVaGtt3dnTfwdo0166nuDtiK4lGBrGjesisgiu1SdaiN
koBBSdgvEfEtXyXeeq8YydRHQL0NXN5slFlWbczWWDtjtE6ddC1OtLNUXpUHgBg7RkHK714N
2iENybY2QQ6gHQMD08aXw63s9SOgi0bAC1sMHKAGeMQBYpz9oOmJA1EdbhGYWyvKb7YSqb2r
ZO4DpjCWwPQW/l/7od8p388nov5Hgj9atCjaMoaytDyqaLrEvii07r2nvRDEvhAfMrb2xE/b
ktfUNY7RmkIheDBWVQET9uS19Q1jtF4WVKrcabYAmcREJkN0LTkjHQVnJPKhrfiA/WrUp2jK
LNAlWMt4HLLPZtCjfLd6iTbBVytO5jPrMKkKLN7CyTbDZEimFjoG4LrLOs01BFo5H3UCD6vG
ibg5WD0e6fc21hS9Lwilvu7naFdgeDGAWTmKenrDBB2DI7hbSr2xGPIANjnjSLnMs3AQI1sD
S5JbRAvPIurC3zEownVy/YRTOGImUAfloKq+9xUSooFq0HI1yZUgqXblEgOWuUY6Cs5J5UNb
8QH61alO0ZfTqHfKdh3ynbT37eee6n+W3i9XsXUOrh28Kl4ur/1/jzsqvmnt5dDvlO/qwuW6
hktsjC285yu/KvUZYNIzI6k9Cz8z0ObVhdi6uHFirVrQFkBajFdmloUZ6GU2a2WvWx335Sx9
6A+daqmKzUDlC21tbZwSjN2ME0x5/gmcj8UNIbcjESzV9yrHZiIWyiKqysMjs3MRm0Y0WO1t
2wNHtCa3Mg5u2kVvFYurLW52ussfegPnWqpis1B3THK5KxdWqehzasLsXVxLMFgggLIZakE6
wQ2q/l5VDvlOpaACzbbdUY6oFGsmpaaqt685XpqCAqcmgAW+Yjds3T4nhGTesYWWja3yJrg5
0D3ow1FpuvP02Mytgu4KIovJ1uYmWBvCRIP+R7H8AZ3gAFDAEos6ndjco0wgx/oq0INVg0c8
LTQtSi+Vs7pUigYDhUrYGTGott1zn02Mytgu4KIovJ1uY8thY6rfZPGFnvwt811Dq4dvCpeL
q/LYd8p37I9+nr5n+NBJh9GDaXkut4pCsopkWKYt2rb/AAbmm16qNbssrFwZAWC2qwGWlxie
wkSKPx/4XDvlOw75TqBaY8/h3ynf4/P4d8p2zf8A89h3ynYd8p3h3ynVCnT/AMGh3ynYd8p1
9MFNefQ75TrBbamr9fw75TsO+U7oY6vn0O+U7oHn8O+U7T1qOvn0O+U6I2x1+vYd8p2HfKdQ
LdPP4d8p1n19h3ynYd8p0lzXz+HfKdPC+sId8p2HfKdU6iU6Ebdc9a5nM/22dagpHLzCHfKd
uZ+FaHqzX7UZyt/7Tp/sQbjFp5fDvlOqdRKdCaq6wcjY9CV5xusDuxoOg0H8vnkO+U6uh6UB
oL1ZS/aH5sPGHQYD6Lh3ynTsqtgDoC5xx/M44/mPZVbETYl+eQ75TvHObx45yeeQ75TpzAjZ
pkvPn4sWLzAjZolrHl/xw7/tdOmmnTlefPv/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/wD/AP8AqfXv23XpXWf/2gAIAQIDAT8h2BU0645kGZUoaxYOinNAmY8w
7x3+39zv9p3+39zv9p3+07vb+53e07vb+53e07vad3t/c7vad3tO72nd7Tu9p3e07vad3tO7
2nd7Tu9v7nd7Tu9v7nd7Tu9p3e07vad3tO72nd7Tu9p3e07vad3tO72nd7Tu9p3e07vad3tO
72nf7Tv9p3+07/ad/tO/2nf7Tv8Aad/tO/2mo+ycAZwBnAGDl7Ok4Axaj2eIL36eDtRX9QV6
34ZfgNWYjlWr2jNtGGRTmYNr/cpHS8cVevrmIH6axLDZ77Qeb1Oe8qLxQHvFRyKwQHq9vzHJ
jWv78o2+v+H4HhpeGW6aa9G9rhAWdC1nm48XKoQitLKpXJiA7+0wViu07H2hz5irbtMFYrtP
a6RXf2nFU7H2ma8X2gDe/aH2Ok635nWnW/M635nW/M635nWnW/M635nWnW/M60606060635n
WnWnW/M60606060635nWnWnWnWnWnWnWnWnWnWnWnWnWnWnWlZorpOATgE4BKEbuk4BM1+H/
ABUE0Dr59avwrZ85LR41lc42iGa+c0lc4isgDwQtvnd6BcUbfPMVGrOfANP/AKenKAvfz/V9
fP1rAHt9fPb18/3Lf+DCDZvlCEaPn1WFztGA4a+v0KuU0ex58xe2CivPrAZX1lwPPz44m6Ia
B0+vctr8/IsO/wBfYbVnz+5E39/rBag/7VAau+tSq035htwanrv9gAbpjawDy9aly42iajfz
y7ghmv0Y9mymxyn6In6Ih2LLbHLzz2L8ePuX488XBYA2+Z0PZ8zoez5g4LIm3z9Jf//aAAgB
AwMBPyFSGrFf31+JZFUccv8Ag48PbO2ds7J2TsnZO2ds7Z2TsnZOyds7Z2zsnZOydk7Z2zt9
52+87PednvOz3nb7zt952+87fedvvOz3nZ7zs952+/8AU0X3TipOKk4qRFrU9ZxUhVuHfw/M
/EqNhtx1mt6fmMSV4OWVExDMqvWVgV9pWI8o3+n+H5/48NTjfwoloQVrHt0+8cqVcBpz7y0p
lMtLS0tL/wDLBRVQAF/TnTnRnRnRnRnRnTnTnTnTnTnQnQnQnQnQ/E6X4nS/E6X4nS/E6X4n
S/E6H4lpqvqTipOKk4qRIbF7k4qRUvyP+LjAZx/X9eehcpd2/eJcuCw7bn9ecp9Xjkun5QDL
5mCwe8RbcvnGZafltNtErTps+HrSO7EW3Xzqh3aveA2qJUK+r/HnjNP+faCYN9WJ27/+nqvr
6v6+0+fr/wDBrIlefKav/AL58U8/t8/Aj9erPP8AT9fDXn9p9YOgNWJZzzf7bIleYXWbad5r
gGc5LR/2Kpq8vdAasMjtAMvmIaK93niC2mnO5hsHvEW3L9FpctLRL881eOrzxUvLwX0l/9oA
DAMBAAIRAxEAABCsw0QiHrdZ9PrP4wGiGQ0UiPL9ZrSCGXmatrOBFBz9Pf5qEGT5rWEGygmf
Pxt8eeVXTKwwVP55pffWUEX7pp7fNEUyz3bQDkSSSSSSScySSSSSSSSSSSSSSSQSSSSSciSS
SSSSe5SSSSSSSSSSSSSSSSCSSSSTkSSSSRaQu+SSSSSSSSSSSSSSSQSSSSSciSSSSNuBSSSS
SSSSSSSSSSSSSCSSSSTkSSSSJfSSSSSSSSSSSSSSSSSSQSSSSSciSSSSqSSSSSSSSSSSSSSS
SSSSCSSSSTkSSSSOSSSSSSSSSSSSSSSSSSSQSSSSSciSSSSSSSSSSSSSSSSSSSSSSSSCSSSS
TkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSciSSSSSSSSSSSSSSSSSSSSSSSSCSSSSTkSSSSSSS
SSSSSSSSSSSSSSSSSQSSSSSciSSSSSSSSSSSSSSSSSSSSSSSSCSSSSTkSSSSSSSSSSSSSSSS
SSSSSSSSQSSSSSciASCCCSCSASSSSSSSSSSSSSSSCSSSSTkQCQSSQSCASQAySSSSSSSSSSSQ
SSSSSciCQASSQSQCQCCSSSSSSSSSSSSCSSSSTkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSScgQS
SSSCSSSSACSSSSSSSSSSSSCSSSSTkQAACSSAySSAASSSSSSSSSSSSQSSSSSciQSSSQAAQSAQ
CSSSSSSSSSSSSCSSSSTkQSAASCEQQQCSSSSSSSSSSSSSQSSSSSciSSSSSSSSSSSSSSSSSSSS
SSSSCSSSSTkQAQWCQCGUCwCQAQASmSSSSSSQSSSSSciQSSCCAAQSQSSCQCQQSSSSSSSCSSSS
TkSQACSAAQSCACQGACQCSSSSSSQSSSSSciSSSSSSSSSSSSSSSSSSSSSSSSCSSSSTkSSSSCSS
SSSSSSSSSSSSSSSSSQSSSSSciQSCCSCAACQAySSSSSSSSSSSSCSSSSTkQSSAQASQSASQSSSS
SSSSSSSSQSSSSSciSSCSQCSSSSSSSSSSSSSSSSSSCSSSSTkSSSSSSSSSSSSSSSSSSSSSSSSQ
SSSSSciSSSSSSSSSSSSSSTSSSSSSSSSCSSSSTkSSSSSSSSSSSSSSSWSSSSSSSSQSSSSSciSS
SSSSSSSSSSSSTySSSSSSSSCSSSSTkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSciSSSSSSSSSSS
SSSQSSSSSSSSSCSSSSTkSSSSSSSSSSSSSSSCSSSSSSSSQSSSSSciSSSSSSSSSSSSSSSSSSSS
SSSSCSSSSTkSSSSSSSSSSSSSSSSSSSbySSSQSSSSSciSSSSSSSSSSSSSSSSSSTySSSSCSSSS
TkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSciSSSSSSSSSSSSSSSSSSSTuSSSCSSSSTkSSSSSSS
SSSSSSSSSSSSSbSSSQSSSSSciSSSSSSSSSSSSSSSSSSSRqSSSCSSSSTkSSSSSSSSSSSSSSSS
SSSSJySSQSSSSSciSSSSSSSSSSSSSSSSSSSSSSSSCSSSSTkSSSSSSSSSSSSSSSSSSSSKSSSQ
SSSSSciSSSSSSSSSSSSSSSSSSSQSSSSCSSSSTkSSSSSSSSSSSSSSSSSSSSSSSSQSSSSSciSS
SSSSSSSSSSSSSSSSSRSSSSCSSSSTkSSSSSSSSSSSSSSSSSSSSCSSSQSSSSSciSSSSSSSSSSS
SSSSSSSSSSSSSCSSSSTkSSSSSSSSSSSSSWSSSSSSGSSSQSSSSSciSSSSSSSSSSSSSRySSSSS
OSSSCSSSSTkSSSSSSSSSSSSSh2SSSSSSSSSQSSSSSciSSSSSSSSSSSSJeSSSSSSSSSSCSSSS
TkSSSSSSSSSSSSSSSSSSSRNqSSQSSSSSciSSSSSSSSSSSSSSSSSSSMBySSCSSSSTkSSSSSSS
SSSSSSSSSSSSS/2SSQSSSSSf/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A
/wD/AP8A/wD/AP8A/9oACAEBAwE/EHDeNAm1Ao8qNGe6gJkNpo6ygWvND/AjRkiTwEsT/R58
pRtz4cGHgMgEoEoEAEUEkE8HgZOkSkGn+m7dKjZOHiZUngAkH93D9nA/s4fuYH9zA/uoH9l4
DB4QaHgI6Q0gpJW+aSxYN3L2pxp/EAuuanXNboDYFpSXxp/EwCoGKCQkxPTajqXxp/ENsKJy
SUAGWK2u0mnuuGwZYYZdDVrnw91U6NVQl2rc3/cYqNjcSAv9AOqVABkgFpjFqt2gLzQKpdt0
7M/50ByDgBV5jNozIbYvdQBnAYiEwYGE6LgKDXIpUUhdqXY1gRlWMFqeaS5FmnUGjRlavk0G
iLgDnOFRE230pTfM+GIqUje7NwFiguKwAvE1GNKHz2ZZxvFAhprTDbkWjPMq8hjBUbZYFFDR
CEO0IQgdIQOkIQdIQhCEIHSB0hA6QhCEIQ7QhA6QgQgdPAdoeEe1qOd4sdUFengV3tUXn4qh
oleAhOfJlFkIsmQbAYfFd69CRWBbYURBpTNLUEqupjfUgfjA1lqfULjY6RCvi0xayTqnUCt2
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
--------------010404080007000902000102
Content-Type: text/plain;
 name="SpaceInvaders.as"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="SpaceInvaders.as"

--
-- A simple implementation of a space invaders game in Fruit
--
-- Author: Antony Courtney, 06 Feb. 03
--
-- In response to a message on the Haskell GUI list <gui@haskell.org>
-- by George Russell of 04 Feb 2003.

module SpaceInvaders where

import Haven
import GUI
import Random
import List
import AFRPSimUtils
import GUISimUtils

-- N.B.:  I'll try to develop this in a modular way from the original
-- specification, developing some individual components that can
-- be tested and reused independently of one another as much as possible.

-- Simple graphics stuff:
-- walls:
rpath :: Point -> Double -> Double -> Path
rpath pt w h = outline $ rectangle pt w h

vWalls :: Path
vWalls = rpath (point 0 0) 10 500
	<++> rpath (point 400 0) 10 500

wallPath :: Path
wallPath = vWalls

wallPic :: Picture
wallPic = withColor black $ picFill wallPath


-- the outline of an invader centered at (xpos,ypos), with heading theta.
-- We'll rotate the triangle so that it points in the direction of the
-- heading:
invaderPath :: Double -> Double -> Double -> Path
invaderPath xpos ypos theta = 
  translate (vector xpos ypos) %$ rotate (-theta) %$ 
    polygon [point (-15) (-10),point 15 0,point (-15) 10]

-- render invaders in red:
renderInvader :: Path -> Picture
renderInvader invader = withColor red $ picFill invader

-- First, let's construct an animation of a ship that accelerates in the
-- direction specified by accTheta.
-- Since we know that accTheta will eventually be a time-varying input,
-- we specify it as an input signal rather than a (static) argument.
simpleInvader :: Double -> Point -> SF Double Path
simpleInvader gameSpeed pt0 = proc accTheta -> do
  rec -- accelerate in x faster than in y:
      vx <- integral -< 3 * gameSpeed * cos accTheta
      vy <- integral -< (-gameSpeed) * sin accTheta
      xi <- integral -< vx
      yi <- integral -< vy
      let xpos = (pointX pt0) + xi
	  ypos = (pointY pt0) + yi
      let invader = invaderPath xpos ypos accTheta
  returnA -< invader

-- An executable test of simpleInvader:
invTest0 :: GUI () ()
invTest0 = proc (gin,_) -> do
  inv <- simpleInvader 50 (point 250 0) -< ((-pi) / 6)
  returnA -< (renderInvader inv,())

-- According to the spec, an alien is a triangular space ship that can
-- change between one of three directions at random.
--
-- We'll maintain two random signals:  One will tell us whether or
-- not to change direction, and the other will tell us what the new
-- heading should be.
randomInvader :: (RandomGen g) => g -> Double -> Point -> SF () Path
randomInvader g gameSpeed pt0 = proc _ -> do
  rec rs <- randomRsf (1 :: Int,100) g -< ()
      changeDirE <- edge -< (rs < (round (p * 100)))
      ds <- randomRsf (0,2) g -< ()
      let newDirE = changeDirE `tag` (headings !! ds)
      theta <- hold ((-pi)/4) -< newDirE
      invader <- simpleInvader gameSpeed pt0 -< theta
  returnA -< invader
  where
    headings = [ ((-pi) * (3/4)), ((-pi) / 2), ((-pi) / 4)]
    p = 0.07 -- instantaneous probability of change in direction

invTest1 :: (RandomGen g) => g -> GUI () ()
invTest1 g = proc (gin,_) -> do
  inv <- randomInvader g 20 (point 250 0) -< ()
  returnA -< (renderInvader inv,())

-- Now let's make the invader bounce off of the walls.
--
-- All we need to do here is detect when we hit a wall (x position crosess
-- below left wall or above right wall) and create an impulse in the
-- acceleration (which leads to a sudden step in velocity).  We'll use
-- the impulseIntegral utility signal function for this.  (There is no
-- "magic" in this utility function; See Paddleball implementation in
-- Hudak's book or the fruit paper for a similar "bounce" effect).
-- The code here is copied from simpleInvader, with a few minor changes
-- to use impulseIntegral in place of integral for computing x velocity.
bounceInvader :: Double -> Point -> SF Double Path
bounceInvader gameSpeed pt0 = proc accTheta -> do
  rec -- accelerate in x faster than in y:
      let ax = 3 * gameSpeed * cos accTheta
      vx <- impulseIntegral -< (ax, xbounce)
      vy <- integral -< (-gameSpeed) * sin accTheta
      xi <- integral -< vx
      yi <- integral -< vy
      let xpos = (pointX pt0) + xi
	  ypos = (pointY pt0) + yi
      hitL <- edge -< xpos < 15
      hitR <- edge -< xpos > 400
      -- We use the velocity just before the time of impact to compute
      -- the impulse:
      dvx <- iPre 0 -< vx
      let xbounce = (hitL `merge` hitR) `tag` (-2 * dvx)
      let invader = invaderPath xpos ypos accTheta
  returnA -< invader

invTest2 :: GUI () ()
invTest2 = proc (gin,_) -> do
  inv <- bounceInvader 50 (point 250 0) -< ((-pi) * 0.75)
  returnA -< (renderInvader inv,())

-- Now let's just use "bounceInvader" in place of "simpleInvader" in
-- the implementation of randomInvader:
rbounceInvader :: (RandomGen g) => g -> Double -> Point -> SF () Path
rbounceInvader g gameSpeed pt0 = proc _ -> do
  rec rs <- randomRsf (1 :: Int,100) g -< ()
      changeDirE <- edge -< (rs < (round (p * 100)))
      ds <- randomRsf (0,2) g -< ()
      let newDirE = changeDirE `tag` (headings !! ds)
      theta <- hold ((-pi)/4) -< newDirE
      invader <- bounceInvader gameSpeed pt0 -< theta
  returnA -< invader
  where
    headings = [ ((-pi) * (3/4)), ((-pi) / 2), ((-pi) / 4)]
    p = 0.07 -- instantaneous probability of change in direction

invTest3 :: (RandomGen g) => g -> GUI () ()
invTest3 g = proc (gin,_) -> do
  inv <- rbounceInvader g 20 (point 250 0) -< ()
  returnA -< (renderInvader inv,())

-- The player's gun, centered at the given x position:
gunPath :: Double -> Path
gunPath xpos =
  outline $ rectangle (point (xpos - 15) 450) 30 20

renderGun :: Path -> Picture
renderGun gun = withColor blue $ picFill gun

gunTest0 :: GUI () ()
gunTest0 = proc (gin,_) -> do
  mpos <- ginMouse -< gin
  let gunPic = renderGun (gunPath (pointX mpos))
  returnA -< (gunPic,())


-- Let's assemble these components into a game, using the basic 
-- simulation framework provided by GUISimUtils.
--

-- Recall that, in Fruit, a GUI is just:
--   GUI a b = SF (GUIInput,a) (Picture,b)

-- Our simulation framework provides a small amount of infrastructure
-- (built around AFRP's pSwitch combinator) for simulations composed of
-- a time-varying collection of signal functions.  The user needs only
-- to specify the initial collection, a signal function that specifies
-- when to add a new element to the collection, and a function (applied
-- pointwise) to determine when an element should be removed from the
-- collection.

--
-- Each simulated entity has type:
--  SimGUI a b = SF ((GUIInput,a),[b]) (Picture,b)
--
-- This is almost identical to the (GUI a b), but the input signal to 
-- a SimGUI includes a [b]; this is a delayed, fed-back view of the entire
-- simulated world, which allows simulated entities to react to other
-- entities in the simulation.

-- In addition to a Picture, each SimGUI produces an output signal
-- carrying the individual GUI's contribution to the game universe,
-- collected together in the following algebraic data type:
--

data GameObject = Invader { objPath :: Path,
                            objKilled :: Event (), -- hit by a bullet
                            invLanded :: Event () -- game over!
			   }
		| Bullet { objPath :: Path,
			   objKilled :: Event () -- hit an invader
			 }
		| Gun { objPath :: Path, 
			objKilled :: Event (), -- never
			gunFired :: Event Double 
		      }

-- some useful auxiliary functions on GameObjects:
isGunshot :: GameObject -> Bool
isGunshot g@(Gun {}) = isEvent (gunFired g)
isGunshot _ = False

isDeadInvader :: GameObject -> Bool
isDeadInvader g@(Invader {}) = isEvent (objKilled g)
isDeadInvader _ = False

isLandedInvader :: GameObject -> Bool
isLandedInvader g@(Invader {}) = isEvent (invLanded g)
isLandedInvader _ = False

isBullet :: GameObject -> Bool
isBullet (Bullet {}) = True
isBullet _ = False

isInvader :: GameObject -> Bool
isInvader (Invader {}) = True
isInvader _ = False

bulletPaths :: [GameObject] -> [Path]
bulletPaths = map objPath . filter isBullet

invaderPaths :: [GameObject] -> [Path]
invaderPaths = map objPath . filter isInvader

hitAny :: [Path] -> Path -> Bool
hitAny paths tpath = or $ map (\p -> intersectsRect p (bounds tpath)) paths

-- An invader as a SimGUI.  Note that the output signal is a GameObject,
-- and the input signal includes a list of GameObject (an observation of
-- the other members of the dynamic collection).
--
mkInvader :: (RandomGen g) => g -> Double -> Point -> SimGUI () GameObject
mkInvader g gameSpeed pt0 = proc ((gin,_),world) -> do
  invader <- rbounceInvader g gameSpeed pt0 -< ()
  hitGround <- edge -< pointY (rectPointA (bounds invader)) > 420
  hitBullet <- edge -< hitAny (bulletPaths world) invader
  returnA -< (renderInvader invader,
	      Invader { objPath = invader,
			invLanded = hitGround,
			objKilled = hitBullet
		      })

gun :: SimGUI () GameObject
gun = proc ((gin,_),_) -> do
  mpos <- ginMouse -< gin
  lbp <- ginLbp -< gin
  let gunPos = pointX mpos
      gpath = gunPath gunPos
  returnA -< (renderGun gpath,
	      Gun { objPath = gpath,
		    objKilled = noEvent,
		    gunFired = (lbp `tag` gunPos)
		  })

-- A bullet, located at (x,y)
bulletPath :: Double -> Double -> Path
bulletPath x y =
  outline $ rectangle (point (x-2.5) (y-5)) 5 10

renderBullet :: Path -> Picture
renderBullet b = withColor yellow $ picFill b

-- A simple, constant velocity bullet:
simpleBullet :: Double -> SF () Path
simpleBullet xpos = proc _ -> do
  yi <- integral -< (-150)
  let ypos = yi + 450
  returnA -< bulletPath xpos ypos

bullet :: Double -> SimGUI () GameObject
bullet xpos = proc ((gin,_),world) -> do
  b <- simpleBullet xpos -< ()
  hitInvader <- edge -< hitAny (invaderPaths world) b
  returnA -< (renderBullet b,
	      Bullet { objPath = b,
		       objKilled = hitInvader
		     })

-- And now just invoke the guiSimulator, passing as arguments an initial 
-- world, a signal function that spawns new bullets, and a function to
-- determine when invaders or bullets die.
--

-- This version implements just a single invader that dies when hit
-- by a bullet:
--
basicInvaders :: (RandomGen g) => g -> Double -> GUI () ()
basicInvaders g gameSpeed = proc (gin,_) -> do
  (pic,objs) <- guiSimulator_ world0 spawnsf 
		 (isEvent . objKilled) -< (gin,())
  returnA -< (pic <++> wallPic,())
  where
    world0 =  [mkInvader g gameSpeed (point 250 0), gun ]

    -- A signal function that observes the external input and the collection
    -- output and produces an event when a new signal function should be
    -- spliced in to the collection.
    --
    -- For SpaceInvaders, we examine the world for any shots fired
    -- from any guns, and use this to spawn a bullet from the location of
    -- the shot.
    spawnsf :: SF ((),[GameObject])
                  (Event [SimGUI () GameObject])
    spawnsf = proc (_,world) -> do
      let -- spawnE :: Event [GUI () GameObject]
          spawnE = maybe noEvent (\g -> fmap ((:[]) . bullet) (gunFired g))
                      (find isGunshot world)
      returnA -< spawnE

-- A slightly more sophisticated version; here we will spawn a new
-- invader every time an invader is killed, and we keep track of score:
multiInvaders :: (RandomGen g) => g -> Double -> GUI () ([GameObject],Int)
multiInvaders g gameSpeed = proc (gin,_) -> do
  (pic,(objs,score)) <- guiSimulator world0 spawnsf 
		  	(isEvent . objKilled) accScore 0 -< (gin,())
  returnA -< (pic <++> wallPic,(objs,score))
  where
    -- let's also have a few more invaders at the start, to add to the
    -- challenge:
    world0 =  [mkInvader g gameSpeed (point 50 0), 
	       mkInvader g gameSpeed (point 150 0), 
	       mkInvader g gameSpeed (point 350 0), 
	       gun ]

    -- A signal function that observes the external input and the collection
    -- output and produces an event when a new signal function should be
    -- spliced in to the collection.
    --
    -- For SpaceInvaders, we examine the world for any shots fired
    -- from any guns, and use this to spawn a bullet from the location of
    -- the shot.
    spawnsf :: SF ((),[GameObject])
                  (Event [SimGUI () GameObject])
    spawnsf = proc (_,world) -> do
      nextypos <- randomRsf (50,350) g -< ()
      let spawnBulletE = maybe noEvent (\gun -> fmap ((:[]) . bullet) 
              					(gunFired gun))
			 (find isGunshot world)
	  spawnInvaderE = maybe noEvent 
                                (\inv -> objKilled inv `tag`
				         [mkInvader g gameSpeed 
						      (point nextypos 0)])
			  (find isDeadInvader world)
          spawnE = mergeBy (++) spawnBulletE spawnInvaderE
      returnA -< spawnE
    accScore score obj =
      if (isInvader obj) then score+1 else score

-- Now, let's add detection of when the game is over (due to an alien
-- succesfully landing), and an extra "gameOver" state that will nicely
-- display the user's score (over a snapshot of the Picture of the
-- in-progress game) and allow the user to restart the game.
--
-- Note that we all of this functionality is added as a wrapper around
-- multiInvaders; no cut and paste required.
--

-- We use the "kSwitch" combinator here to construct a simple state machine,
-- running the game until an invader lands, and then switching into a
-- "gameOver" GUI until the user restarts the game.  kSwitch has the
-- signature:
--    kSwitch  :: SF a b                -- SF to run initially
--                -> SF (a,b) (Event c) -- tells us when to switch
--                -> (SF a b -> c -> SF a b) -- determines what we switch into
--                -> SF a b
--
invaders :: (RandomGen g) => g -> Double 
	          -> GUI () (Maybe ([GameObject],Int))
invaders rgen gameSpeed = 
  kSwitch maybeInvaders checkLanding (gameOver rgen gameSpeed)
  where
    -- A lifting of the output sample to maybe type:
    maybeInvaders :: GUI () (Maybe ([GameObject],Int))
    maybeInvaders = proc (gin,_) -> do
      rec (pic,(world,score)) <- multiInvaders rgen gameSpeed -< (gin,())
      returnA -< (pic,Just (world,score))
    -- A signal function to check whether any invader has
    -- succesfully landed, indicating that the game is over:
    checkLanding :: SF ((GUIInput,()),(Picture,Maybe ([GameObject],
						      Int))) 
		       (Event (Picture,Int))
    checkLanding = proc ((gin,_),(pic,Just (world,score))) -> do
      let landed = any isLandedInvader world
      gameOverE <- edge -< landed
      returnA -< (gameOverE `tag` (pic,score))

gameOver :: (RandomGen g) => g -> Double 
            -> (GUI () (Maybe ([GameObject],Int)))
            -> (Picture,Int)
            -> (GUI () (Maybe ([GameObject],Int)))
gameOver rgen gameSpeed _ (gpic,score) = 
  kSwitch scoreGUI checklbp (\_ _ -> invaders rgen gameSpeed)
  where
    checklbp = proc ((gin,_),_) -> do
      ginLbp -< gin
    scoreGUI = proc (gin,_) -> do
      returnA -< (scorePic gpic score, Nothing)
    -- place game over message over the picture of the game:
    scorePic :: Picture -> Int -> Picture
    scorePic bg score =
      let f_SS_b = font "SansSerif" bold 28
      in (place (point 20 100) $ withColor black $ withFont f_SS_b $
	  (picText "GAME OVER!" 
	   `vcomp` picText ("Your Score: " ++ show score)
	   `vcomp` picText "Press mouse button"
           `vcomp` picText "to play again."))
         <++> bg

--------------010404080007000902000102--