diff options
| author | dumpfmprod <dumpfmprod@ubuntu.(none)> | 2010-06-17 00:34:02 -0400 |
|---|---|---|
| committer | dumpfmprod <dumpfmprod@ubuntu.(none)> | 2010-06-17 00:34:02 -0400 |
| commit | e890d6d91db6d716beeb22c94d6bf0a9d88f1ef5 (patch) | |
| tree | 9891d77bbfaa7459783605b29906d3aa06ba5801 /static | |
| parent | f43aa915a5b5268b7b05e2a3f15d128ee218ade5 (diff) | |
sostler prod commit
Diffstat (limited to 'static')
85 files changed, 1820 insertions, 12 deletions
diff --git a/static/css/admin.css b/static/css/admin.css index 10932e8..8aa758e 100644 --- a/static/css/admin.css +++ b/static/css/admin.css @@ -1,3 +1,4 @@ + .errorbox { border: 2px solid red; } @@ -12,4 +13,24 @@ color:red; } #adminmute a:hover{ color:blue; -}
\ No newline at end of file +} + +.msvDiv { + cursor: pointer; +} +.errorbox { + border: 2px solid red; +} +#adminmute{ +position:absolute; +color:red; +font-weight:bold; +top:0;left:5; +} +#adminmute a{ +color:red; +} +#adminmute a:hover{ +color:blue; +} + diff --git a/static/css/dump.css b/static/css/dump.css index a587ed3..9f7d1dd 100755 --- a/static/css/dump.css +++ b/static/css/dump.css @@ -44,12 +44,16 @@ a:active { font-size:14px; color: #fff; } +#dcontent{ + z-index: 3; + overflow: auto; + min-width:600px; +} #content{ z-index: 3; overflow: auto; min-width:600px; } - #chatboxx { position: fixed; top:80px; @@ -90,7 +94,7 @@ bottom:76; bottom:-8px; line-height:1.6; font-size:11px; -word-spacing:6px; +word-spacing:15px; height:28px; color: #000; @@ -478,15 +482,14 @@ border:1px solid blue; border-right:2px solid #c8cbce; border-bottom:2px solid #c8cbce; - box-shadow: 3px 4px 4px #c8cbce; --webkit-box-shadow: 3px 4px 4px #c8cbce; --moz-box-shadow: 3px 3px 4px #c8cbce; -filter: progid:DXImageTransform.Microsoft.dropShadow(color=#c8cbce, offX=3, offY=4, positive=true); + box-shadow: 3px 4px 3px #c8cbce; +-webkit-box-shadow: 3px 4px 3px #c8cbce; +-moz-box-shadow: 3px 3px 3px #c8cbce; text-overflow:ellipsis; /* opacity:0.75;*/ z-index:18; text-align: left; -background-image:url(/static/img/bg.dither.gif); +background-color:white; } #userList a:hover{color:#ffffff;} diff --git a/static/css/header.css b/static/css/header.css index fd189f1..9a80830 100755 --- a/static/css/header.css +++ b/static/css/header.css @@ -243,4 +243,343 @@ a.youtube { cursor:pointer; width:100; } + /*searchstuff*/ +#searchbox{ +position:absolute; +top:19px; +margin-right:10px; +} +#search-query{ +background: white; +border: 1px solid #999; +color: #C0C8D3; +font-size: 13px; +padding: 3px 12px 3px 37px; +padding-left: 37px; +padding-left: 37px; +width:190px; + +} +#search-query .search_icon { +background:url("http://dump.fm/static/img/hourglass.png") no-repeat scroll center center transparent; +bottom:3px; +cursor:pointer; +left:6px; +opacity:0.8; +position:absolute; +top:3px; +width:32px; +} + +.white a:hover { + text-decoration: none; + color: #fff; +} +.white a:active { + text-decoration: none; + + + color: #fff; +} +#header7{ + margin: 0px auto -1px auto; + top:-1px; +height:49px; + position:fixed;background-image:url(/static/img/bg.dither.gif); +background-color:#eee; +border:1px solid #000; +width:100%; +min-width:600px; +left:-1px; + box-shadow: 0 0 10px #d8dbde, 0px 0px 2px #000; + -webkit-box-shadow: 0 0 10px #d8dbde, 0px 0px 2px #000; + -moz-box-shadow: 0 0 10px #d8dbde, 0px 0px 2px #000; +} +#bar7{ + top:19px; + position:absolute; + word-spacing:-1; + font-size: 16px; +height:22; + +text-indent:14px; +line-height:1.9; + left: 125px; + margin-left: 0.1%; + margin-right: 8%; + letter-spacing:.2px; + z-index: 999; +} + +#bar7 img{ +margin-top:4;display:none; + vertical-align: top; +} +#bar7 a{ + text-decoration: none; + font-size:13; +padding:6px; +cursor:pointer; + color: #000; + + +} +#bar7 a:hover{ + text-decoration: none; +padding:6px;background-color:#fff; + color: #000; + +} +#logout7{ + top:-1px; +height:16px; +padding-left:4px;padding-right:3px; + + border-bottom-left-radius:3px; + -webkit-border-bottom-left-radius:3px; + -moz-border-radius-bottomleft:3px; + position:relative; + font-size:1px; +border-left:1px solid #999; +border-bottom:1px solid #999; +background-color:#eff5fb; + float:right; + font-family: Arial, Helvetica, sans-serif; + font-weight: normal; +} +#logout7 img{display:none; +} +#logout7 a{font-size:10px; color: #5a5858; + +} +#logout7 a:hover{font-size:10px; +color:#000; text-shadow: 0px 1px 0px #fff; +} +#toplogin{ +margin-top:8px; +margin-right:5px; + +} + +.white a:link { + text-decoration: none; + font-size:14px; + color: #fff; +} +.white a:visited { + text-decoration: none; + font-size:14px; + color: #fff; +} +#logo7{ + margin-left: 10px; + z-index:1050; text-decoration: none; + float:left; + margin-top:-1px; +} +#logo7 a{font-size:28px; + +letter-spacing:-1; +font-weight:bold; text-decoration: none; +color:#000; +} +#logo7 a:hover{ +color:#000; text-decoration: none; +text-shadow: -0.5px -0.5px 0px #f0e; +} +#dumplist{ +top:0px:width:100%;padding:0px;background-color:#fff; +color:#000;font-size:60%;text-transform:uppercase;text-decoration: none; +border-bottom:1px solid #999;text-align:right; +padding-right:70px;line-height:1.1;background-color:#eff5fb; +/*margin-left:40%; + border-bottom-left-radius:5px; + -webkit-border-bottom-left-radius:5px; + -moz-border-radius-bottomleft:5px;text-decoration: none; +border-left:1px solid #999;*/ +} +#dumplist a{color:#000;font-size:100%;text-transform:uppercase;text-decoration: none; +} +#dumplist a:hover{color:#000;text-decoration: none; + +} +#rapper7{ + top: 0px; + left:0px; + position:absolute; + width: 100%; + height: 62px; + z-index: 1000; +} +#logoicons{ +width:auto; +} +#registerlink{ + font-size: 16px; +word-spacing:2; +line-height:2.4; +font-weight:bold; +} + +#registerlink img{ +display:none; +} + +.no-cursor { cursor: none; } +.invisible { display: none !important; } +#cursor-big { position: absolute; z-index: 1000; } + +.thumb { + cursor:pointer; +} + +img.chat-thumb { + cursor:pointer; + position: absolute; + /*margin-top: -10px;*/ + width: 16px; + height: 16px; + bottom: 4px; + right: 4px; + /*left: 4px;*/ + display: block; + margin: 0; + padding: 0; +} + + +.dump .nick { + position: relative; + padding-right: 15px; +} + +.logged-dump { + position: relative; +} + +/* sharing */ +.buttons{ + cursor:pointer; + + +} +.buttons .share { + opacity: 0.8; +} +.buttons .share:hover { + opacity: 1; +} +.buttons .other-sites { + /*padding-left: 20px;*/ +} +img.thumb { + position: absolute; +image-rendering: -moz-crisp-edges; + margin-left: 0px; + margin-top: 0px; + height: 27px; + width: 27px; + left:110px; + bottom: 9px; + display: block; +} + +.thumb.favorite { + position: absolute; + margin-left: 0px; + margin-top: 0px; + height: 27px; + width: 27px; + display: block; +} + +a.youtube { + position: relative; +} + +.youtube .youtube-thumb { + width: 130px; + height: 97px; + padding-bottom: 22px; + margin: 0; +} +.youtube .youtube-controls { + position: absolute; + left: 0; + bottom: 0; + margin: 0; +} +.share-buttons{ +cursor:pointer; +width:100; +} +.msvDiv { + cursor: pointer; +} + +div.msgDiv:hover { + cursor: pointer; +background-image:url("/static/img/thumbs/smallheart.gif"); + +} + +.msgDiv.favorite{ + cursor: pointer; +background-image:url("/static/img/thumbs/grheart.gif"); +} +.content{background-color:white;} +.nick{background-color:white;margin-right:3px;} +.msgDiv dump{background-color:white;} + /*searchstuff*/ +#searchbox{ +position:absolute; +top:18px; +right:36px; +} +#search-query{ +background: white; +border: 1px solid #999; +color: #C0C8D3; +font-size: 13px; +padding: 3px 12px 3px 37px; +padding-left: 37px; +text-indent:5px; + border-radius: 50px; + -webkit-border-radius: 50px; + -moz-border-radius: 50px; +} +.search_icon { +background:url("http://dump.fm/static/img/hourglass.png") no-repeat scroll center center transparent; +bottom:3px; +cursor:pointer; +left:6px; +opacity:0.8; +border-right:1px solid #C0C8D3; +position:absolute; +top:3px; +width:32px; +} + +#searchresults{ + top:50px; + overflow:auto; + position:fixed;background-image:url(/static/img/bg.dither.gif); +background-color:#eee; +width:100%; +min-width:600px; +border-bottom:1px solid #000; +left:-1px; +margin-top:-1px; +} +#searchresults img{ + max-width:300px; + width: expression(this.width > 300 ? 300: true); + max-height:50px; + height: expression(this.width > 300 ? 300: true); + max-width:300px; + border:1px solid #eee; + float:left; + display:inline; + margin-right:10px; +}
\ No newline at end of file diff --git a/static/img/colorshift.gif b/static/img/colorshift.gif Binary files differnew file mode 100644 index 0000000..f27eaec --- /dev/null +++ b/static/img/colorshift.gif diff --git a/static/img/hourglass.png b/static/img/hourglass.png Binary files differnew file mode 100644 index 0000000..cc0a6e5 --- /dev/null +++ b/static/img/hourglass.png diff --git a/static/img/thumbs/favidear.gif b/static/img/thumbs/favidear.gif Binary files differnew file mode 100644 index 0000000..83b8cfe --- /dev/null +++ b/static/img/thumbs/favidear.gif diff --git a/static/img/thumbs/grheart.gif b/static/img/thumbs/grheart.gif Binary files differnew file mode 100644 index 0000000..ec66c55 --- /dev/null +++ b/static/img/thumbs/grheart.gif diff --git a/static/img/thumbs/grhearthover.gif b/static/img/thumbs/grhearthover.gif Binary files differnew file mode 100644 index 0000000..4da2897 --- /dev/null +++ b/static/img/thumbs/grhearthover.gif diff --git a/static/img/thumbs/stripes.gif b/static/img/thumbs/stripes.gif Binary files differnew file mode 100644 index 0000000..cb2edbf --- /dev/null +++ b/static/img/thumbs/stripes.gif diff --git a/static/js/admin.js b/static/js/admin.js index e54368c..fc18685 100644 --- a/static/js/admin.js +++ b/static/js/admin.js @@ -102,4 +102,19 @@ Admin.cancelMute = function(id, nick) { buttons: { 'OK': submit , 'Cancel': close } }); html.dialog('open'); -}
\ No newline at end of file +} + + +/* +$('.msgDiv').live('mouseenter', function() { + $(this).css({'border': '1px dotted red', + 'margin': '-1' }); +}) + +$('.msgDiv').live('mouseleave', function() { + $(this).css({'border': 'none', + 'margin': '0'}); +}) + + +*/
\ No newline at end of file diff --git a/static/js/invalid_domains.js b/static/js/invalid_domains.js index e0159d0..7f9dd45 100644 --- a/static/js/invalid_domains.js +++ b/static/js/invalid_domains.js @@ -65,6 +65,8 @@ var InvalidDomains = [ "http://geneology2.com", "http://www.geneology2.com", "http://img.waffleimages.com", + "http://www.worldofstock.com", + "http://aphrodite.cooltext.com", "http://www.onemetal.com", "http://static.funnyjunk.com", "http://www.whimsical-wits.com", diff --git a/static/js/pichat.js b/static/js/pichat.js index 62cf52e..a236ba0 100644 --- a/static/js/pichat.js +++ b/static/js/pichat.js @@ -18,7 +18,7 @@ Imgs = { } Anim = { - "chatThumbBig": {"width": "27px", "height": "27px", "right": "0px", "bottom": "2px"}, + "chatThumbBig": {"width": "54px", "height": "54px", "right": "0px", "bottom": "2px"}, "chatThumbTiny": {"width": "8px", "height": "8px", "right": "8px", "bottom": "8px"}, "chatThumb": {"width": "16px", "height": "16px", "right": "4px", "bottom": "4px"}, "logThumb": {"width": "27px", "height": "27px", "marginRight": "0px", "marginTop": "0px"}, @@ -199,10 +199,10 @@ function buildMessageDiv(msg, isLoading) { var loadingClass = isLoading ? ' loading' : ''; var containsImageClass = LastMsgContainsImage ? ' contains-image' : ''; return '<div class="msgDiv dump ' + loadingClass + containsImageClass + '" ' + msgId + '>' - + '<span class="nick"><b><a href="http://dump.fm/' + nick + ' ">' + nick + '</a></b>' + + '<span class="nick"><b><a href="http://dump.fm/' + nick + ' " target="_blank">' + nick + '</a></b>' + ' <img src="'+Imgs.chatThumbDot+'" class="chat-thumb" onclick="Tag.favorite(this)"> ' + '</span>' - + buildMsgContent(msg.content) + + '<span class="content">' + buildMsgContent(msg.content) + '</span>' + '</div>'; } @@ -1032,3 +1032,21 @@ function startTitleUpdater() { $(function() { OrigTitle = $('title').text(); }); + + +$('.msgDiv').live('click', function(e) { + var tagName = e.target.tagName; + if (tagName == 'A' || tagName == 'IMG') { + return; + } + var wasFavorited = $(this).hasClass("favorite"); + var button = $(this).find('.chat-thumb'); + if (wasFavorited) { + $(button).attr("src", Imgs.chatThumbOff); + } else { + $(button).attr("src", Imgs.chatThumbBig); + $(button).stop().animate(Anim.chatThumbBig, 'fast').animate(Anim.chatThumb, 'fast', 'swing'); + } + Tag.favorite(button); + return false; +}); diff --git a/static/tests/avatars.html b/static/tests/avatars.html new file mode 100644 index 0000000..37b5577 --- /dev/null +++ b/static/tests/avatars.html @@ -0,0 +1,40 @@ +<html> +<head> +<style> +img { width: 32px; height: 32px; } +</style> +</head> +<body> +<div> +<img src="http://dump.fm/avatars/20100328/1269820420675-dumpfm-andrej-a2bone.gif"><br> +<img src="http://dump.fm/avatars/20100528/1275024874455-dumpfm-erikhaspresence-logo.gif"><br> +<img +src="http://dump.fm/avatars/20100609/1276057658623-dumpfm-maryrachel-1276057548339-dumpfm-lobstersoap-lobstersoap_mr2.gif"><br> +<img src="http://dump.fm/avatars/20100430/1272664838950-dumpfm-DaK4nDyM4nFU-cupcake-flashback.gif"><br> +<img +src="http://dump.fm/avatars/20100424/1272088155321-dumpfm-thekraken-ac37341b3621ae002fe5fbf7bf829be0c04df97c_m.gif"><br> +<img src="http://imgur.com/H0sNp.gif"><br> +<img src="http://dump.fm/avatars/20100605/1275765282700-dumpfm-foot-dizzy-jump.gif"><br> +<img src="http://dump.fm/avatars/20100602/1275456693159-dumpfm-Savour-pikasleepgif.gif"><br> +<img src="http://dump.fm/avatars/20100413/1271199038897-dumpfm-cdma-Game_of_life_animated_glider.gif"><br> +<img src="http://dump.fm/avatars/20100531/1275301955882-dumpfm-whatevz-Zeke_sodabomb_side.gif"><br> +<img src="http://dump.fm/images/20100410/1270925016612-dumpfm-justytamp-Laptop.gif"><br> +<img src="http://dump.fm/avatars/20100609/1276134099153-dumpfm-ryder-4421765655_44401c9e82_o.gif"><br> +<img src="http://dump.fm/avatars/20100512/1273643435184-dumpfm-frankhats-dotfade.gif"><br> +<img src="http://dump.fm/avatars/20100423/1272000363897-dumpfm-stefan-See_King1.gif"><br> +<img +src="http://dump.fm/avatars/20100526/1274899226905-dumpfm-noisia-1274373752899-dumpfm-noisia-Neko_animated.gif"><br> +<img src="http://dump.fm/avatars/20100421/1271878413411-dumpfm-mat3i-404.gif"><br> +<img src="http://dump.fm/avatars/20100522/1274555551274-dumpfm-anitahug-creatures_015.gif"><br> +<img src="http://dump.fm/avatars/20100611/1276243669179-dumpfm-jertronic-smallercolordog.gif"><br> +<img src="http://dump.fm/avatars/20100407/1270672327296-dumpfm-illalli-wheelchair_lg_nwm.gif"><br> +<img src="http://dump.fm/avatars/20100517/1274085059285-dumpfm-AGT528-1267051064894-Pop-corn-5.gif"><br> +<img src="http://dump.fm/avatars/20100510/1273466455783-dumpfm-beaf-skream.gif"><br> +<img +src="http://dump.fm/avatars/20100415/1271354812432-dumpfm-melipone-1270872653089-dumpfm-tomauty-1245200306995.gif"><br> +<img src="http://dump.fm/avatars/20100515/1273927592920-dumpfm-frederick-683150mjhfl22ijf.gif"><br> +<img +src="http://dump.fm/avatars/20100605/1275748101974-dumpfm-minty-1275748020937-dumpfm-jumanji-1275745357313-dumpfm-minty-tetes_mort-04.gif"><br> +</div> +</body> +</html> diff --git a/static/tests/avatars/20100311/1268317730569-dumpfm-unicorngirl-unicornpink.gif b/static/tests/avatars/20100311/1268317730569-dumpfm-unicorngirl-unicornpink.gif Binary files differnew file mode 100644 index 0000000..e0b85c9 --- /dev/null +++ b/static/tests/avatars/20100311/1268317730569-dumpfm-unicorngirl-unicornpink.gif diff --git a/static/tests/avatars/20100311/1268317730569-dumpfm-unicorngirl-unicornpink.thumb.gif b/static/tests/avatars/20100311/1268317730569-dumpfm-unicorngirl-unicornpink.thumb.gif Binary files differnew file mode 100644 index 0000000..51f863b --- /dev/null +++ b/static/tests/avatars/20100311/1268317730569-dumpfm-unicorngirl-unicornpink.thumb.gif diff --git a/static/tests/avatars/20100311/1268331012620-dumpfm-AndersStuka-supermensa.png b/static/tests/avatars/20100311/1268331012620-dumpfm-AndersStuka-supermensa.png Binary files differnew file mode 100644 index 0000000..0873f9d --- /dev/null +++ b/static/tests/avatars/20100311/1268331012620-dumpfm-AndersStuka-supermensa.png diff --git a/static/tests/avatars/20100311/1268331012620-dumpfm-AndersStuka-supermensa.thumb.png b/static/tests/avatars/20100311/1268331012620-dumpfm-AndersStuka-supermensa.thumb.png Binary files differnew file mode 100644 index 0000000..c8c5530 --- /dev/null +++ b/static/tests/avatars/20100311/1268331012620-dumpfm-AndersStuka-supermensa.thumb.png diff --git a/static/tests/avatars/20100311/1268353224487-dumpfm-mu0p-mu0p.gif b/static/tests/avatars/20100311/1268353224487-dumpfm-mu0p-mu0p.gif Binary files differnew file mode 100644 index 0000000..4408809 --- /dev/null +++ b/static/tests/avatars/20100311/1268353224487-dumpfm-mu0p-mu0p.gif diff --git a/static/tests/avatars/20100311/1268353224487-dumpfm-mu0p-mu0p.thumb.gif b/static/tests/avatars/20100311/1268353224487-dumpfm-mu0p-mu0p.thumb.gif Binary files differnew file mode 100644 index 0000000..3505243 --- /dev/null +++ b/static/tests/avatars/20100311/1268353224487-dumpfm-mu0p-mu0p.thumb.gif diff --git a/static/tests/avatars/20100311/1268356801824-dumpfm-sam-pent11satanshimmel.gif b/static/tests/avatars/20100311/1268356801824-dumpfm-sam-pent11satanshimmel.gif Binary files differnew file mode 100644 index 0000000..cc68e71 --- /dev/null +++ b/static/tests/avatars/20100311/1268356801824-dumpfm-sam-pent11satanshimmel.gif diff --git a/static/tests/avatars/20100311/1268356801824-dumpfm-sam-pent11satanshimmel.thumb.gif b/static/tests/avatars/20100311/1268356801824-dumpfm-sam-pent11satanshimmel.thumb.gif Binary files differnew file mode 100644 index 0000000..46a47aa --- /dev/null +++ b/static/tests/avatars/20100311/1268356801824-dumpfm-sam-pent11satanshimmel.thumb.gif diff --git a/static/tests/avatars/20100311/1268360109151-dumpfm-zoeee-Photo-316.jpg b/static/tests/avatars/20100311/1268360109151-dumpfm-zoeee-Photo-316.jpg Binary files differnew file mode 100644 index 0000000..2ba74e7 --- /dev/null +++ b/static/tests/avatars/20100311/1268360109151-dumpfm-zoeee-Photo-316.jpg diff --git a/static/tests/avatars/20100311/1268360109151-dumpfm-zoeee-Photo-316.thumb.jpg b/static/tests/avatars/20100311/1268360109151-dumpfm-zoeee-Photo-316.thumb.jpg Binary files differnew file mode 100644 index 0000000..838080e --- /dev/null +++ b/static/tests/avatars/20100311/1268360109151-dumpfm-zoeee-Photo-316.thumb.jpg diff --git a/static/tests/avatars/20100311/index.html b/static/tests/avatars/20100311/index.html new file mode 100644 index 0000000..39fd34c --- /dev/null +++ b/static/tests/avatars/20100311/index.html @@ -0,0 +1,49 @@ +<html> +<head> + <style> + td { text-align: right;} + .big { max-width: 500px; max-height: 500px; } + .small { max-width: 30px; max-height: 30px; height: 30px; } + body {background-image: url(../bg.gif);} + thead td { background-color: #000; color: #fff; border: 3px solid #888; } + </style> +</head> +<body> + +<table> + <thead> + <tr><td>original image w/ max-width/height</td><td>css resize</td><td>thumb</td></tr> + </thead> + <tbody> + <tr> + <td><img class="big" src="1268317730569-dumpfm-unicorngirl-unicornpink.gif"></td> + <td><img class="small" src="1268317730569-dumpfm-unicorngirl-unicornpink.gif"></td> + <td><img class="thumb" src="1268317730569-dumpfm-unicorngirl-unicornpink.thumb.gif"></td> + </tr> + <tr> + <td><img class="big" src="1268353224487-dumpfm-mu0p-mu0p.gif"> + <td><img class="small" src="1268353224487-dumpfm-mu0p-mu0p.gif"> + <td><img class="thumb" src="1268353224487-dumpfm-mu0p-mu0p.thumb.gif"> + </tr> + <tr> + <td><img class="big" src="1268360109151-dumpfm-zoeee-Photo-316.jpg"> + <td><img class="small" src="1268360109151-dumpfm-zoeee-Photo-316.jpg"> + <td><img class="thumb" src="1268360109151-dumpfm-zoeee-Photo-316.thumb.jpg"> + </tr> + <tr> + <td><img class="big" src="1268331012620-dumpfm-AndersStuka-supermensa.png"> + <td><img class="small" src="1268331012620-dumpfm-AndersStuka-supermensa.png"> + <td><img class="thumb" src="1268331012620-dumpfm-AndersStuka-supermensa.thumb.png"> + </tr> + <tr> + <td><img class="big" src="1268356801824-dumpfm-sam-pent11satanshimmel.gif "> + <td><img class="small" src="1268356801824-dumpfm-sam-pent11satanshimmel.gif "> + <td><img class="thumb" src="1268356801824-dumpfm-sam-pent11satanshimmel.thumb.gif "> + </tr> + </tbody> +</table> + + + +</body> +</html>
\ No newline at end of file diff --git a/static/tests/avatars/20100317/1268824131789-dumpfm-nigga-babyjump.gif b/static/tests/avatars/20100317/1268824131789-dumpfm-nigga-babyjump.gif Binary files differnew file mode 100644 index 0000000..3c4a5d8 --- /dev/null +++ b/static/tests/avatars/20100317/1268824131789-dumpfm-nigga-babyjump.gif diff --git a/static/tests/avatars/20100317/1268824131789-dumpfm-nigga-babyjump.thumb.gif b/static/tests/avatars/20100317/1268824131789-dumpfm-nigga-babyjump.thumb.gif Binary files differnew file mode 100644 index 0000000..8030754 --- /dev/null +++ b/static/tests/avatars/20100317/1268824131789-dumpfm-nigga-babyjump.thumb.gif diff --git a/static/tests/avatars/20100317/1268843598216-dumpfm-tmkunt-girl.gif b/static/tests/avatars/20100317/1268843598216-dumpfm-tmkunt-girl.gif Binary files differnew file mode 100644 index 0000000..db844ff --- /dev/null +++ b/static/tests/avatars/20100317/1268843598216-dumpfm-tmkunt-girl.gif diff --git a/static/tests/avatars/20100317/1268843598216-dumpfm-tmkunt-girl.thumb.gif b/static/tests/avatars/20100317/1268843598216-dumpfm-tmkunt-girl.thumb.gif Binary files differnew file mode 100644 index 0000000..864558e --- /dev/null +++ b/static/tests/avatars/20100317/1268843598216-dumpfm-tmkunt-girl.thumb.gif diff --git a/static/tests/avatars/20100317/1268843634561-dumpfm-tmkunt-tevye.jpg b/static/tests/avatars/20100317/1268843634561-dumpfm-tmkunt-tevye.jpg Binary files differnew file mode 100644 index 0000000..affa502 --- /dev/null +++ b/static/tests/avatars/20100317/1268843634561-dumpfm-tmkunt-tevye.jpg diff --git a/static/tests/avatars/20100317/1268843634561-dumpfm-tmkunt-tevye.thumb.jpg b/static/tests/avatars/20100317/1268843634561-dumpfm-tmkunt-tevye.thumb.jpg Binary files differnew file mode 100644 index 0000000..6e672b4 --- /dev/null +++ b/static/tests/avatars/20100317/1268843634561-dumpfm-tmkunt-tevye.thumb.jpg diff --git a/static/tests/avatars/20100317/1268844983487-dumpfm-foot-final.gif b/static/tests/avatars/20100317/1268844983487-dumpfm-foot-final.gif Binary files differnew file mode 100644 index 0000000..66eda90 --- /dev/null +++ b/static/tests/avatars/20100317/1268844983487-dumpfm-foot-final.gif diff --git a/static/tests/avatars/20100317/1268844983487-dumpfm-foot-final.thumb.gif b/static/tests/avatars/20100317/1268844983487-dumpfm-foot-final.thumb.gif Binary files differnew file mode 100644 index 0000000..8844ec6 --- /dev/null +++ b/static/tests/avatars/20100317/1268844983487-dumpfm-foot-final.thumb.gif diff --git a/static/tests/avatars/20100317/1268845052790-dumpfm-foot-beads_placed_in_bone.gif b/static/tests/avatars/20100317/1268845052790-dumpfm-foot-beads_placed_in_bone.gif Binary files differnew file mode 100644 index 0000000..1479702 --- /dev/null +++ b/static/tests/avatars/20100317/1268845052790-dumpfm-foot-beads_placed_in_bone.gif diff --git a/static/tests/avatars/20100317/1268845052790-dumpfm-foot-beads_placed_in_bone.thumb.gif b/static/tests/avatars/20100317/1268845052790-dumpfm-foot-beads_placed_in_bone.thumb.gif Binary files differnew file mode 100644 index 0000000..7f1c588 --- /dev/null +++ b/static/tests/avatars/20100317/1268845052790-dumpfm-foot-beads_placed_in_bone.thumb.gif diff --git a/static/tests/avatars/20100317/1268854482173-dumpfm-loghorn-Picture-27.png b/static/tests/avatars/20100317/1268854482173-dumpfm-loghorn-Picture-27.png Binary files differnew file mode 100644 index 0000000..60697e2 --- /dev/null +++ b/static/tests/avatars/20100317/1268854482173-dumpfm-loghorn-Picture-27.png diff --git a/static/tests/avatars/20100317/1268854482173-dumpfm-loghorn-Picture-27.thumb.png b/static/tests/avatars/20100317/1268854482173-dumpfm-loghorn-Picture-27.thumb.png Binary files differnew file mode 100644 index 0000000..7fc6cf0 --- /dev/null +++ b/static/tests/avatars/20100317/1268854482173-dumpfm-loghorn-Picture-27.thumb.png diff --git a/static/tests/avatars/20100317/1268860204161-dumpfm-ghoulalt-allentown2009-11.jpg b/static/tests/avatars/20100317/1268860204161-dumpfm-ghoulalt-allentown2009-11.jpg Binary files differnew file mode 100644 index 0000000..50c741d --- /dev/null +++ b/static/tests/avatars/20100317/1268860204161-dumpfm-ghoulalt-allentown2009-11.jpg diff --git a/static/tests/avatars/20100317/1268860204161-dumpfm-ghoulalt-allentown2009-11.thumb.jpg b/static/tests/avatars/20100317/1268860204161-dumpfm-ghoulalt-allentown2009-11.thumb.jpg Binary files differnew file mode 100644 index 0000000..d877c88 --- /dev/null +++ b/static/tests/avatars/20100317/1268860204161-dumpfm-ghoulalt-allentown2009-11.thumb.jpg diff --git a/static/tests/avatars/20100317/1268873465668-dumpfm-grusandcrux-kissdubgiffblanc63ok1.gif b/static/tests/avatars/20100317/1268873465668-dumpfm-grusandcrux-kissdubgiffblanc63ok1.gif Binary files differnew file mode 100644 index 0000000..70b1e6e --- /dev/null +++ b/static/tests/avatars/20100317/1268873465668-dumpfm-grusandcrux-kissdubgiffblanc63ok1.gif diff --git a/static/tests/avatars/20100317/1268873465668-dumpfm-grusandcrux-kissdubgiffblanc63ok1.thumb.gif b/static/tests/avatars/20100317/1268873465668-dumpfm-grusandcrux-kissdubgiffblanc63ok1.thumb.gif Binary files differnew file mode 100644 index 0000000..ba44afe --- /dev/null +++ b/static/tests/avatars/20100317/1268873465668-dumpfm-grusandcrux-kissdubgiffblanc63ok1.thumb.gif diff --git a/static/tests/avatars/20100317/1268875089450-dumpfm-mistaxiii-b2.gif b/static/tests/avatars/20100317/1268875089450-dumpfm-mistaxiii-b2.gif Binary files differnew file mode 100644 index 0000000..655a3f2 --- /dev/null +++ b/static/tests/avatars/20100317/1268875089450-dumpfm-mistaxiii-b2.gif diff --git a/static/tests/avatars/20100317/1268875089450-dumpfm-mistaxiii-b2.thumb.gif b/static/tests/avatars/20100317/1268875089450-dumpfm-mistaxiii-b2.thumb.gif Binary files differnew file mode 100644 index 0000000..4cbc7a7 --- /dev/null +++ b/static/tests/avatars/20100317/1268875089450-dumpfm-mistaxiii-b2.thumb.gif diff --git a/static/tests/avatars/20100317/1268875138982-dumpfm-hankpeters-53-icon.png b/static/tests/avatars/20100317/1268875138982-dumpfm-hankpeters-53-icon.png Binary files differnew file mode 100644 index 0000000..84a2c5e --- /dev/null +++ b/static/tests/avatars/20100317/1268875138982-dumpfm-hankpeters-53-icon.png diff --git a/static/tests/avatars/20100317/1268875138982-dumpfm-hankpeters-53-icon.thumb.png b/static/tests/avatars/20100317/1268875138982-dumpfm-hankpeters-53-icon.thumb.png Binary files differnew file mode 100644 index 0000000..33a792e --- /dev/null +++ b/static/tests/avatars/20100317/1268875138982-dumpfm-hankpeters-53-icon.thumb.png diff --git a/static/tests/avatars/20100317/1268875479356-dumpfm-cassandreamy-japansmiley.JPG b/static/tests/avatars/20100317/1268875479356-dumpfm-cassandreamy-japansmiley.JPG Binary files differnew file mode 100644 index 0000000..9a1c44b --- /dev/null +++ b/static/tests/avatars/20100317/1268875479356-dumpfm-cassandreamy-japansmiley.JPG diff --git a/static/tests/avatars/20100317/1268875479356-dumpfm-cassandreamy-japansmiley.thumb.JPG b/static/tests/avatars/20100317/1268875479356-dumpfm-cassandreamy-japansmiley.thumb.JPG Binary files differnew file mode 100644 index 0000000..16ac653 --- /dev/null +++ b/static/tests/avatars/20100317/1268875479356-dumpfm-cassandreamy-japansmiley.thumb.JPG diff --git a/static/tests/avatars/20100317/1268875995007-dumpfm-SrProlapse-keatonlolsmall.png b/static/tests/avatars/20100317/1268875995007-dumpfm-SrProlapse-keatonlolsmall.png Binary files differnew file mode 100644 index 0000000..6f0b2cc --- /dev/null +++ b/static/tests/avatars/20100317/1268875995007-dumpfm-SrProlapse-keatonlolsmall.png diff --git a/static/tests/avatars/20100317/1268875995007-dumpfm-SrProlapse-keatonlolsmall.thumb.png b/static/tests/avatars/20100317/1268875995007-dumpfm-SrProlapse-keatonlolsmall.thumb.png Binary files differnew file mode 100644 index 0000000..358506d --- /dev/null +++ b/static/tests/avatars/20100317/1268875995007-dumpfm-SrProlapse-keatonlolsmall.thumb.png diff --git a/static/tests/avatars/20100317/1268877139344-dumpfm-coeur-GoatBoy.jpg b/static/tests/avatars/20100317/1268877139344-dumpfm-coeur-GoatBoy.jpg Binary files differnew file mode 100644 index 0000000..286dd58 --- /dev/null +++ b/static/tests/avatars/20100317/1268877139344-dumpfm-coeur-GoatBoy.jpg diff --git a/static/tests/avatars/20100317/1268877139344-dumpfm-coeur-GoatBoy.thumb.jpg b/static/tests/avatars/20100317/1268877139344-dumpfm-coeur-GoatBoy.thumb.jpg Binary files differnew file mode 100644 index 0000000..b071b4e --- /dev/null +++ b/static/tests/avatars/20100317/1268877139344-dumpfm-coeur-GoatBoy.thumb.jpg diff --git a/static/tests/avatars/20100317/1268877902821-dumpfm-3noneTwo-100ico.png b/static/tests/avatars/20100317/1268877902821-dumpfm-3noneTwo-100ico.png Binary files differnew file mode 100644 index 0000000..b0461a8 --- /dev/null +++ b/static/tests/avatars/20100317/1268877902821-dumpfm-3noneTwo-100ico.png diff --git a/static/tests/avatars/20100317/1268877902821-dumpfm-3noneTwo-100ico.thumb.png b/static/tests/avatars/20100317/1268877902821-dumpfm-3noneTwo-100ico.thumb.png Binary files differnew file mode 100644 index 0000000..b17e8f0 --- /dev/null +++ b/static/tests/avatars/20100317/1268877902821-dumpfm-3noneTwo-100ico.thumb.png diff --git a/static/tests/avatars/20100317/1268878362813-dumpfm-okeeblow-3-smith.gif b/static/tests/avatars/20100317/1268878362813-dumpfm-okeeblow-3-smith.gif Binary files differnew file mode 100644 index 0000000..26922dd --- /dev/null +++ b/static/tests/avatars/20100317/1268878362813-dumpfm-okeeblow-3-smith.gif diff --git a/static/tests/avatars/20100317/1268878362813-dumpfm-okeeblow-3-smith.thumb.gif b/static/tests/avatars/20100317/1268878362813-dumpfm-okeeblow-3-smith.thumb.gif Binary files differnew file mode 100644 index 0000000..9ac7b20 --- /dev/null +++ b/static/tests/avatars/20100317/1268878362813-dumpfm-okeeblow-3-smith.thumb.gif diff --git a/static/tests/avatars/20100317/1268879836325-dumpfm-bendover-clifford-1.png b/static/tests/avatars/20100317/1268879836325-dumpfm-bendover-clifford-1.png Binary files differnew file mode 100644 index 0000000..141e33f --- /dev/null +++ b/static/tests/avatars/20100317/1268879836325-dumpfm-bendover-clifford-1.png diff --git a/static/tests/avatars/20100317/1268879836325-dumpfm-bendover-clifford-1.thumb.png b/static/tests/avatars/20100317/1268879836325-dumpfm-bendover-clifford-1.thumb.png Binary files differnew file mode 100644 index 0000000..e098fe0 --- /dev/null +++ b/static/tests/avatars/20100317/1268879836325-dumpfm-bendover-clifford-1.thumb.png diff --git a/static/tests/avatars/20100317/1268879862249-dumpfm-justytamp-JUSTY-TAMP.png b/static/tests/avatars/20100317/1268879862249-dumpfm-justytamp-JUSTY-TAMP.png Binary files differnew file mode 100644 index 0000000..fcf1b7d --- /dev/null +++ b/static/tests/avatars/20100317/1268879862249-dumpfm-justytamp-JUSTY-TAMP.png diff --git a/static/tests/avatars/20100317/1268879862249-dumpfm-justytamp-JUSTY-TAMP.thumb.png b/static/tests/avatars/20100317/1268879862249-dumpfm-justytamp-JUSTY-TAMP.thumb.png Binary files differnew file mode 100644 index 0000000..76dd58d --- /dev/null +++ b/static/tests/avatars/20100317/1268879862249-dumpfm-justytamp-JUSTY-TAMP.thumb.png diff --git a/static/tests/avatars/20100317/1268881084236-dumpfm-mistaxiii-moooovies.gif b/static/tests/avatars/20100317/1268881084236-dumpfm-mistaxiii-moooovies.gif Binary files differnew file mode 100644 index 0000000..ed41681 --- /dev/null +++ b/static/tests/avatars/20100317/1268881084236-dumpfm-mistaxiii-moooovies.gif diff --git a/static/tests/avatars/20100317/1268881084236-dumpfm-mistaxiii-moooovies.thumb.gif b/static/tests/avatars/20100317/1268881084236-dumpfm-mistaxiii-moooovies.thumb.gif Binary files differnew file mode 100644 index 0000000..48f31f6 --- /dev/null +++ b/static/tests/avatars/20100317/1268881084236-dumpfm-mistaxiii-moooovies.thumb.gif diff --git a/static/tests/avatars/20100317/1268881491088-dumpfm-abraham-stuntmaster_box_side_pic.jpg b/static/tests/avatars/20100317/1268881491088-dumpfm-abraham-stuntmaster_box_side_pic.jpg Binary files differnew file mode 100644 index 0000000..68a0b8e --- /dev/null +++ b/static/tests/avatars/20100317/1268881491088-dumpfm-abraham-stuntmaster_box_side_pic.jpg diff --git a/static/tests/avatars/20100317/1268881491088-dumpfm-abraham-stuntmaster_box_side_pic.thumb.jpg b/static/tests/avatars/20100317/1268881491088-dumpfm-abraham-stuntmaster_box_side_pic.thumb.jpg Binary files differnew file mode 100644 index 0000000..49e34b5 --- /dev/null +++ b/static/tests/avatars/20100317/1268881491088-dumpfm-abraham-stuntmaster_box_side_pic.thumb.jpg diff --git a/static/tests/avatars/20100317/12688py862249-dumpfm-justytamp-JUSTY-TAMP.thumb.png b/static/tests/avatars/20100317/12688py862249-dumpfm-justytamp-JUSTY-TAMP.thumb.png Binary files differnew file mode 100644 index 0000000..76dd58d --- /dev/null +++ b/static/tests/avatars/20100317/12688py862249-dumpfm-justytamp-JUSTY-TAMP.thumb.png diff --git a/static/tests/avatars/20100317/index.html b/static/tests/avatars/20100317/index.html new file mode 100644 index 0000000..a80faec --- /dev/null +++ b/static/tests/avatars/20100317/index.html @@ -0,0 +1,114 @@ +<html> +<head> + <style> + td { text-align: right;} + .big { max-width: 500px; max-height: 500px; } + .small { max-width: 30px; max-height: 30px; height: 30px; } + body {background-image: url(../bg.gif);} + thead td { background-color: #000; color: #fff; border: 3px solid #888; } + </style> +</head> +<body> + +<table> + <thead> + <tr><td>original image w/ max-width/height</td><td>css resize</td><td>thumb</td></tr> + </thead> + <tbody> + <tr> + <td><img class="big" src="1268824131789-dumpfm-nigga-babyjump.gif"></td> + <td><img class="small" src="1268824131789-dumpfm-nigga-babyjump.gif"></td> + <td><img class="thumb" src="1268824131789-dumpfm-nigga-babyjump.thumb.gif"></td> + </tr> + <tr> + <td><img class="big" src="1268843598216-dumpfm-tmkunt-girl.gif"> + <td><img class="small" src="1268843598216-dumpfm-tmkunt-girl.gif"> + <td><img class="thumb" src="1268843598216-dumpfm-tmkunt-girl.thumb.gif"> + </tr> + <tr> + <td><img class="big" src="1268843634561-dumpfm-tmkunt-tevye.jpg"> + <td><img class="small" src="1268843634561-dumpfm-tmkunt-tevye.jpg"> + <td><img class="thumb" src="1268843634561-dumpfm-tmkunt-tevye.thumb.jpg"> + </tr> + <tr> + <tr> + <td><img class="big" src="1268881491088-dumpfm-abraham-stuntmaster_box_side_pic.jpg"></td> + <td><img class="small" src="1268881491088-dumpfm-abraham-stuntmaster_box_side_pic.jpg"></td> + <td><img class="thumb" src="1268881491088-dumpfm-abraham-stuntmaster_box_side_pic.thumb.jpg"></td> + </tr> + <tr> + <td><img class="big" src="1268881084236-dumpfm-mistaxiii-moooovies.gif"> + <td><img class="small" src="1268881084236-dumpfm-mistaxiii-moooovies.gif"> + <td><img class="thumb" src="1268881084236-dumpfm-mistaxiii-moooovies.thumb.gif"> + </tr> + <tr> + <td><img class="big" src="1268879862249-dumpfm-justytamp-JUSTY-TAMP.png"> + <td><img class="small" src="1268879862249-dumpfm-justytamp-JUSTY-TAMP.png"> + <td><img class="thumb" src="1268879862249-dumpfm-justytamp-JUSTY-TAMP.thumb.png"> + </tr> + <tr> + <td><img class="big" src="1268879836325-dumpfm-bendover-clifford-1.png"> + <td><img class="small" src="1268879836325-dumpfm-bendover-clifford-1.png"> + <td><img class="thumb" src="1268879836325-dumpfm-bendover-clifford-1.thumb.png"> + </tr> + <tr> + <td><img class="big" src="1268878362813-dumpfm-okeeblow-3-smith.gif "> + <td><img class="small" src="1268878362813-dumpfm-okeeblow-3-smith.gif "> + <td><img class="thumb" src="1268878362813-dumpfm-okeeblow-3-smith.thumb.gif "> + </tr> + <tr> + <td><img class="big" src="1268877902821-dumpfm-3noneTwo-100ico.png"></td> + <td><img class="small" src="1268877902821-dumpfm-3noneTwo-100ico.png"></td> + <td><img class="thumb" src="1268877902821-dumpfm-3noneTwo-100ico.thumb.png"></td> + </tr> + <tr> + <td><img class="big" src="1268877139344-dumpfm-coeur-GoatBoy.jpg"> + <td><img class="small" src="1268877139344-dumpfm-coeur-GoatBoy.jpg"> + <td><img class="thumb" src="1268877139344-dumpfm-coeur-GoatBoy.thumb.jpg"> + </tr> + <tr> + <td><img class="big" src="1268875995007-dumpfm-SrProlapse-keatonlolsmall.png"> + <td><img class="small" src="1268875995007-dumpfm-SrProlapse-keatonlolsmall.png"> + <td><img class="thumb" src="1268875995007-dumpfm-SrProlapse-keatonlolsmall.thumb.png"> + </tr> + <tr> + <td><img class="big" src="1268875479356-dumpfm-cassandreamy-japansmiley.JPG"> + <td><img class="small" src="1268875479356-dumpfm-cassandreamy-japansmiley.JPG"> + <td><img class="thumb" src="1268875479356-dumpfm-cassandreamy-japansmiley.thumb.JPG"> + </tr> + <tr> + <td><img class="big" src="1268875138982-dumpfm-hankpeters-53-icon.png "> + <td><img class="small" src="1268875138982-dumpfm-hankpeters-53-icon.png "> + <td><img class="thumb" src="1268875138982-dumpfm-hankpeters-53-icon.thumb.png "> + </tr> + <tr> + <td><img class="big" src="1268875089450-dumpfm-mistaxiii-b2.gif"></td> + <td><img class="small" src="1268875089450-dumpfm-mistaxiii-b2.gif"></td> + <td><img class="thumb" src="1268875089450-dumpfm-mistaxiii-b2.thumb.gif"></td> + </tr> + <tr> + <td><img class="big" src="1268873465668-dumpfm-grusandcrux-kissdubgiffblanc63ok1.gif"> + <td><img class="small" src="1268873465668-dumpfm-grusandcrux-kissdubgiffblanc63ok1.gif"> + <td><img class="thumb" src="1268873465668-dumpfm-grusandcrux-kissdubgiffblanc63ok1.thumb.gif"> + </tr> + <tr> + <td><img class="big" src="1268860204161-dumpfm-ghoulalt-allentown2009-11.jpg"> + <td><img class="small" src="1268860204161-dumpfm-ghoulalt-allentown2009-11.jpg"> + <td><img class="thumb" src="1268860204161-dumpfm-ghoulalt-allentown2009-11.thumb.jpg"> + </tr> + <tr> + <td><img class="big" src="1268854482173-dumpfm-loghorn-Picture-27.png"> + <td><img class="small" src="1268854482173-dumpfm-loghorn-Picture-27.png"> + <td><img class="thumb" src="1268854482173-dumpfm-loghorn-Picture-27.thumb.png"> + </tr> + <tr> + <td><img class="big" src="1268845052790-dumpfm-foot-beads_placed_in_bone.gif "> + <td><img class="small" src="1268845052790-dumpfm-foot-beads_placed_in_bone.gif "> + <td><img class="thumb" src="1268845052790-dumpfm-foot-beads_placed_in_bone.thumb.gif "> + </tr> + </tbody> +</table> + + +</body> +</html>
\ No newline at end of file diff --git a/static/tests/avatars/bg.gif b/static/tests/avatars/bg.gif Binary files differnew file mode 100644 index 0000000..c7d2cbd --- /dev/null +++ b/static/tests/avatars/bg.gif diff --git a/static/tests/avatars2.html b/static/tests/avatars2.html new file mode 100644 index 0000000..2c6460f --- /dev/null +++ b/static/tests/avatars2.html @@ -0,0 +1,39 @@ +<html> +<head> +<style> +</style> +</head> +<body> +<div> +<img src="http://www.gsarchives.net/nds/jump_superstars/sprites/animated/pla/Naruto_run.gif"><br> +<img +src="http://www.gsarchives.net/gameboyadvance/lego_star_wars_2/sprites/animated/playable/Stormtrooper_walk_south.gif"><br> +<img +src="http://www.gsarchives.net/gameboyadvance/mother_3/sprites/animated/npc-named/Mini-Porky_sirenred.gif"><br> +<img +src="http://www.gsarchives.net/gameboyadvance/mother_3/sprites/animated/enemies/Pigmask_Colonel_walk_southeast.gif"><br> +<img +src="http://www.gsarchives.net/gameboyadvance/mother_3/sprites/animated/playable/Duster_walk_southeast.gif"><br> +<img src="http://www.gsarchives.net/nes/a_boy_and_his_blob/sprites/animated/NES_ABAHB_Blob_Stand-L_Ani.gif"><br> +<img src="http://www.gsarchives.net/nes/a_boy_and_his_blob/sprites/animated/NES_ABAHB_Boy_Run-L_Ani.gif"><br> +<img src="http://www.gsarchives.net/nes/kid_icarus/sprites/animated/kidic_nose.gif"><br> +<img src="http://www.gsarchives.net/nes/super_mario_bros_2/sprites/animated/Char_LuigiSmall_Walk-L.gif"><br> +<img src="http://www.gsarchives.net/nes/super_mario_bros_2/sprites/animated/Enemy_BobOmb-R.gif"><br> +<img src="http://www.gsarchives.net/nes/super_mario_bros_2/sprites/animated/Boss3_Mouser.gif"><br> +<img src="http://www.gsarchives.net/nes/super_mario_bros_2/sprites/animated/Object_RocketFly.gif"><br> +<img src="http://www.gsarchives.net/nes/yo_noid/sprites/animated/Noid_earpull.gif"><br> +<img src="http://www.gsarchives.net/nes/yo_noid/sprites/animated/RedNoidDancingLeft.gif"><br> +<img +src="http://dump.fm/avatars/20100526/1274899226905-dumpfm-noisia-1274373752899-dumpfm-noisia-Neko_animated.gif"><br> +<img src="http://www.gsarchives.net/nes/pow/sprites/animated/player1%20walking%20right%20w%20knife.gif"><br> +<img src="http://www.gsarchives.net/nes/pow/sprites/animated/Knife%20guard%20walk%20left.gif"><br> +<img src="http://www.gsarchives.net/nes/pow/sprites/animated/player1%20gun%20mellee.gif"><br> +<img src="http://www.gsarchives.net/nes/final_fantasy_3/sprites/animated/shamanwin.gif"><br> +<img src="http://www.gsarchives.net/nes/final_fantasy_3/sprites/animated/onionkidgreenwin.gif"><br> +<img src="http://www.gsarchives.net/nes/garfield/sprites/animated/garfield_catwalking_left.gif"><br> +<img src="http://www.gsarchives.net/nes/garfield/sprites/animated/garfield_kick_right.gif"><br> +<img src="http://www.gsarchives.net/nes/contra/sprites/animated/Scorpion_run_left.gif"><br> +<img src="http://www.gsarchives.net/nes/addams_family/sprites/animated/nesaddamsfamilyenemyarmor2uh.gif"><br> +</div> +</body> +</html> diff --git a/static/tests/avatars3.html b/static/tests/avatars3.html new file mode 100644 index 0000000..2b0c9ee --- /dev/null +++ b/static/tests/avatars3.html @@ -0,0 +1,40 @@ +<html> +<head> +<style> +img { width: 30px; height: 30px; } +</style> +</head> +<body> +<div> +<img src="http://www.gsarchives.net/nds/jump_superstars/sprites/animated/pla/Naruto_run.gif"><br> +<img +src="http://www.gsarchives.net/gameboyadvance/lego_star_wars_2/sprites/animated/playable/Stormtrooper_walk_south.gif"><br> +<img +src="http://www.gsarchives.net/gameboyadvance/mother_3/sprites/animated/npc-named/Mini-Porky_sirenred.gif"><br> +<img +src="http://www.gsarchives.net/gameboyadvance/mother_3/sprites/animated/enemies/Pigmask_Colonel_walk_southeast.gif"><br> +<img +src="http://www.gsarchives.net/gameboyadvance/mother_3/sprites/animated/playable/Duster_walk_southeast.gif"><br> +<img src="http://www.gsarchives.net/nes/a_boy_and_his_blob/sprites/animated/NES_ABAHB_Blob_Stand-L_Ani.gif"><br> +<img src="http://www.gsarchives.net/nes/a_boy_and_his_blob/sprites/animated/NES_ABAHB_Boy_Run-L_Ani.gif"><br> +<img src="http://www.gsarchives.net/nes/kid_icarus/sprites/animated/kidic_nose.gif"><br> +<img src="http://www.gsarchives.net/nes/super_mario_bros_2/sprites/animated/Char_LuigiSmall_Walk-L.gif"><br> +<img src="http://www.gsarchives.net/nes/super_mario_bros_2/sprites/animated/Enemy_BobOmb-R.gif"><br> +<img src="http://www.gsarchives.net/nes/super_mario_bros_2/sprites/animated/Boss3_Mouser.gif"><br> +<img src="http://www.gsarchives.net/nes/super_mario_bros_2/sprites/animated/Object_RocketFly.gif"><br> +<img src="http://www.gsarchives.net/nes/yo_noid/sprites/animated/Noid_earpull.gif"><br> +<img src="http://www.gsarchives.net/nes/yo_noid/sprites/animated/RedNoidDancingLeft.gif"><br> +<img +src="http://dump.fm/avatars/20100526/1274899226905-dumpfm-noisia-1274373752899-dumpfm-noisia-Neko_animated.gif"><br> +<img src="http://www.gsarchives.net/nes/pow/sprites/animated/player1%20walking%20right%20w%20knife.gif"><br> +<img src="http://www.gsarchives.net/nes/pow/sprites/animated/Knife%20guard%20walk%20left.gif"><br> +<img src="http://www.gsarchives.net/nes/pow/sprites/animated/player1%20gun%20mellee.gif"><br> +<img src="http://www.gsarchives.net/nes/final_fantasy_3/sprites/animated/shamanwin.gif"><br> +<img src="http://www.gsarchives.net/nes/final_fantasy_3/sprites/animated/onionkidgreenwin.gif"><br> +<img src="http://www.gsarchives.net/nes/garfield/sprites/animated/garfield_catwalking_left.gif"><br> +<img src="http://www.gsarchives.net/nes/garfield/sprites/animated/garfield_kick_right.gif"><br> +<img src="http://www.gsarchives.net/nes/contra/sprites/animated/Scorpion_run_left.gif"><br> +<img src="http://www.gsarchives.net/nes/addams_family/sprites/animated/nesaddamsfamilyenemyarmor2uh.gif"><br> +</div> +</body> +</html> diff --git a/static/tests/canvas1/index.html b/static/tests/canvas1/index.html new file mode 100644 index 0000000..dfff8af --- /dev/null +++ b/static/tests/canvas1/index.html @@ -0,0 +1,24 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<html lang="en"><head> +<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> + + + <script type="text/javascript" src="jsplatformer5_files/GameObject.js"></script> + <script type="text/javascript" src="jsplatformer5_files/VisualGameObject.js"></script> + <script type="text/javascript" src="jsplatformer5_files/RepeatingGameObject.js"></script> + <script type="text/javascript" src="jsplatformer5_files/AnimatedGameObject.js"></script> + <script type="text/javascript" src="jsplatformer5_files/Utils.js"></script> + <script type="text/javascript" src="jsplatformer5_files/ApplicationManager.js"></script> + <script type="text/javascript" src="jsplatformer5_files/GameObjectManager.js"></script> + <script type="text/javascript" src="jsplatformer5_files/Main.js"></script> + <style type="text/css"> + body { font-family: Arial,Helvetica,sans-serif;} + </style> +</head><body> + + <canvas id="canvas" width="80" height="1200" > + <p> + Your browser does not support the canvas element. + </p> + </canvas> +</body></html> diff --git a/static/tests/canvas1/jsplatformer5_files/AnimatedGameObject.js b/static/tests/canvas1/jsplatformer5_files/AnimatedGameObject.js new file mode 100644 index 0000000..895fc19 --- /dev/null +++ b/static/tests/canvas1/jsplatformer5_files/AnimatedGameObject.js @@ -0,0 +1,80 @@ +/** + Displays an animated Game Object + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function AnimatedGameObject() +{ + /** + Defines the current frame that is to be rendered + @type Number + */ + this.currentFrame = 0; + /** + Defines the frames per second of the animation + @type Number + */ + this.timeBetweenFrames = 0; + /** + The number of individual frames held in the image + @type Number + */ + /** + Time until the next frame + @type number + */ + this.timeSinceLastFrame = 0; + /** + The width of each individual frame + @type Number + */ + this.frameWidth = 0; + + /** + Initialises this object + @param image The image to be displayed + @param x The position on the X axis + @param y The position on the Y axis + @param z The depth + @param frameCount The number of animation frames in the image + @param fps The frames per second to animate this object at + */ + this.startupAnimatedGameObject = function(/**Image*/ image, /**Number*/ x, /**Number*/ y, /**Number*/ z, +/**Number*/ frameCount, /**Number*/ fps) + { + if (frameCount <= 0) throw "framecount can not be <= 0"; + if (fps <= 0) throw "fps can not be <= 0" + + this.startupVisualGameObject(image, x, y, z); + this.currentFrame = 0; + this.frameCount = frameCount; + this.timeBetweenFrames = 1/fps; + this.timeSinceLastFrame = this.timeBetweenFrames; + this.frameWidth = this.image.width / this.frameCount; + } + + /** + Draws this element to the back buffer + @param dt Time in seconds since the last frame + @param context The context to draw to + @param xScroll The global scrolling value of the x axis + @param yScroll The global scrolling value of the y axis + */ + this.draw = function(/**Number*/ dt, /**CanvasRenderingContext2D*/ context, /**Number*/ xScroll, /**Number*/ +yScroll) + { + var sourceX = this.frameWidth * this.currentFrame; + context.drawImage(this.image, sourceX, 0, this.frameWidth, this.image.height, this.x - xScroll, this.y - +yScroll, this.frameWidth, this.image.height); + + this.timeSinceLastFrame -= dt; + if (this.timeSinceLastFrame <= 0) + { + this.timeSinceLastFrame = this.timeBetweenFrames; + ++this.currentFrame; + this.currentFrame %= this.frameCount; + } + } +} + +AnimatedGameObject.prototype = new VisualGameObject; diff --git a/static/tests/canvas1/jsplatformer5_files/ApplicationManager.js b/static/tests/canvas1/jsplatformer5_files/ApplicationManager.js new file mode 100644 index 0000000..487d4d8 --- /dev/null +++ b/static/tests/canvas1/jsplatformer5_files/ApplicationManager.js @@ -0,0 +1,42 @@ +/** + The ApplicationManager is used to manage the application itself. + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function ApplicationManager() +{ + /** + Initialises this object + @return A reference to the initialised object + */ + this.startupApplicationManager = function() + { + this.runner = new AnimatedGameObject().startupAnimatedGameObject(g_run, 0, 0, 1, 12, 1); + this.runner1 = new AnimatedGameObject().startupAnimatedGameObject(g_run1, 0, 40, 1, 12, 2); + this.runner2 = new AnimatedGameObject().startupAnimatedGameObject(g_run2, 0, 80, 1, 12, 3); + this.runner3 = new AnimatedGameObject().startupAnimatedGameObject(g_run3, 0, 120, 1, 12, 4); + this.runner4 = new AnimatedGameObject().startupAnimatedGameObject(g_run4, 0, 160, 1, 12, 15); + this.runner5 = new AnimatedGameObject().startupAnimatedGameObject(g_run5, 0, 200, 1, 12, 16); + this.runner6 = new AnimatedGameObject().startupAnimatedGameObject(g_run6, 0, 240, 1, 12, 17); + this.runner7 = new AnimatedGameObject().startupAnimatedGameObject(g_run7, 0, 280, 1, 12, 18); + this.runner8 = new AnimatedGameObject().startupAnimatedGameObject(g_run8, 0, 320, 1, 12, 9); + this.runner9 = new AnimatedGameObject().startupAnimatedGameObject(g_run9, 0, 360, 1, 12, 10); + this.runner10 = new AnimatedGameObject().startupAnimatedGameObject(g_run10, 0, 400, 1, 12, 20); + this.runner11 = new AnimatedGameObject().startupAnimatedGameObject(g_run11, 0, 440, 1, 12, 19); + this.runner12 = new AnimatedGameObject().startupAnimatedGameObject(g_run12, 0, 480, 1, 12, 8); + this.runner13 = new AnimatedGameObject().startupAnimatedGameObject(g_run13, 0, 520, 1, 12, 7); + this.runner14 = new AnimatedGameObject().startupAnimatedGameObject(g_run14, 0, 560, 1, 12, 6); + this.runner15 = new AnimatedGameObject().startupAnimatedGameObject(g_run15, 0, 600, 1, 12, 5); + this.runner16 = new AnimatedGameObject().startupAnimatedGameObject(g_run16, 0, 640, 1, 12, 14); + this.runner17 = new AnimatedGameObject().startupAnimatedGameObject(g_run17, 0, 680, 1, 12, 13); + this.runner18 = new AnimatedGameObject().startupAnimatedGameObject(g_run18, 0, 720, 1, 12, 12); + this.runner19 = new AnimatedGameObject().startupAnimatedGameObject(g_run19, 0, 760, 1, 12, 11); + this.runner20 = new AnimatedGameObject().startupAnimatedGameObject(g_run20, 0, 800, 1, 12, 21); + this.runner21 = new AnimatedGameObject().startupAnimatedGameObject(g_run21, 0, 840, 1, 12, 22); + this.runner22 = new AnimatedGameObject().startupAnimatedGameObject(g_run22, 0, 880, 1, 12, 23); + this.runner23 = new AnimatedGameObject().startupAnimatedGameObject(g_run23, 0, 920, 1, 12, 24); + this.runner24 = new AnimatedGameObject().startupAnimatedGameObject(g_run24, 0, 960, 1, 12, 25); + this.runner25 = new AnimatedGameObject().startupAnimatedGameObject(g_run25, 0, 1000, 1, 12, 30); + return this; + } +} diff --git a/static/tests/canvas1/jsplatformer5_files/GameObject.js b/static/tests/canvas1/jsplatformer5_files/GameObject.js new file mode 100644 index 0000000..e6e4e09 --- /dev/null +++ b/static/tests/canvas1/jsplatformer5_files/GameObject.js @@ -0,0 +1,46 @@ +/** + The base class for all elements that appear in the game. + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function GameObject() +{ + /** Display depth order. A smaller zOrder means the element is rendered first, and therefor + in the background. + @type Number + */ + this.zOrder = 0; + /** + The position on the X axis + @type Number + */ + this.x = 0; + /** + The position on the Y axis + @type Number + */ + this.y = 0; + + /** + Initialises the object, and adds it to the list of objects held by the GameObjectManager. + @param x The position on the X axis + @param y The position on the Y axis + @param z The z order of the element (elements in the background have a lower z value) + */ + this.startupGameObject = function(/**Number*/ x, /**Number*/ y, /**Number*/ z) + { + this.zOrder = z; + this.x = x; + this.y = y; + g_GameObjectManager.addGameObject(this); + return this; + } + + /** + Cleans up the object, and removes it from the list of objects held by the GameObjectManager. + */ + this.shutdownGameObject = function() + { + g_GameObjectManager.removeGameObject(this); + } +} diff --git a/static/tests/canvas1/jsplatformer5_files/GameObjectManager.js b/static/tests/canvas1/jsplatformer5_files/GameObjectManager.js new file mode 100644 index 0000000..c22ccd0 --- /dev/null +++ b/static/tests/canvas1/jsplatformer5_files/GameObjectManager.js @@ -0,0 +1,125 @@ +/** + A manager for all the objects in the game + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function GameObjectManager() +{ + /** An array of game objects + @type Arary + */ + this.gameObjects = new Array(); + /** The time that the last frame was rendered + @type Date + */ + this.lastFrame = new Date().getTime(); + /** The global scrolling value of the x axis + @type Number + */ + this.xScroll = 0; + /** The global scrolling value of the y axis + @type Number + */ + this.yScroll = 0; + /** A reference to the ApplicationManager instance + @type ApplicationManager + */ + this.applicationManager = null; + /** A reference to the canvas element + @type HTMLCanvasElement + */ + this.canvas = null; + /** A reference to the 2D context of the canvas element + @type CanvasRenderingContext2D + */ + this.context2D = null; + /** A reference to the in-memory canvas used as a back buffer + @type HTMLCanvasElement + */ + this.backBuffer = null; + /** A reference to the backbuffer 2D context + @type CanvasRenderingContext2D + */ + this.backBufferContext2D = null; + + /** + Initialises this object + @return A reference to the initialised object + */ + this.startupGameObjectManager = function() + { + // set the global pointer to reference this object + g_GameObjectManager = this; + + // get references to the canvas elements and their 2D contexts + this.canvas = document.getElementById('canvas'); + this.context2D = this.canvas.getContext('2d'); + this.backBuffer = document.createElement('canvas'); + this.backBuffer.width = this.canvas.width; + this.backBuffer.height = this.canvas.height; + this.backBufferContext2D = this.backBuffer.getContext('2d'); + + // create a new ApplicationManager + this.applicationManager = new ApplicationManager().startupApplicationManager(); + + // use setInterval to call the draw function + setInterval(function(){g_GameObjectManager.draw();}, SECONDS_BETWEEN_FRAMES); + + return this; + } + + /** + The render loop + */ + this.draw = function () + { + // calculate the time since the last frame + var thisFrame = new Date().getTime(); + var dt = (thisFrame - this.lastFrame)/1000; + this.lastFrame = thisFrame; + + // clear the drawing contexts + this.backBufferContext2D.clearRect(0, 0, this.backBuffer.width, this.backBuffer.height); + this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height); + + // first update all the game objects + for (x in this.gameObjects) + { + if (this.gameObjects[x].update) + { + this.gameObjects[x].update(dt, this.backBufferContext2D, this.xScroll, this.yScroll); + } + } + + // then draw the game objects + for (x in this.gameObjects) + { + if (this.gameObjects[x].draw) + { + this.gameObjects[x].draw(dt, this.backBufferContext2D, this.xScroll, this.yScroll); + } + } + + // copy the back buffer to the displayed canvas + this.context2D.drawImage(this.backBuffer, 0, 0); + }; + + /** + Adds a new GameObject to the gameObjects collection + @param gameObject The object to add + */ + this.addGameObject = function(gameObject) + { + this.gameObjects.push(gameObject); + this.gameObjects.sort(function(a,b){return a.zOrder - b.zOrder;}) + }; + + /** + Removes a GameObject from the gameObjects collection + @param gameObject The object to remove + */ + this.removeGameObject = function(gameObject) + { + this.gameObjects.removeObject(gameObject); + } +} diff --git a/static/tests/canvas1/jsplatformer5_files/Main.js b/static/tests/canvas1/jsplatformer5_files/Main.js new file mode 100644 index 0000000..752ffa4 --- /dev/null +++ b/static/tests/canvas1/jsplatformer5_files/Main.js @@ -0,0 +1,81 @@ +/** target frames per second + @type Number +*/ +var FPS = 30; +/** time between frames + @type Number +*/ +var SECONDS_BETWEEN_FRAMES = 1 / FPS; +/** A global reference to the GameObjectManager instance + @type GameObjectManager +*/ +var g_GameObjectManager = null; +/** An image to be used by the application + @type Image +*/ +var g_run = new Image(); +var g_run1 = new Image(); +var g_run2 = new Image(); +var g_run3 = new Image(); +var g_run4 = new Image(); +var g_run5 = new Image(); +var g_run6 = new Image(); +var g_run7 = new Image(); +var g_run8 = new Image(); +var g_run9 = new Image(); +var g_run10 = new Image(); +var g_run11 = new Image(); +var g_run12 = new Image(); +var g_run13 = new Image(); +var g_run14 = new Image(); +var g_run15 = new Image(); +var g_run16 = new Image(); +var g_run17 = new Image(); +var g_run18 = new Image(); +var g_run19 = new Image(); +var g_run20 = new Image(); +var g_run21 = new Image(); +var g_run22 = new Image(); +var g_run23 = new Image(); +var g_run24 = new Image(); +var g_run25 = new Image(); + +g_run.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run1.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run2.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run3.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run4.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run5.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run6.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run7.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run8.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run9.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run10.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run11.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run12.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run13.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run14.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run15.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run16.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run17.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run18.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run19.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run20.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run21.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run22.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run23.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run24.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run25.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; + + + +// The entry point of the application is set to the init function +window.onload = init; + +/** + Application entry point +*/ +function init() +{ + new GameObjectManager().startupGameObjectManager(); +} diff --git a/static/tests/canvas1/jsplatformer5_files/RepeatingGameObject.js b/static/tests/canvas1/jsplatformer5_files/RepeatingGameObject.js new file mode 100644 index 0000000..b145e97 --- /dev/null +++ b/static/tests/canvas1/jsplatformer5_files/RepeatingGameObject.js @@ -0,0 +1,90 @@ +/** + A class that display a repeating texture that can optionall be offset in either + the x or y axis + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function RepeatingGameObject() +{ + /** The width that the final image will take up + @type Number + */ + this.width = 0; + /** The height that the final image will take up + @type Number + */ + this.height = 0; + /** How much of the scrollX and scrollY to apply when drawing + @type Number + */ + this.scrollFactor = 1; + + /** + Initialises this object + @return A reference to the initialised object + */ + this.startupRepeatingGameObject = function(image, x, y, z, width, height, scrollFactor) + { + this.startupVisualGameObject(image, x, y, z); + this.width = width; + this.height = height; + this.scrollFactor = scrollFactor; + return this; + } + + /** + Clean this object up + */ + this.shutdownstartupRepeatingGameObject = function() + { + this.shutdownVisualGameObject(); + } + + /** + Draws this element to the back buffer + @param dt Time in seconds since the last frame + @param context The context to draw to + @param xScroll The global scrolling value of the x axis + @param yScroll The global scrolling value of the y axis + */ + this.draw = function(dt, canvas, xScroll, yScroll) + { + var areaDrawn = [0, 0]; + + for (var y = 0; y < this.height; y += areaDrawn[1]) + { + for (var x = 0; x < this.width; x += areaDrawn[0]) + { + // the top left corner to start drawing the next tile from + var newPosition = [this.x + x, this.y + y]; + // the amount of space left in which to draw + var newFillArea = [this.width - x, this.height - y]; + // the first time around you have to start drawing from the middle of the image + // subsequent tiles alwyas get drawn from the top or left + var newScrollPosition = [0, 0]; + if (x==0) newScrollPosition[0] = xScroll * this.scrollFactor; + if (y==0) newScrollPosition[1] = yScroll * this.scrollFactor; + areaDrawn = this.drawRepeat(canvas, newPosition, newFillArea, newScrollPosition); + } + } + } + + this.drawRepeat = function(canvas, newPosition, newFillArea, newScrollPosition) + { + // find where in our repeating texture to start drawing (the top left corner) + var xOffset = Math.abs(newScrollPosition[0]) % this.image.width; + var yOffset = Math.abs(newScrollPosition[1]) % this.image.height; + var left = newScrollPosition[0]<0?this.image.width-xOffset:xOffset; + var top = newScrollPosition[1]<0?this.image.height-yOffset:yOffset; + var width = newFillArea[0] < this.image.width-left?newFillArea[0]:this.image.width-left; + var height = newFillArea[1] < this.image.height-top?newFillArea[1]:this.image.height-top; + + // draw the image + canvas.drawImage(this.image, left, top, width, height, newPosition[0], newPosition[1], width, height); + + return [width, height]; + } + + +} +RepeatingGameObject.prototype = new VisualGameObject(); diff --git a/static/tests/canvas1/jsplatformer5_files/Utils.js b/static/tests/canvas1/jsplatformer5_files/Utils.js new file mode 100644 index 0000000..0ec5cfa --- /dev/null +++ b/static/tests/canvas1/jsplatformer5_files/Utils.js @@ -0,0 +1,27 @@ +/** + Removes a number of objects from the array + @param from The first object to remove + @param to (Optional) The last object to remove +*/ +Array.prototype.remove = function(/**Number*/ from, /**Number*/ to) +{ + var rest = this.slice((to || from) + 1 || this.length); + this.length = from < 0 ? this.length + from : from; + return this.push.apply(this, rest); +}; + +/** + Removes a specific object from the array + @param object The object to remove +*/ +Array.prototype.removeObject = function(object) +{ + for (var i = 0; i < this.length; ++i) + { + if (this[i] === object) + { + this.remove(i); + break; + } + } +} diff --git a/static/tests/canvas1/jsplatformer5_files/VisualGameObject.js b/static/tests/canvas1/jsplatformer5_files/VisualGameObject.js new file mode 100644 index 0000000..3f3329a --- /dev/null +++ b/static/tests/canvas1/jsplatformer5_files/VisualGameObject.js @@ -0,0 +1,49 @@ +/** + The base class for all elements that appear in the game. + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function VisualGameObject() +{ + /** + The image that will be displayed by this object + @type Image + */ + this.image = null; + + /** + Draws this element to the back buffer + @param dt Time in seconds since the last frame + @param context The context to draw to + @param xScroll The global scrolling value of the x axis + @param yScroll The global scrolling value of the y axis + */ + this.draw = function(/**Number*/ dt, /**CanvasRenderingContext2D*/ context, /**Number*/ xScroll, /**Number*/ +yScroll) + { + context.drawImage(this.image, this.x - xScroll, this.y - yScroll); + } + + /** + Initialises this object + @param image The image to be displayed + @param x The position on the X axis + @param y The position on the Y axis + @param z The depth + */ + this.startupVisualGameObject = function(/**Image*/ image, /**Number*/ x, /**Number*/ y, /**Number*/ z) + { + this.startupGameObject(x, y, z); + this.image = image; + return this; + } + + /** + Clean this object up + */ + this.shutdownVisualGameObject = function() + { + this.shutdownGameObject(); + } +} +VisualGameObject.prototype = new GameObject; diff --git a/static/tests/canvas2/index.html b/static/tests/canvas2/index.html new file mode 100644 index 0000000..dfff8af --- /dev/null +++ b/static/tests/canvas2/index.html @@ -0,0 +1,24 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<html lang="en"><head> +<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> + + + <script type="text/javascript" src="jsplatformer5_files/GameObject.js"></script> + <script type="text/javascript" src="jsplatformer5_files/VisualGameObject.js"></script> + <script type="text/javascript" src="jsplatformer5_files/RepeatingGameObject.js"></script> + <script type="text/javascript" src="jsplatformer5_files/AnimatedGameObject.js"></script> + <script type="text/javascript" src="jsplatformer5_files/Utils.js"></script> + <script type="text/javascript" src="jsplatformer5_files/ApplicationManager.js"></script> + <script type="text/javascript" src="jsplatformer5_files/GameObjectManager.js"></script> + <script type="text/javascript" src="jsplatformer5_files/Main.js"></script> + <style type="text/css"> + body { font-family: Arial,Helvetica,sans-serif;} + </style> +</head><body> + + <canvas id="canvas" width="80" height="1200" > + <p> + Your browser does not support the canvas element. + </p> + </canvas> +</body></html> diff --git a/static/tests/canvas2/jsplatformer5_files/AnimatedGameObject.js b/static/tests/canvas2/jsplatformer5_files/AnimatedGameObject.js new file mode 100644 index 0000000..895fc19 --- /dev/null +++ b/static/tests/canvas2/jsplatformer5_files/AnimatedGameObject.js @@ -0,0 +1,80 @@ +/** + Displays an animated Game Object + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function AnimatedGameObject() +{ + /** + Defines the current frame that is to be rendered + @type Number + */ + this.currentFrame = 0; + /** + Defines the frames per second of the animation + @type Number + */ + this.timeBetweenFrames = 0; + /** + The number of individual frames held in the image + @type Number + */ + /** + Time until the next frame + @type number + */ + this.timeSinceLastFrame = 0; + /** + The width of each individual frame + @type Number + */ + this.frameWidth = 0; + + /** + Initialises this object + @param image The image to be displayed + @param x The position on the X axis + @param y The position on the Y axis + @param z The depth + @param frameCount The number of animation frames in the image + @param fps The frames per second to animate this object at + */ + this.startupAnimatedGameObject = function(/**Image*/ image, /**Number*/ x, /**Number*/ y, /**Number*/ z, +/**Number*/ frameCount, /**Number*/ fps) + { + if (frameCount <= 0) throw "framecount can not be <= 0"; + if (fps <= 0) throw "fps can not be <= 0" + + this.startupVisualGameObject(image, x, y, z); + this.currentFrame = 0; + this.frameCount = frameCount; + this.timeBetweenFrames = 1/fps; + this.timeSinceLastFrame = this.timeBetweenFrames; + this.frameWidth = this.image.width / this.frameCount; + } + + /** + Draws this element to the back buffer + @param dt Time in seconds since the last frame + @param context The context to draw to + @param xScroll The global scrolling value of the x axis + @param yScroll The global scrolling value of the y axis + */ + this.draw = function(/**Number*/ dt, /**CanvasRenderingContext2D*/ context, /**Number*/ xScroll, /**Number*/ +yScroll) + { + var sourceX = this.frameWidth * this.currentFrame; + context.drawImage(this.image, sourceX, 0, this.frameWidth, this.image.height, this.x - xScroll, this.y - +yScroll, this.frameWidth, this.image.height); + + this.timeSinceLastFrame -= dt; + if (this.timeSinceLastFrame <= 0) + { + this.timeSinceLastFrame = this.timeBetweenFrames; + ++this.currentFrame; + this.currentFrame %= this.frameCount; + } + } +} + +AnimatedGameObject.prototype = new VisualGameObject; diff --git a/static/tests/canvas2/jsplatformer5_files/ApplicationManager.js b/static/tests/canvas2/jsplatformer5_files/ApplicationManager.js new file mode 100644 index 0000000..e572e02 --- /dev/null +++ b/static/tests/canvas2/jsplatformer5_files/ApplicationManager.js @@ -0,0 +1,42 @@ +/** + The ApplicationManager is used to manage the application itself. + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function ApplicationManager() +{ + /** + Initialises this object + @return A reference to the initialised object + */ + this.startupApplicationManager = function() + { + this.runner = new AnimatedGameObject().startupAnimatedGameObject(g_run, 0, 0, 1, 12, 10); + this.runner1 = new AnimatedGameObject().startupAnimatedGameObject(g_run1, 0, 40, 1, 12, 10); + this.runner2 = new AnimatedGameObject().startupAnimatedGameObject(g_run2, 0, 80, 1, 12, 10); + this.runner3 = new AnimatedGameObject().startupAnimatedGameObject(g_run3, 0, 120, 1, 12, 10); + this.runner4 = new AnimatedGameObject().startupAnimatedGameObject(g_run4, 0, 160, 1, 12, 10); + this.runner5 = new AnimatedGameObject().startupAnimatedGameObject(g_run5, 0, 200, 1, 12, 10); + this.runner6 = new AnimatedGameObject().startupAnimatedGameObject(g_run6, 0, 240, 1, 12, 10); + this.runner7 = new AnimatedGameObject().startupAnimatedGameObject(g_run7, 0, 280, 1, 12, 10); + this.runner8 = new AnimatedGameObject().startupAnimatedGameObject(g_run8, 0, 320, 1, 12, 10); + this.runner9 = new AnimatedGameObject().startupAnimatedGameObject(g_run9, 0, 360, 1, 12, 10); + this.runner10 = new AnimatedGameObject().startupAnimatedGameObject(g_run10, 0, 400, 1, 12, 10); + this.runner11 = new AnimatedGameObject().startupAnimatedGameObject(g_run11, 0, 440, 1, 12, 10); + this.runner12 = new AnimatedGameObject().startupAnimatedGameObject(g_run12, 0, 480, 1, 12, 10); + this.runner13 = new AnimatedGameObject().startupAnimatedGameObject(g_run13, 0, 520, 1, 12, 10); + this.runner14 = new AnimatedGameObject().startupAnimatedGameObject(g_run14, 0, 560, 1, 12, 10); + this.runner15 = new AnimatedGameObject().startupAnimatedGameObject(g_run15, 0, 600, 1, 12, 10); + this.runner16 = new AnimatedGameObject().startupAnimatedGameObject(g_run16, 0, 640, 1, 12, 10); + this.runner17 = new AnimatedGameObject().startupAnimatedGameObject(g_run17, 0, 680, 1, 12, 10); + this.runner18 = new AnimatedGameObject().startupAnimatedGameObject(g_run18, 0, 720, 1, 12, 10); + this.runner19 = new AnimatedGameObject().startupAnimatedGameObject(g_run19, 0, 760, 1, 12, 10); + this.runner20 = new AnimatedGameObject().startupAnimatedGameObject(g_run20, 0, 800, 1, 12, 10); + this.runner21 = new AnimatedGameObject().startupAnimatedGameObject(g_run21, 0, 840, 1, 12, 10); + this.runner22 = new AnimatedGameObject().startupAnimatedGameObject(g_run22, 0, 880, 1, 12, 10); + this.runner23 = new AnimatedGameObject().startupAnimatedGameObject(g_run23, 0, 920, 1, 12, 10); + this.runner24 = new AnimatedGameObject().startupAnimatedGameObject(g_run24, 0, 960, 1, 12, 10); + this.runner25 = new AnimatedGameObject().startupAnimatedGameObject(g_run25, 0, 1000, 1, 12, 10); + return this; + } +} diff --git a/static/tests/canvas2/jsplatformer5_files/GameObject.js b/static/tests/canvas2/jsplatformer5_files/GameObject.js new file mode 100644 index 0000000..e6e4e09 --- /dev/null +++ b/static/tests/canvas2/jsplatformer5_files/GameObject.js @@ -0,0 +1,46 @@ +/** + The base class for all elements that appear in the game. + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function GameObject() +{ + /** Display depth order. A smaller zOrder means the element is rendered first, and therefor + in the background. + @type Number + */ + this.zOrder = 0; + /** + The position on the X axis + @type Number + */ + this.x = 0; + /** + The position on the Y axis + @type Number + */ + this.y = 0; + + /** + Initialises the object, and adds it to the list of objects held by the GameObjectManager. + @param x The position on the X axis + @param y The position on the Y axis + @param z The z order of the element (elements in the background have a lower z value) + */ + this.startupGameObject = function(/**Number*/ x, /**Number*/ y, /**Number*/ z) + { + this.zOrder = z; + this.x = x; + this.y = y; + g_GameObjectManager.addGameObject(this); + return this; + } + + /** + Cleans up the object, and removes it from the list of objects held by the GameObjectManager. + */ + this.shutdownGameObject = function() + { + g_GameObjectManager.removeGameObject(this); + } +} diff --git a/static/tests/canvas2/jsplatformer5_files/GameObjectManager.js b/static/tests/canvas2/jsplatformer5_files/GameObjectManager.js new file mode 100644 index 0000000..c22ccd0 --- /dev/null +++ b/static/tests/canvas2/jsplatformer5_files/GameObjectManager.js @@ -0,0 +1,125 @@ +/** + A manager for all the objects in the game + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function GameObjectManager() +{ + /** An array of game objects + @type Arary + */ + this.gameObjects = new Array(); + /** The time that the last frame was rendered + @type Date + */ + this.lastFrame = new Date().getTime(); + /** The global scrolling value of the x axis + @type Number + */ + this.xScroll = 0; + /** The global scrolling value of the y axis + @type Number + */ + this.yScroll = 0; + /** A reference to the ApplicationManager instance + @type ApplicationManager + */ + this.applicationManager = null; + /** A reference to the canvas element + @type HTMLCanvasElement + */ + this.canvas = null; + /** A reference to the 2D context of the canvas element + @type CanvasRenderingContext2D + */ + this.context2D = null; + /** A reference to the in-memory canvas used as a back buffer + @type HTMLCanvasElement + */ + this.backBuffer = null; + /** A reference to the backbuffer 2D context + @type CanvasRenderingContext2D + */ + this.backBufferContext2D = null; + + /** + Initialises this object + @return A reference to the initialised object + */ + this.startupGameObjectManager = function() + { + // set the global pointer to reference this object + g_GameObjectManager = this; + + // get references to the canvas elements and their 2D contexts + this.canvas = document.getElementById('canvas'); + this.context2D = this.canvas.getContext('2d'); + this.backBuffer = document.createElement('canvas'); + this.backBuffer.width = this.canvas.width; + this.backBuffer.height = this.canvas.height; + this.backBufferContext2D = this.backBuffer.getContext('2d'); + + // create a new ApplicationManager + this.applicationManager = new ApplicationManager().startupApplicationManager(); + + // use setInterval to call the draw function + setInterval(function(){g_GameObjectManager.draw();}, SECONDS_BETWEEN_FRAMES); + + return this; + } + + /** + The render loop + */ + this.draw = function () + { + // calculate the time since the last frame + var thisFrame = new Date().getTime(); + var dt = (thisFrame - this.lastFrame)/1000; + this.lastFrame = thisFrame; + + // clear the drawing contexts + this.backBufferContext2D.clearRect(0, 0, this.backBuffer.width, this.backBuffer.height); + this.context2D.clearRect(0, 0, this.canvas.width, this.canvas.height); + + // first update all the game objects + for (x in this.gameObjects) + { + if (this.gameObjects[x].update) + { + this.gameObjects[x].update(dt, this.backBufferContext2D, this.xScroll, this.yScroll); + } + } + + // then draw the game objects + for (x in this.gameObjects) + { + if (this.gameObjects[x].draw) + { + this.gameObjects[x].draw(dt, this.backBufferContext2D, this.xScroll, this.yScroll); + } + } + + // copy the back buffer to the displayed canvas + this.context2D.drawImage(this.backBuffer, 0, 0); + }; + + /** + Adds a new GameObject to the gameObjects collection + @param gameObject The object to add + */ + this.addGameObject = function(gameObject) + { + this.gameObjects.push(gameObject); + this.gameObjects.sort(function(a,b){return a.zOrder - b.zOrder;}) + }; + + /** + Removes a GameObject from the gameObjects collection + @param gameObject The object to remove + */ + this.removeGameObject = function(gameObject) + { + this.gameObjects.removeObject(gameObject); + } +} diff --git a/static/tests/canvas2/jsplatformer5_files/Main.js b/static/tests/canvas2/jsplatformer5_files/Main.js new file mode 100644 index 0000000..752ffa4 --- /dev/null +++ b/static/tests/canvas2/jsplatformer5_files/Main.js @@ -0,0 +1,81 @@ +/** target frames per second + @type Number +*/ +var FPS = 30; +/** time between frames + @type Number +*/ +var SECONDS_BETWEEN_FRAMES = 1 / FPS; +/** A global reference to the GameObjectManager instance + @type GameObjectManager +*/ +var g_GameObjectManager = null; +/** An image to be used by the application + @type Image +*/ +var g_run = new Image(); +var g_run1 = new Image(); +var g_run2 = new Image(); +var g_run3 = new Image(); +var g_run4 = new Image(); +var g_run5 = new Image(); +var g_run6 = new Image(); +var g_run7 = new Image(); +var g_run8 = new Image(); +var g_run9 = new Image(); +var g_run10 = new Image(); +var g_run11 = new Image(); +var g_run12 = new Image(); +var g_run13 = new Image(); +var g_run14 = new Image(); +var g_run15 = new Image(); +var g_run16 = new Image(); +var g_run17 = new Image(); +var g_run18 = new Image(); +var g_run19 = new Image(); +var g_run20 = new Image(); +var g_run21 = new Image(); +var g_run22 = new Image(); +var g_run23 = new Image(); +var g_run24 = new Image(); +var g_run25 = new Image(); + +g_run.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run1.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run2.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run3.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run4.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run5.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run6.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run7.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run8.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run9.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run10.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run11.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run12.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run13.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run14.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run15.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run16.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run17.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run18.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run19.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run20.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run21.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run22.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run23.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run24.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; +g_run25.src = "http://webdemos.sourceforge.net/jsplatformer5/run.png"; + + + +// The entry point of the application is set to the init function +window.onload = init; + +/** + Application entry point +*/ +function init() +{ + new GameObjectManager().startupGameObjectManager(); +} diff --git a/static/tests/canvas2/jsplatformer5_files/RepeatingGameObject.js b/static/tests/canvas2/jsplatformer5_files/RepeatingGameObject.js new file mode 100644 index 0000000..b145e97 --- /dev/null +++ b/static/tests/canvas2/jsplatformer5_files/RepeatingGameObject.js @@ -0,0 +1,90 @@ +/** + A class that display a repeating texture that can optionall be offset in either + the x or y axis + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function RepeatingGameObject() +{ + /** The width that the final image will take up + @type Number + */ + this.width = 0; + /** The height that the final image will take up + @type Number + */ + this.height = 0; + /** How much of the scrollX and scrollY to apply when drawing + @type Number + */ + this.scrollFactor = 1; + + /** + Initialises this object + @return A reference to the initialised object + */ + this.startupRepeatingGameObject = function(image, x, y, z, width, height, scrollFactor) + { + this.startupVisualGameObject(image, x, y, z); + this.width = width; + this.height = height; + this.scrollFactor = scrollFactor; + return this; + } + + /** + Clean this object up + */ + this.shutdownstartupRepeatingGameObject = function() + { + this.shutdownVisualGameObject(); + } + + /** + Draws this element to the back buffer + @param dt Time in seconds since the last frame + @param context The context to draw to + @param xScroll The global scrolling value of the x axis + @param yScroll The global scrolling value of the y axis + */ + this.draw = function(dt, canvas, xScroll, yScroll) + { + var areaDrawn = [0, 0]; + + for (var y = 0; y < this.height; y += areaDrawn[1]) + { + for (var x = 0; x < this.width; x += areaDrawn[0]) + { + // the top left corner to start drawing the next tile from + var newPosition = [this.x + x, this.y + y]; + // the amount of space left in which to draw + var newFillArea = [this.width - x, this.height - y]; + // the first time around you have to start drawing from the middle of the image + // subsequent tiles alwyas get drawn from the top or left + var newScrollPosition = [0, 0]; + if (x==0) newScrollPosition[0] = xScroll * this.scrollFactor; + if (y==0) newScrollPosition[1] = yScroll * this.scrollFactor; + areaDrawn = this.drawRepeat(canvas, newPosition, newFillArea, newScrollPosition); + } + } + } + + this.drawRepeat = function(canvas, newPosition, newFillArea, newScrollPosition) + { + // find where in our repeating texture to start drawing (the top left corner) + var xOffset = Math.abs(newScrollPosition[0]) % this.image.width; + var yOffset = Math.abs(newScrollPosition[1]) % this.image.height; + var left = newScrollPosition[0]<0?this.image.width-xOffset:xOffset; + var top = newScrollPosition[1]<0?this.image.height-yOffset:yOffset; + var width = newFillArea[0] < this.image.width-left?newFillArea[0]:this.image.width-left; + var height = newFillArea[1] < this.image.height-top?newFillArea[1]:this.image.height-top; + + // draw the image + canvas.drawImage(this.image, left, top, width, height, newPosition[0], newPosition[1], width, height); + + return [width, height]; + } + + +} +RepeatingGameObject.prototype = new VisualGameObject(); diff --git a/static/tests/canvas2/jsplatformer5_files/Utils.js b/static/tests/canvas2/jsplatformer5_files/Utils.js new file mode 100644 index 0000000..0ec5cfa --- /dev/null +++ b/static/tests/canvas2/jsplatformer5_files/Utils.js @@ -0,0 +1,27 @@ +/** + Removes a number of objects from the array + @param from The first object to remove + @param to (Optional) The last object to remove +*/ +Array.prototype.remove = function(/**Number*/ from, /**Number*/ to) +{ + var rest = this.slice((to || from) + 1 || this.length); + this.length = from < 0 ? this.length + from : from; + return this.push.apply(this, rest); +}; + +/** + Removes a specific object from the array + @param object The object to remove +*/ +Array.prototype.removeObject = function(object) +{ + for (var i = 0; i < this.length; ++i) + { + if (this[i] === object) + { + this.remove(i); + break; + } + } +} diff --git a/static/tests/canvas2/jsplatformer5_files/VisualGameObject.js b/static/tests/canvas2/jsplatformer5_files/VisualGameObject.js new file mode 100644 index 0000000..3f3329a --- /dev/null +++ b/static/tests/canvas2/jsplatformer5_files/VisualGameObject.js @@ -0,0 +1,49 @@ +/** + The base class for all elements that appear in the game. + @author <a href="mailto:matthewcasperson@gmail.com">Matthew Casperson</a> + @class +*/ +function VisualGameObject() +{ + /** + The image that will be displayed by this object + @type Image + */ + this.image = null; + + /** + Draws this element to the back buffer + @param dt Time in seconds since the last frame + @param context The context to draw to + @param xScroll The global scrolling value of the x axis + @param yScroll The global scrolling value of the y axis + */ + this.draw = function(/**Number*/ dt, /**CanvasRenderingContext2D*/ context, /**Number*/ xScroll, /**Number*/ +yScroll) + { + context.drawImage(this.image, this.x - xScroll, this.y - yScroll); + } + + /** + Initialises this object + @param image The image to be displayed + @param x The position on the X axis + @param y The position on the Y axis + @param z The depth + */ + this.startupVisualGameObject = function(/**Image*/ image, /**Number*/ x, /**Number*/ y, /**Number*/ z) + { + this.startupGameObject(x, y, z); + this.image = image; + return this; + } + + /** + Clean this object up + */ + this.shutdownVisualGameObject = function() + { + this.shutdownGameObject(); + } +} +VisualGameObject.prototype = new GameObject; |
