Initialization
26
README.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
,-----.,--. ,--. ,---. ,--.,------. ,------.
|
||||||
|
' .--./| | ,---. ,--.,--. ,-| || o \ | || .-. \ | .---'
|
||||||
|
| | | || .-. || || |' .-. |`..' | | || | \ :| `--,
|
||||||
|
' '--'\| |' '-' '' '' '\ `-' | .' / | || '--' /| `---.
|
||||||
|
`-----'`--' `---' `----' `---' `--' `--'`-------' `------'
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Hi there! Welcome to Cloud9 IDE!
|
||||||
|
|
||||||
|
To get you started, we included a small hello world application.
|
||||||
|
|
||||||
|
1) Open the hello-world.html file
|
||||||
|
|
||||||
|
2) Click on the Preview button to open a live preview pane
|
||||||
|
|
||||||
|
3) Make some changes to the file, save, watch the preview, and have fun!
|
||||||
|
|
||||||
|
Happy coding!
|
||||||
|
The Cloud9 IDE team
|
||||||
|
|
||||||
|
|
||||||
|
## Support & Documentation
|
||||||
|
|
||||||
|
Visit http://docs.c9.io for documentation, or http://support.c9.io for support.
|
||||||
|
To watch some training videos, visit http://www.youtube.com/user/c9ide
|
||||||
414
css/wordfighters.css
Normal file
@@ -0,0 +1,414 @@
|
|||||||
|
.letter {
|
||||||
|
width: 62px;
|
||||||
|
height: 62px;
|
||||||
|
background-image: url( "../images/scrabble_sprite.png" );
|
||||||
|
background-position: -372px -186px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.blank {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.a {
|
||||||
|
background-position: 0px 0px;
|
||||||
|
}
|
||||||
|
.b {
|
||||||
|
background-position: -62px 0px;
|
||||||
|
}
|
||||||
|
.c {
|
||||||
|
background-position: -124px 0px;
|
||||||
|
}
|
||||||
|
.d {
|
||||||
|
background-position: -186px 0px;
|
||||||
|
}
|
||||||
|
.e {
|
||||||
|
background-position: -248px 0px;
|
||||||
|
}
|
||||||
|
.f {
|
||||||
|
background-position: -310px 0px;
|
||||||
|
}
|
||||||
|
.g {
|
||||||
|
background-position: -372px 0px;
|
||||||
|
}
|
||||||
|
.h {
|
||||||
|
background-position: 0px -62px;
|
||||||
|
}
|
||||||
|
.i {
|
||||||
|
background-position: -62px -62px;
|
||||||
|
}
|
||||||
|
.j {
|
||||||
|
background-position: -124px -62px;
|
||||||
|
}
|
||||||
|
.k {
|
||||||
|
background-position: -186px -62px;
|
||||||
|
}
|
||||||
|
.l {
|
||||||
|
background-position: -248px -62px;
|
||||||
|
}
|
||||||
|
.m {
|
||||||
|
background-position: -310px -62px;
|
||||||
|
}
|
||||||
|
.n {
|
||||||
|
background-position: -372px -62px;
|
||||||
|
}
|
||||||
|
.o {
|
||||||
|
background-position: 0px -124px;
|
||||||
|
}
|
||||||
|
.p {
|
||||||
|
background-position: -62px -124px;
|
||||||
|
}
|
||||||
|
.q {
|
||||||
|
background-position: -124px -124px;
|
||||||
|
}
|
||||||
|
.r {
|
||||||
|
background-position: -186px -124px;
|
||||||
|
}
|
||||||
|
.s {
|
||||||
|
background-position: -248px -124px;
|
||||||
|
}
|
||||||
|
.t {
|
||||||
|
background-position: -310px -124px;
|
||||||
|
}
|
||||||
|
.u {
|
||||||
|
background-position: -372px -124px;
|
||||||
|
}
|
||||||
|
.v {
|
||||||
|
background-position: 0px -186px;
|
||||||
|
}
|
||||||
|
.w {
|
||||||
|
background-position: -62px -186px;
|
||||||
|
}
|
||||||
|
.x {
|
||||||
|
background-position: -124px -186px;
|
||||||
|
}
|
||||||
|
.y {
|
||||||
|
background-position: -186px -186px;
|
||||||
|
}
|
||||||
|
.z {
|
||||||
|
background-position: -248px -186px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hideLetter {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.showLetter {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
#typed {
|
||||||
|
height: 62px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#typed span img {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#valid div {
|
||||||
|
float: none;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
#valid span {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#valid ul {
|
||||||
|
list-style-type:none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#valid li {
|
||||||
|
display: block;
|
||||||
|
float: left ;
|
||||||
|
margin-left:2px;
|
||||||
|
margin-bottom:2px;
|
||||||
|
padding:2px;
|
||||||
|
height: 1em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#valid3 li {
|
||||||
|
width: 2em;
|
||||||
|
}
|
||||||
|
#valid4 li {
|
||||||
|
width: 3em;
|
||||||
|
}
|
||||||
|
#valid5 li {
|
||||||
|
width: 4em;
|
||||||
|
}
|
||||||
|
#valid6 li {
|
||||||
|
width: 5em;
|
||||||
|
}
|
||||||
|
#valid7 li {
|
||||||
|
width: 6em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#howtoLayout {
|
||||||
|
}
|
||||||
|
|
||||||
|
#howto {
|
||||||
|
position:fixed;
|
||||||
|
_position:absolute; /* hack for internet explorer 6*/
|
||||||
|
z-index:1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.levelChoice {
|
||||||
|
height: 60%;
|
||||||
|
opacity: 0.85;
|
||||||
|
position:relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.levelChoice:HOVER {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.levelChoice .character {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#playground {
|
||||||
|
height: 96px;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.character {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
background-image: url( "../images/characters.png" );
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.character.box_center {
|
||||||
|
position:absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -20px; /* moiti<74> de la hauteur */
|
||||||
|
margin-left: -20px; /* moiti<74> de la largeur */
|
||||||
|
}
|
||||||
|
|
||||||
|
.character.E {
|
||||||
|
background-position: 0px 0px;
|
||||||
|
}
|
||||||
|
.character.M {
|
||||||
|
background-position: -40px 0px;
|
||||||
|
}
|
||||||
|
.character.H {
|
||||||
|
background-position: -80px 0px;
|
||||||
|
}
|
||||||
|
.character.X {
|
||||||
|
background-position: -120px 0px;
|
||||||
|
}
|
||||||
|
.character.VS {
|
||||||
|
background-position: -160px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#countdown {
|
||||||
|
position: relative;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
width: 48px;
|
||||||
|
top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clock {
|
||||||
|
background: transparent url( "../images/font.png" ) no-repeat top left;
|
||||||
|
height:16px;
|
||||||
|
width:16px;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.n0 {
|
||||||
|
background-position : 0 0px;
|
||||||
|
}
|
||||||
|
.n1 {
|
||||||
|
background-position : -16px 0;
|
||||||
|
}
|
||||||
|
.n2 {
|
||||||
|
background-position : -32px 0;
|
||||||
|
}
|
||||||
|
.n3 {
|
||||||
|
background-position : -48px 0;
|
||||||
|
}
|
||||||
|
.n4 {
|
||||||
|
background-position : -64px 0;
|
||||||
|
}
|
||||||
|
.n5 {
|
||||||
|
background-position : -80px 0;
|
||||||
|
}
|
||||||
|
.n6 {
|
||||||
|
background-position : -96px 0;
|
||||||
|
}
|
||||||
|
.n7 {
|
||||||
|
background-position : -112px 0;
|
||||||
|
}
|
||||||
|
.n8 {
|
||||||
|
background-position : -128px 0;
|
||||||
|
}
|
||||||
|
.n9 {
|
||||||
|
background-position : -144px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scoreboard {
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
top: 2px;
|
||||||
|
width: 96px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#scoreboard .n0 {
|
||||||
|
background-position : -160px 0;
|
||||||
|
}
|
||||||
|
#scoreboard .n1 {
|
||||||
|
background-position : -176px 0;
|
||||||
|
}
|
||||||
|
#scoreboard .n2 {
|
||||||
|
background-position : -192px 0;
|
||||||
|
}
|
||||||
|
#scoreboard .n3 {
|
||||||
|
background-position : -208px 0;
|
||||||
|
}
|
||||||
|
#scoreboard .n4 {
|
||||||
|
background-position : -224px 0;
|
||||||
|
}
|
||||||
|
#scoreboard .n5 {
|
||||||
|
background-position : -240px 0;
|
||||||
|
}
|
||||||
|
#scoreboard .n6 {
|
||||||
|
background-position : -256px 0;
|
||||||
|
}
|
||||||
|
#scoreboard .n7 {
|
||||||
|
background-position : -272px 0;
|
||||||
|
}
|
||||||
|
#scoreboard .n8 {
|
||||||
|
background-position : -288px 0;
|
||||||
|
}
|
||||||
|
#scoreboard .n9 {
|
||||||
|
background-position : -304px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#step_title {
|
||||||
|
height: 16px;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portrait {
|
||||||
|
width: 264px;
|
||||||
|
height: 225px;
|
||||||
|
visibility: hidden;
|
||||||
|
background-image: url( "../images/portraits.png" );
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
position: relative;
|
||||||
|
margin-top: -130px;
|
||||||
|
margin-left: -100px;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.portrait.E {
|
||||||
|
background-position: 0px 0px;
|
||||||
|
}
|
||||||
|
.portrait.M {
|
||||||
|
background-position: -264px 0px;
|
||||||
|
}
|
||||||
|
.portrait.H {
|
||||||
|
background-position: -528px 0px;
|
||||||
|
}
|
||||||
|
.portrait.X {
|
||||||
|
background-position: -792px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.levelDescription {
|
||||||
|
position: relative;
|
||||||
|
clear: both;
|
||||||
|
padding: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.levelDescription div.level {
|
||||||
|
height: 16px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.desc {
|
||||||
|
position: absolute;
|
||||||
|
top: 32px;
|
||||||
|
left: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.health_bar {
|
||||||
|
height: 10px;
|
||||||
|
width: 100px;
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
background-color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.health_level {
|
||||||
|
height: 8px;
|
||||||
|
position: relative;
|
||||||
|
margin: 1px;
|
||||||
|
}
|
||||||
|
.health_level.good {
|
||||||
|
background-color: green;
|
||||||
|
}
|
||||||
|
.health_level.middle {
|
||||||
|
background-color: yellow;
|
||||||
|
}
|
||||||
|
.health_level.bad {
|
||||||
|
background-color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.level {
|
||||||
|
position: relative;
|
||||||
|
top: 7px;
|
||||||
|
left: 7px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.highlight {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
position: fixed;
|
||||||
|
width: 550px;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -275px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#waitingGame > div {
|
||||||
|
display: inline-block;
|
||||||
|
height: 261px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#level {
|
||||||
|
width:100%;
|
||||||
|
float: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
#label {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
background-color: white;
|
||||||
|
border: 2px solid #e7e7e7;
|
||||||
|
color: white;
|
||||||
|
padding: 15px 32px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
border-radius: 12%;
|
||||||
|
margin: auto;
|
||||||
|
margin-top: 25px;
|
||||||
|
}
|
||||||
BIN
images/0_dot.gif
Normal file
|
After Width: | Height: | Size: 55 B |
BIN
images/akuma.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
images/background.png
Normal file
|
After Width: | Height: | Size: 238 KiB |
BIN
images/banner.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
images/characters.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
images/felicia.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
images/font.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
images/logo.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
images/portraits.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
images/ryu.png
Normal file
|
After Width: | Height: | Size: 226 KiB |
BIN
images/sakura.png
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
images/scrabble_sprite.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
192
index.html
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<link rel="stylesheet" href="css/wordfighters.css" />
|
||||||
|
|
||||||
|
<script src="lib/jquery-1.7.1.js" type="application/javascript"></script>
|
||||||
|
<script src="lib/jquery.i18n.js" type="application/javascript"></script>
|
||||||
|
<script src="lib/jquery.mockjax.min.js" type="application/javascript"></script>
|
||||||
|
<script src="lib/gamequery-0.7.1.js" type="application/javascript"></script>
|
||||||
|
<script src="lib/utf.js" type="application/javascript"></script>
|
||||||
|
<script src="lib/gunzip.min.js" type="application/javascript"></script>
|
||||||
|
|
||||||
|
<script src="js/mock.js" type="application/javascript"></script>
|
||||||
|
<script src="js/countdown.js" type="application/javascript"></script>
|
||||||
|
<script src="js/scoreboard.js" type="application/javascript"></script>
|
||||||
|
<script src="js/wordfighters.js" type="application/javascript"></script>
|
||||||
|
<script src="js/fighters.js" type="application/javascript"></script>
|
||||||
|
<script src="js/dictionary.js" type="application/javascript"></script>
|
||||||
|
|
||||||
|
<script type="application/javascript">
|
||||||
|
|
||||||
|
if( (navigator.language || navigator.userLanguage) == 'fr' ) {
|
||||||
|
$.i18n.load(dictionary.fr);
|
||||||
|
} else {
|
||||||
|
$.i18n.load(dictionary.en);
|
||||||
|
}
|
||||||
|
WordFighter.id = 0; // Used for multiplayer mode
|
||||||
|
WordFighter.mode = "single"; // 'dual' if multiplayer
|
||||||
|
var opponent = "/";
|
||||||
|
|
||||||
|
var game_waiting_ready=$.i18n._('game.waiting.ready');
|
||||||
|
var game_start=$.i18n._('game.start');
|
||||||
|
var game_win=$.i18n._('game.win');
|
||||||
|
var game_loose=$.i18n._('game.loose');
|
||||||
|
var game_draw=$.i18n._('game.draw');
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="waitingGame">
|
||||||
|
<div>
|
||||||
|
<div id="level" class="levelChoice"></div>
|
||||||
|
<div id="E" class="levelChoice">
|
||||||
|
<div id="easy" class="character E"></div>
|
||||||
|
<div id="levelE" class="level unfocus"></div>
|
||||||
|
<div id="levelEHighlight" class="level highlight"></div>
|
||||||
|
</div>
|
||||||
|
<div id="M" class="levelChoice">
|
||||||
|
<div id="medium" class="character M"></div>
|
||||||
|
<div id="levelM" class="level unfocus"></div>
|
||||||
|
<div id="levelMHighlight" class="level highlight"></div>
|
||||||
|
</div>
|
||||||
|
<div id="H" class="levelChoice">
|
||||||
|
<div id="hard" class="character H"></div>
|
||||||
|
<div id="levelH" class="level unfocus"></div>
|
||||||
|
<div id="levelHHighlight" class="level highlight"></div>
|
||||||
|
</div>
|
||||||
|
<div id="X" class="levelChoice">
|
||||||
|
<div id="extreme" class="character X"></div>
|
||||||
|
<div id="levelX" class="level unfocus"></div>
|
||||||
|
<div id="levelXHighlight" class="level highlight"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div id="fighter1portrait" class="portrait" style="visibility: visible;"></div>
|
||||||
|
</div>
|
||||||
|
<div id="label" style="bottom: 0px; position: relative; text-align: center;">
|
||||||
|
Search words between 3 and 7 letters
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="gamePanel" style="display: none;">
|
||||||
|
<div class="span7">
|
||||||
|
<div style="width: 384px; height: 125px; margin-left: auto; margin-right: auto;">
|
||||||
|
<div id="playground"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="letters">
|
||||||
|
<div id="typed">
|
||||||
|
<span> <img id="typed1" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="typed2" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="typed3" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="typed4" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="typed5" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="typed6" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="typed7" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="suggested">
|
||||||
|
<span> <img id="letter1" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="letter2" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="letter3" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="letter4" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="letter5" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="letter6" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
<span> <img id="letter7" class="letter" src="images/0_dot.gif" /> </span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="valid">
|
||||||
|
<div id="valid3column">
|
||||||
|
<span id="3lettersWords">3 letters</span>
|
||||||
|
<ul id="valid3"></ul>
|
||||||
|
</div>
|
||||||
|
<div id="valid4column">
|
||||||
|
<span id="4lettersWords">4 letters</span>
|
||||||
|
<ul id="valid4"></ul>
|
||||||
|
</div>
|
||||||
|
<div id="valid5column">
|
||||||
|
<span id="5lettersWords">5 letters</span>
|
||||||
|
<ul id="valid5"></ul>
|
||||||
|
</div>
|
||||||
|
<div id="valid6column">
|
||||||
|
<span id="6lettersWords">6 letters</span>
|
||||||
|
<ul id="valid6"></ul>
|
||||||
|
</div>
|
||||||
|
<div id="valid7column">
|
||||||
|
<span id="7lettersWords">7 letters</span>
|
||||||
|
<ul id="valid7"></ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span class="button" style="display: none;">
|
||||||
|
<div id="replay" >
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<script type="application/javascript">
|
||||||
|
|
||||||
|
|
||||||
|
$(document).ready(function () {
|
||||||
|
display_text($.i18n._('game.choose.level'), '#level', 1, false);
|
||||||
|
display_text($.i18n._('game.level.E'), '#levelE', 2);
|
||||||
|
display_text($.i18n._('game.level.E'), '#levelEHighlight', 1);
|
||||||
|
display_text($.i18n._('game.level.M'), '#levelM', 2);
|
||||||
|
display_text($.i18n._('game.level.M'), '#levelMHighlight', 1);
|
||||||
|
display_text($.i18n._('game.level.H'), '#levelH', 2);
|
||||||
|
display_text($.i18n._('game.level.H'), '#levelHHighlight', 1);
|
||||||
|
display_text($.i18n._('game.level.X'), '#levelX', 2);
|
||||||
|
display_text($.i18n._('game.level.X'), '#levelXHighlight', 1);
|
||||||
|
|
||||||
|
display_text($.i18n._('game.replay'), '#replay', 1, false);
|
||||||
|
|
||||||
|
$('#3lettersWords').html($.i18n._('wordfighter.letters', 3));
|
||||||
|
$('#4lettersWords').html($.i18n._('wordfighter.letters', 4));
|
||||||
|
$('#5lettersWords').html($.i18n._('wordfighter.letters', 5));
|
||||||
|
$('#6lettersWords').html($.i18n._('wordfighter.letters', 6));
|
||||||
|
$('#7lettersWords').html($.i18n._('wordfighter.letters', 7));
|
||||||
|
|
||||||
|
var currentLevel = null;
|
||||||
|
var labels = new Array();
|
||||||
|
labels[ "E" ] = $.i18n._('wordfighter.howto.E');
|
||||||
|
labels[ "M" ] = $.i18n._('wordfighter.howto.M');
|
||||||
|
labels[ "H" ] = $.i18n._('wordfighter.howto.H');
|
||||||
|
labels[ "X" ] = $.i18n._('wordfighter.howto.X');
|
||||||
|
$("#label").html( labels[ 'E'] );
|
||||||
|
$( ".levelChoice" ).hover(
|
||||||
|
function () {
|
||||||
|
$(this).find("div.character").css({ opacity: 1 });
|
||||||
|
$(this).find("div.unfocus").toggle();
|
||||||
|
$(this).find("div.highlight").toggle();
|
||||||
|
$("#fighter1portrait").addClass(this.id);
|
||||||
|
|
||||||
|
$("#label").html( labels[ this.id] );
|
||||||
|
},
|
||||||
|
function () {
|
||||||
|
$(this).find("div.character").css({ opacity: 0.6 });
|
||||||
|
$(this).find("div.unfocus").toggle();
|
||||||
|
$(this).find("div.highlight").toggle();
|
||||||
|
$("#fighter1portrait").removeClass(this.id);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$('.levelChoice').click(function() {
|
||||||
|
WordFighter.change_level( this.id );
|
||||||
|
WordFighter.notify_dual();
|
||||||
|
});
|
||||||
|
|
||||||
|
if( $.browser.webkit ) {
|
||||||
|
$(document).keydown(WordFighter.prevent_backspace);
|
||||||
|
}
|
||||||
|
$(document).keypress(WordFighter.keypressedHandler);
|
||||||
|
|
||||||
|
$(".button").bind( "click", function() {
|
||||||
|
window.location.reload();
|
||||||
|
} );
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
84
js/countdown.js
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
var COUNTDOWN = {
|
||||||
|
mustStop: false,
|
||||||
|
|
||||||
|
init: function( minutes, seconds ) {
|
||||||
|
COUNTDOWN.minutes = minutes;
|
||||||
|
COUNTDOWN.seconds = seconds;
|
||||||
|
COUNTDOWN.mustStop = false;
|
||||||
|
// $( "#countdown" ).width( ( minutes > 0 ? 90 : 0 ) + 90);
|
||||||
|
// $( "#countdown" ).css( "background-color", "black" );
|
||||||
|
},
|
||||||
|
|
||||||
|
start: function() {
|
||||||
|
if( COUNTDOWN.mustStop )
|
||||||
|
return;
|
||||||
|
|
||||||
|
COUNTDOWN.running = true;
|
||||||
|
|
||||||
|
var currentMinutes = "";
|
||||||
|
var currentSeconds = "";
|
||||||
|
var imageMinutes = "";
|
||||||
|
var imageSeconds = "";
|
||||||
|
|
||||||
|
currentMinutes = COUNTDOWN.minutes;
|
||||||
|
currentSeconds = COUNTDOWN.seconds;
|
||||||
|
|
||||||
|
var nextMinutes = COUNTDOWN.minutes;
|
||||||
|
var nextSeconds = COUNTDOWN.seconds - 1;
|
||||||
|
|
||||||
|
if( nextSeconds < 0 && nextMinutes > 0 ) {
|
||||||
|
nextSeconds = 59;
|
||||||
|
nextMinutes = Math.min(0, nextMinutes -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
COUNTDOWN.minutes = nextMinutes;
|
||||||
|
COUNTDOWN.seconds = nextSeconds;
|
||||||
|
|
||||||
|
if( currentMinutes <= 0 && currentSeconds < 10 )
|
||||||
|
$( "#countdown" ).css( "background-color", "red" );
|
||||||
|
|
||||||
|
if(parseInt(currentMinutes) < 10 ) currentMinutes = "0" + currentMinutes;
|
||||||
|
if(parseInt(currentSeconds) < 10 ) currentSeconds = "0" + currentSeconds;
|
||||||
|
|
||||||
|
for(i = 0; i < String(currentMinutes).length; i++) {
|
||||||
|
imageMinutes += "<div class='clock n"+ String(currentMinutes)[i]+"'></div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < String(currentSeconds).length; i++) {
|
||||||
|
imageSeconds += "<div class='clock n"+ String(currentSeconds)[i]+"'></div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
if( COUNTDOWN.minutes > 0) {
|
||||||
|
$("#subMinutes").empty().removeClass( "hide" ).append( imageMinutes );;
|
||||||
|
$(".clock.clock.separator").removeClass( "hide" );
|
||||||
|
} else {
|
||||||
|
$("#subMinutes").empty().addClass( "hide" );
|
||||||
|
$(".clock.clock.separator").addClass( "hide" );
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#subSeconds").empty().append( imageSeconds );
|
||||||
|
|
||||||
|
if( nextMinutes >= 0 && nextSeconds >= 0 )
|
||||||
|
setTimeout( "COUNTDOWN.start()", 1000 );
|
||||||
|
else
|
||||||
|
COUNTDOWN.callback();
|
||||||
|
},
|
||||||
|
|
||||||
|
add: function(seconds) {
|
||||||
|
console.log( "Adding " + seconds + " seconds to countdown" );
|
||||||
|
COUNTDOWN.seconds = COUNTDOWN.seconds + seconds;
|
||||||
|
},
|
||||||
|
|
||||||
|
setTime: function( seconds ) {
|
||||||
|
console.log( "Setting " + seconds + " seconds to countdown" );
|
||||||
|
COUNTDOWN.seconds = seconds;
|
||||||
|
},
|
||||||
|
|
||||||
|
stop: function() {
|
||||||
|
COUNTDOWN.mustStop = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
callback: function() {
|
||||||
|
console.log( "COUNTDOWN.callback" );
|
||||||
|
}
|
||||||
|
};
|
||||||
52
js/dictionary.js
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
var dictionary = {
|
||||||
|
'en' : {
|
||||||
|
'wordfighter.howto.1' : 'When you click on the "Start" button, a combinaison of letters is generated.',
|
||||||
|
'wordfighter.howto.2' : 'The goal is to retrieve a maximum of words with these letters using your keyboard.',
|
||||||
|
'wordfighter.howto.3' : 'To validate a word, simply press the "Enter" key.',
|
||||||
|
'wordfighter.howto.4' : 'To get new letters, press the "Space" bar.',
|
||||||
|
'wordfighter.howto.E' : 'Search words between 3 and 7 letters',
|
||||||
|
'wordfighter.howto.M' : 'Search words between 3 and 6 letters',
|
||||||
|
'wordfighter.howto.H' : 'Search words between 4 and 7 letters',
|
||||||
|
'wordfighter.howto.X' : 'No escape ! You can\'t have new letters before reach all words !',
|
||||||
|
'wordfighter.title' : 'Word Fighters',
|
||||||
|
'wordfighter.letters' : '%s letters',
|
||||||
|
'game.no.score' : 'No highscore',
|
||||||
|
'game.waiting.opponent' : 'Waiting for your opponent',
|
||||||
|
'game.waiting.ready' : 'Get ready !!',
|
||||||
|
'game.start' : 'Start !!',
|
||||||
|
'game.win' : 'You win !!',
|
||||||
|
'game.loose' : 'You loose !!',
|
||||||
|
'game.draw' : 'Draw !!',
|
||||||
|
'game.replay' : 'Play again',
|
||||||
|
'game.level.E' : 'Easy',
|
||||||
|
'game.level.M' : 'Medium',
|
||||||
|
'game.level.H' : 'Hard',
|
||||||
|
'game.level.X' : 'Extrem',
|
||||||
|
'game.choose.level' : 'Choose your level'
|
||||||
|
},
|
||||||
|
'fr' : {
|
||||||
|
'wordfighter.howto.1' : 'Dès que vous cliquez sur le bouton "Jouer", une combinaison de lettres est générée.',
|
||||||
|
'wordfighter.howto.2' : 'Le but est de retrouver le maximum de mots avec ces lettres en utilisant le clavier.',
|
||||||
|
'wordfighter.howto.3' : 'Pour valider un mot, utilisez simplement la touche "Entrer".',
|
||||||
|
'wordfighter.howto.4' : 'Pour avoir un nouveau tirage, pressez la touche "Espace".',
|
||||||
|
'wordfighter.howto.E' : 'Trouver des mots de 3 à 7 lettres',
|
||||||
|
'wordfighter.howto.M' : 'Trouver des mots de 3 à 6 lettres',
|
||||||
|
'wordfighter.howto.H' : 'Trouver des mots de 4 à 7 lettres',
|
||||||
|
'wordfighter.howto.X' : 'Il n\'y a pas déchappatoire! Vous ne pouvez pas changer vos lettres tant que tous les mots n\'ont pas été trouvés!',
|
||||||
|
'wordfighter.title' : 'Word Fighters',
|
||||||
|
'wordfighter.letters' : '%s lettres',
|
||||||
|
'game.no.score' : 'Aucun score',
|
||||||
|
'game.waiting.opponent' : 'En attente de votre adversaire',
|
||||||
|
'game.waiting.ready' : 'Pret !!',
|
||||||
|
'game.start' : 'Partez !!',
|
||||||
|
'game.win' : 'Victoire !!',
|
||||||
|
'game.loose' : 'Vous avez perdu !!',
|
||||||
|
'game.draw' : 'Match nul !!',
|
||||||
|
'game.replay' : 'Rejouer',
|
||||||
|
'game.level.E' : 'Facile',
|
||||||
|
'game.level.M' : 'Intermediaire',
|
||||||
|
'game.level.H' : 'Diffile',
|
||||||
|
'game.level.X' : 'Extreme',
|
||||||
|
'game.choose.level' : 'Choisissez votre niveau'
|
||||||
|
}
|
||||||
|
}
|
||||||
563
js/fighters.js
Normal file
@@ -0,0 +1,563 @@
|
|||||||
|
var PLAYGROUND_WIDTH = 384;
|
||||||
|
var PLAYGROUND_HEIGHT = 96;
|
||||||
|
var FIGHTER_STD_WIDTH = 82;
|
||||||
|
var FIGHTER_EXT_WIDTH = 126;
|
||||||
|
var FIGHTER_EXT_WIDTH_2 = 136;
|
||||||
|
var FIGHTER_EXT_WIDTH_3 = 95;
|
||||||
|
var FIGHTER_EXT_WIDTH_4 = 105;
|
||||||
|
var FIGHTER_EXT_WIDTH_5 = 86;
|
||||||
|
var FIGHTER1_POSX = PLAYGROUND_WIDTH / 2 - (FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH) / 2 - FIGHTER_STD_WIDTH;
|
||||||
|
var FIGHTER2_POSX = PLAYGROUND_WIDTH / 2 + (FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH) / 2;
|
||||||
|
var COUNTDOWN_WIDTH = 48;
|
||||||
|
var COUNTDOWN_POSX = (PLAYGROUND_WIDTH - COUNTDOWN_WIDTH) / 2;
|
||||||
|
var HEALTH_REFRESH_RATE = 15;
|
||||||
|
var FIGHTER_HEALTH = 60;
|
||||||
|
var LOOP_COUNT_REFRESH = 66;
|
||||||
|
var fighter1 = null;
|
||||||
|
var fighter2 = null;
|
||||||
|
var loopCount = 0;
|
||||||
|
|
||||||
|
var fighters = new Array();
|
||||||
|
|
||||||
|
$(function(){
|
||||||
|
//Playground Sprites
|
||||||
|
var background = new $.gameQuery.Animation({imageURL: "images/background.png", offsety: PLAYGROUND_HEIGHT * Math.floor(Math.random()*11)});
|
||||||
|
|
||||||
|
$("#playground").playground({height: PLAYGROUND_HEIGHT, width: PLAYGROUND_WIDTH, keyTracker: true});
|
||||||
|
|
||||||
|
$.playground().addGroup("background", {width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT})
|
||||||
|
.addSprite( "background1",
|
||||||
|
{posx: 0, posy: 0,
|
||||||
|
height: PLAYGROUND_HEIGHT, width: PLAYGROUND_WIDTH,
|
||||||
|
animation: background})
|
||||||
|
.end()
|
||||||
|
.addGroup("fighters", {width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT})
|
||||||
|
.end()
|
||||||
|
.addGroup( "hud", {width: PLAYGROUND_WIDTH, height: PLAYGROUND_HEIGHT})
|
||||||
|
.end();
|
||||||
|
|
||||||
|
$("#hud").append("<div id='countdown'><div id='subSeconds'></div></div>");
|
||||||
|
$("#hud").append("<div id='step_title'></div>");
|
||||||
|
|
||||||
|
$.playground().registerCallback(function(){
|
||||||
|
if( fighter1 )
|
||||||
|
updateHealth( $("#player1_health_level"), fighter1.health / fighter1.maxHealth );
|
||||||
|
if( fighter2 ) {
|
||||||
|
updateHealth( $("#player2_health_level"), fighter2.health / fighter2.maxHealth );
|
||||||
|
//$("#player2_health_level").css( "margin-left", ( 100 - (fighter2.health / fighter2.maxHealth) * 100) );
|
||||||
|
}
|
||||||
|
loopCount++;
|
||||||
|
if( loopCount == LOOP_COUNT_REFRESH ) {
|
||||||
|
loopCount = 0;
|
||||||
|
var fighter = fighters[ "fighter1" ];
|
||||||
|
if( fighter && fighter.isIdle() ) {
|
||||||
|
fighter.node.width( FIGHTER_STD_WIDTH );
|
||||||
|
fighter.node.x( FIGHTER1_POSX );
|
||||||
|
}
|
||||||
|
fighter = fighters[ "fighter2" ];
|
||||||
|
if( fighter && fighter.isIdle() ) {
|
||||||
|
fighter.node.width( FIGHTER_STD_WIDTH );
|
||||||
|
fighter.node.x( FIGHTER2_POSX );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, HEALTH_REFRESH_RATE);
|
||||||
|
|
||||||
|
$.playground().startGame( function() {});
|
||||||
|
|
||||||
|
addFighter = function( fighter) {
|
||||||
|
$("#fighters").addSprite("fighter1", {animation: fighter.animations["idle"], posx:FIGHTER1_POSX, posy: 15, width: FIGHTER_STD_WIDTH, height: FIGHTER_STD_WIDTH});
|
||||||
|
fighter.node = $("#fighter1");
|
||||||
|
fighter1 = fighter;
|
||||||
|
fighters[ "fighter1" ] = fighter;
|
||||||
|
};
|
||||||
|
|
||||||
|
addFighter2 = function( fighter ) {
|
||||||
|
$("#fighters").addSprite("fighter2", {animation: fighter.animations["idle"], posx:FIGHTER2_POSX, posy: 15, width: FIGHTER_STD_WIDTH, height: FIGHTER_STD_WIDTH});
|
||||||
|
fighter.node = $("#fighter2");
|
||||||
|
$("#fighter2").fliph(true);
|
||||||
|
fighter2 = fighter;
|
||||||
|
fighters[ "fighter2" ] = fighter;
|
||||||
|
};
|
||||||
|
|
||||||
|
addScoreBoard = function() {
|
||||||
|
$("#hud").append("<div id='scoreboard' class='scoreboard'><div class='subScoreboard'></div></div>");
|
||||||
|
};
|
||||||
|
|
||||||
|
addHealthBars = function() {
|
||||||
|
$("#hud").append("<div id='player1_health' style='left: 10px;' class='health_bar'><div id='player1_health_level' class='health_level good'></div></div>");
|
||||||
|
$("#hud").append("<div id='player2_health' style='left: " + (PLAYGROUND_WIDTH - 100 - 10) + "px;'class='health_bar'><div id='player2_health_level' class='health_level good reverse'></div></div>");
|
||||||
|
};
|
||||||
|
|
||||||
|
updateHealth = function( HTMLDiv, health ) {
|
||||||
|
HTMLDiv.removeClass();
|
||||||
|
HTMLDiv.addClass("health_level");
|
||||||
|
if( health > 2/3)
|
||||||
|
HTMLDiv.addClass("good");
|
||||||
|
else if( health > 1/3)
|
||||||
|
HTMLDiv.addClass("middle");
|
||||||
|
else
|
||||||
|
HTMLDiv.addClass("bad");
|
||||||
|
HTMLDiv.width( (health * 100) + "%" );
|
||||||
|
};
|
||||||
|
|
||||||
|
display_text = function( text, divId = "#step_title", offset = 1, changePosition = true ) {
|
||||||
|
var message = text.toLowerCase();
|
||||||
|
var divHTML = $(divId);
|
||||||
|
var html = "";
|
||||||
|
var yPos = offset * 16;
|
||||||
|
|
||||||
|
for( var i = 0; i < message.length; i++ ) {
|
||||||
|
var letter = message[i];
|
||||||
|
var x = ((97 - message.charCodeAt(i)) * 16);
|
||||||
|
if( letter == " " )
|
||||||
|
html += "<div class='blank'></div>";
|
||||||
|
else if( letter == "!" )
|
||||||
|
html += "<div class='clock' style='background-position: -416px -" + yPos + "px'></div>";
|
||||||
|
else
|
||||||
|
html += "<div class='clock' style='background-position: " + x + "px -" + yPos + "px'></div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
divHTML.empty();
|
||||||
|
divHTML.width( (text.length * 16) + "px");
|
||||||
|
if( changePosition ) {
|
||||||
|
divHTML.css( "margin-left", "-" + (text.length * 8) + "px");
|
||||||
|
}
|
||||||
|
divHTML.append( html );
|
||||||
|
};
|
||||||
|
|
||||||
|
hide_text = function() {
|
||||||
|
$("#step_title").empty();
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
//Game objects:
|
||||||
|
function Fighter(){
|
||||||
|
|
||||||
|
this.node = null;
|
||||||
|
this.animations = new Array();
|
||||||
|
this.maxHealth = FIGHTER_HEALTH;
|
||||||
|
this.health = FIGHTER_HEALTH;
|
||||||
|
this.idle_state = false;
|
||||||
|
|
||||||
|
this.isIdle = function() {
|
||||||
|
return this.idle_state;
|
||||||
|
};
|
||||||
|
this.setIdle = function( state ) {
|
||||||
|
this.idle_state = state;
|
||||||
|
};
|
||||||
|
this.start = function() {
|
||||||
|
this.node.setAnimation(this.animations["start"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
this.idle = function() {
|
||||||
|
this.node.setAnimation(this.animations["idle"]);
|
||||||
|
this.setIdle( true );
|
||||||
|
};
|
||||||
|
this.punch = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
this.node.setAnimation(this.animations["punch"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
this.kick = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
this.node.setAnimation(this.animations["kick"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
this.special = function() {};
|
||||||
|
this.victory = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
this.node.setAnimation(this.animations["victory"]);
|
||||||
|
};
|
||||||
|
this.loose = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
this.node.setAnimation(this.animations["loose"]);
|
||||||
|
};
|
||||||
|
this.ouch = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
this.node.setAnimation(this.animations["ouch"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
this.laught = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
this.node.setAnimation(this.animations["laught"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function Ryu(){
|
||||||
|
this.animations["start"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 8, offsety: 0, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["victory"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 7, offsety: 82, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["victory2"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 4, offsety: 82, offsetx: 246, delta: FIGHTER_STD_WIDTH, rate: 200, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["idle"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 6, offsety: 164, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL});
|
||||||
|
this.animations["punch"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 6, offsety: 246, delta: FIGHTER_EXT_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["kick"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 7, offsety: 328, delta: FIGHTER_EXT_WIDTH_2, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["ouch"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 4, offsety: 410, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["laught"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 7, offsety: 492, delta: FIGHTER_EXT_WIDTH_3, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["loose"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 9, offsety: 574, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["loose2"] = new $.gameQuery.Animation({imageURL: "images/ryu.png", numberOfFrame: 6, offsety: 656, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE});
|
||||||
|
};
|
||||||
|
Ryu.prototype = new Fighter();
|
||||||
|
Ryu.prototype.punch = function() {
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["punch"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Ryu.prototype.kick = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH_2 );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH_2 - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["kick"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x( FIGHTER_EXT_WIDTH_2 - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Ryu.prototype.laught = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH_3 );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH_3 - FIGHTER_STD_WIDTH),true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["laught"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x(FIGHTER_EXT_WIDTH_3 - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Ryu.prototype.loose = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH_4 );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["loose"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["loose2"]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Ryu.prototype.victory = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.setAnimation(this.animations["victory"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["victory2"]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function Sakura(){
|
||||||
|
this.animations["start"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 9, offsety: 334, delta: FIGHTER_EXT_WIDTH_3, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["victory"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 7, offsety: 82, delta: FIGHTER_EXT_WIDTH_5, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["victory2"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 4, offsety: 82, offsetx: 258, delta: FIGHTER_EXT_WIDTH_5, rate: 200, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["idle"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 5, offsety: 0, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL});
|
||||||
|
this.animations["punch"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 5, offsety: 166, delta: FIGHTER_EXT_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["kick"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 6, offsety: 252, delta: FIGHTER_EXT_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["ouch"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 4, offsetx: 492, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
// this.animations["laught"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 7, offsety: 492, delta: FIGHTER_EXT_WIDTH_3, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["loose"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 10, offsety: 412, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE });
|
||||||
|
// this.animations["loose2"] = new $.gameQuery.Animation({imageURL: "images/sakura.png", numberOfFrame: 6, offsety: 656, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE});
|
||||||
|
};
|
||||||
|
Sakura.prototype = new Fighter();
|
||||||
|
Sakura.prototype.victory = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.setAnimation(this.animations["victory"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["victory2"]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Sakura.prototype.punch = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["punch"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Sakura.prototype.kick = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["kick"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Sakura.prototype.laught = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH_3 );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x(-(FIGHTER_EXT_WIDTH_3 - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["start"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnodex(FIGHTER_EXT_WIDTH_3 - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Sakura.prototype.loose = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH_4 );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["loose"]);
|
||||||
|
}
|
||||||
|
function Akuma(){
|
||||||
|
this.animations["start"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 11, offsety: 82, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["victory"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 10, offsety: 328, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["victory2"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 8, offsety: 328, offsetx: 162, delta: FIGHTER_STD_WIDTH, rate: 200, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["idle"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 11, offsety: 0, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL});
|
||||||
|
this.animations["punch"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 5, offsety: 164, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["kick"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 7, offsety: 246, delta: FIGHTER_EXT_WIDTH_2, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["ouch"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 7, offsety: 576, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
// this.animations["laught"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 7, offsety: 492, delta: FIGHTER_EXT_WIDTH_3, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["loose"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 9, offsety: 412, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["loose2"] = new $.gameQuery.Animation({imageURL: "images/akuma.png", numberOfFrame: 3, offsety: 494, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE});
|
||||||
|
};
|
||||||
|
Akuma.prototype = new Fighter();
|
||||||
|
Akuma.prototype.punch = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH_4 );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["punch"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Akuma.prototype.kick = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH_2 );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH_2 - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["kick"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x(FIGHTER_EXT_WIDTH_2 - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Akuma.prototype.victory = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.setAnimation(this.animations["victory"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["victory2"]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Akuma.prototype.loose = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH_4 );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["loose"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["loose2"]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Akuma.prototype.ouch = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH_4 );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x(-(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["ouch"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function Felicia(){
|
||||||
|
this.animations["start"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 10, offsety: 82, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["victory"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 10, offsety: 328, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["victory2"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 5, offsety: 328, offsetx: 410, delta: FIGHTER_STD_WIDTH, rate: 200, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["idle"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 8, offsety: 0, delta: FIGHTER_STD_WIDTH, rate: 200, type: $.gameQuery.ANIMATION_HORIZONTAL});
|
||||||
|
this.animations["punch"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 6, offsety: 164, delta: FIGHTER_EXT_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["kick"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 7, offsety: 246, delta: FIGHTER_EXT_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["ouch"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 5, offsety: 492, delta: FIGHTER_EXT_WIDTH_4, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
// this.animations["laught"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 7, offsety: 492, delta: FIGHTER_EXT_WIDTH_3, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE | $.gameQuery.ANIMATION_CALLBACK});
|
||||||
|
this.animations["loose"] = new $.gameQuery.Animation({imageURL: "images/felicia.png", numberOfFrame: 6, offsety: 410, delta: FIGHTER_STD_WIDTH, rate: 150, type: $.gameQuery.ANIMATION_HORIZONTAL | $.gameQuery.ANIMATION_ONCE });
|
||||||
|
};
|
||||||
|
Felicia.prototype = new Fighter();
|
||||||
|
Felicia.prototype.punch = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["punch"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Felicia.prototype.kick = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x(-(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["kick"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x(FIGHTER_EXT_WIDTH - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Felicia.prototype.victory = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.setAnimation(this.animations["victory"],
|
||||||
|
function(node) {
|
||||||
|
fighters[ node.id ].node.setAnimation(fighters[ node.id ].animations["victory2"]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Felicia.prototype.ouch = function() {
|
||||||
|
if( !this.isIdle() )
|
||||||
|
return;
|
||||||
|
this.setIdle( false );
|
||||||
|
|
||||||
|
this.node.width( FIGHTER_EXT_WIDTH_4 );
|
||||||
|
if( this.node.fliph() ) {
|
||||||
|
this.node.x( -(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH), true);
|
||||||
|
}
|
||||||
|
this.node.setAnimation(this.animations["ouch"],
|
||||||
|
function(node) {
|
||||||
|
var HTMLnode = fighters[ node.id ].node;
|
||||||
|
HTMLnode.width( FIGHTER_STD_WIDTH );
|
||||||
|
if( HTMLnode.fliph() ) {
|
||||||
|
HTMLnode.x(FIGHTER_EXT_WIDTH_4 - FIGHTER_STD_WIDTH, true);
|
||||||
|
}
|
||||||
|
fighters[ node.id ].idle();
|
||||||
|
});
|
||||||
|
}
|
||||||
0
js/lexik.js
Normal file
207
js/mock.js
Normal file
@@ -0,0 +1,207 @@
|
|||||||
|
var lexik = null;
|
||||||
|
var enigma = null;
|
||||||
|
var score = 0;
|
||||||
|
var time = 0;
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
var oReq = new XMLHttpRequest();
|
||||||
|
oReq.open("GET", "resources/french", true);
|
||||||
|
oReq.responseType = "arraybuffer";
|
||||||
|
|
||||||
|
oReq.onload = function(oEvent) {
|
||||||
|
var arrayBuffer = oReq.response;
|
||||||
|
|
||||||
|
// if you want to access the bytes:
|
||||||
|
var byteArray = new Uint8Array(arrayBuffer);
|
||||||
|
var gunzip = new Zlib.Gunzip(new Uint8Array(byteArray));
|
||||||
|
var plain = gunzip.decompress();
|
||||||
|
lexik = JSON.parse(Utf8ArrayToStr(plain));
|
||||||
|
};
|
||||||
|
|
||||||
|
oReq.send();
|
||||||
|
});
|
||||||
|
|
||||||
|
function generateEnigma(level) {
|
||||||
|
var min = 3, max = 7;
|
||||||
|
|
||||||
|
switch( level ) {
|
||||||
|
case 'E' :
|
||||||
|
min = 3;
|
||||||
|
max = 7;
|
||||||
|
break;
|
||||||
|
case 'M' :
|
||||||
|
min = 3;
|
||||||
|
max = 6;
|
||||||
|
break;
|
||||||
|
case 'H' :
|
||||||
|
min = 4;
|
||||||
|
max = 7;
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
min = 3;
|
||||||
|
max = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
var mustRun = false;
|
||||||
|
var letters;
|
||||||
|
var allWords = {};
|
||||||
|
do {
|
||||||
|
letters = getRandomSet(max);
|
||||||
|
allWords = getWords2param(letters, min);
|
||||||
|
|
||||||
|
var wordsCount = 0;
|
||||||
|
for (var i = min; i < max + 1; i++) {
|
||||||
|
var words = allWords[i];
|
||||||
|
if (words != null) {
|
||||||
|
wordsCount += words.length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mustRun = wordsCount < (max + min) * 0.7;
|
||||||
|
} while (mustRun);
|
||||||
|
return {letters: letters, words: allWords, minLength: min, maxLength: max};
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRandomSet( maxLetter) {
|
||||||
|
var statistics = lexik.statistics;
|
||||||
|
var max = 0.0;
|
||||||
|
for (var i = 0; i < 26; i++) {
|
||||||
|
max += statistics[i];
|
||||||
|
}
|
||||||
|
var letters = [];
|
||||||
|
for (var i = 0; i < maxLetter; i++) {
|
||||||
|
letters[i] = getRandomLetter(max, statistics);
|
||||||
|
}
|
||||||
|
return letters.sort();
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRandomLetter(max, statistics) {
|
||||||
|
var r = Math.random() * max;
|
||||||
|
max = 0.0;
|
||||||
|
for (var i = 0; i < 26; i++) {
|
||||||
|
max += statistics[i];
|
||||||
|
if (r < max) {
|
||||||
|
return String.fromCharCode(i + 97);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 'z';
|
||||||
|
}
|
||||||
|
|
||||||
|
function getWords2param(letters, minimum) {
|
||||||
|
var words = [];
|
||||||
|
for (var i = letters.length; i > 2; i--) {
|
||||||
|
var newWords = getWords(letters, minimum, i);
|
||||||
|
if (newWords != null && newWords.length > 0 ) {
|
||||||
|
for( var j = 0; j < newWords.length; j++) {
|
||||||
|
if( words.indexOf(newWords[j]) == -1 ) {
|
||||||
|
words.push(newWords[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var lists = {};
|
||||||
|
for (var i = 0; i < words.length; i++) {
|
||||||
|
var word = words[i];
|
||||||
|
var list = lists[word.length];
|
||||||
|
if (list === undefined) {
|
||||||
|
list = [];
|
||||||
|
lists[word.length] = list;
|
||||||
|
}
|
||||||
|
list.push(word);
|
||||||
|
}
|
||||||
|
for (var i = letters.length; i > 2; i--) {
|
||||||
|
var list = lists[i];
|
||||||
|
if (list !== undefined) {
|
||||||
|
list = list.sort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return lists;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getWords(letters, minimum, size) {
|
||||||
|
if (size < minimum) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var setSize = letters.length;
|
||||||
|
|
||||||
|
if (size == setSize) {
|
||||||
|
var currentNode = lexik.nodes.nodes[letters[0]];
|
||||||
|
if (currentNode == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
for (var i = 1; i < setSize; i++) {
|
||||||
|
currentNode = currentNode.nodes[letters[i]];
|
||||||
|
if (currentNode == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (i == setSize - 1) {
|
||||||
|
return currentNode.words;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var results = [];
|
||||||
|
for (var i = 0; i < setSize - size; i++) {
|
||||||
|
for (var j = 0; j < setSize; j++) {
|
||||||
|
var words = getWords(letters.slice(0,j).concat(letters.slice(j+1)), minimum, size - i);
|
||||||
|
if (words != null && words.length > 0) {
|
||||||
|
results = results.concat(words);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return results.sort();
|
||||||
|
}
|
||||||
|
|
||||||
|
$.mockjax({
|
||||||
|
url: "/wordFighter/levelChoice",
|
||||||
|
status: 200
|
||||||
|
});
|
||||||
|
|
||||||
|
$.mockjax({
|
||||||
|
url: "/wordFighter/ready",
|
||||||
|
status: 200
|
||||||
|
});
|
||||||
|
|
||||||
|
$.mockjax({
|
||||||
|
url: "/wordFighter/newEnigma",
|
||||||
|
contentType: "application/json",
|
||||||
|
response: function(data) {
|
||||||
|
enigma = generateEnigma(data.data.level);
|
||||||
|
if( time != 0 ) {
|
||||||
|
enigma.remaining_time = 60 - (new Date().getTime() - time) / 1000;
|
||||||
|
score = 0;
|
||||||
|
} else {
|
||||||
|
enigma.remaining_time = 60;
|
||||||
|
}
|
||||||
|
time = new Date().getTime();
|
||||||
|
this.responseText = JSON.stringify(enigma)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.mockjax( {
|
||||||
|
url: '/wordFighter/get_ready',
|
||||||
|
contentType: 'text/html',
|
||||||
|
responseText: '<div>\
|
||||||
|
<div style="height: 261px;">\
|
||||||
|
<div id="fighter1portrait" class="portrait"></div>\
|
||||||
|
</div>\
|
||||||
|
</div>\
|
||||||
|
<div style="height: 261px;width: 96px;">\
|
||||||
|
<div id="versus" style="width: 96px;height: 16px;margin-left: -48px;margin-top: -8px;position: relative;left: 50%;top: 50%;">\
|
||||||
|
<div id="howToPlay"></div>\
|
||||||
|
</div>\
|
||||||
|
</div>\
|
||||||
|
<div>\
|
||||||
|
<div style="height: 261px;">\
|
||||||
|
<div id="fighter2portrait" class="portrait"></div>\
|
||||||
|
</div>\
|
||||||
|
</div>'
|
||||||
|
})
|
||||||
|
|
||||||
|
$.mockjax( {
|
||||||
|
url: '/wordFighter/gameOver',
|
||||||
|
contentType: 'text/html',
|
||||||
|
responseText: ''
|
||||||
|
});
|
||||||
44
js/scoreboard.js
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
var SCOREBOARD = {
|
||||||
|
score: 0,
|
||||||
|
scoreLength: 6,
|
||||||
|
|
||||||
|
init: function(size) {
|
||||||
|
if( typeof size !== "undefined" )
|
||||||
|
SCOREBOARD.scoreLength = size;
|
||||||
|
SCOREBOARD.score = 0;
|
||||||
|
SCOREBOARD.set_score( 0 );
|
||||||
|
},
|
||||||
|
|
||||||
|
add: function(addToScore, div) {
|
||||||
|
SCOREBOARD.set_score( SCOREBOARD.score + addToScore, div);
|
||||||
|
},
|
||||||
|
|
||||||
|
set_score: function( score, div ) {
|
||||||
|
var currentScore = "";
|
||||||
|
var imageScore = "";
|
||||||
|
|
||||||
|
SCOREBOARD.score = score;
|
||||||
|
currentScore = SCOREBOARD.pad();
|
||||||
|
|
||||||
|
for(i = 0; i < String(currentScore).length; i++) {
|
||||||
|
imageScore += "<div class='clock n"+ String(currentScore)[i]+"'></div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
if( typeof div === "undefined" )
|
||||||
|
div = $(".subScoreboard");
|
||||||
|
div.empty();
|
||||||
|
div.append( imageScore );
|
||||||
|
},
|
||||||
|
|
||||||
|
pad: function() {
|
||||||
|
var str = '' + SCOREBOARD.score;
|
||||||
|
while (str.length < SCOREBOARD.scoreLength) {
|
||||||
|
str = '0' + str;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
|
||||||
|
callback: function() {
|
||||||
|
console.log( "SCOREBOARD.callback" );
|
||||||
|
}
|
||||||
|
};
|
||||||
440
js/wordfighters.js
Normal file
@@ -0,0 +1,440 @@
|
|||||||
|
var DURATION = 60;
|
||||||
|
|
||||||
|
var WordFighter = {
|
||||||
|
id: null,
|
||||||
|
word: "",
|
||||||
|
started: false,
|
||||||
|
activeKeypress: false,
|
||||||
|
level: 'E',
|
||||||
|
answers: null,
|
||||||
|
letters: null,
|
||||||
|
score: 0,
|
||||||
|
combo: 0,
|
||||||
|
opponentCombo: 0,
|
||||||
|
first: true,
|
||||||
|
opponentLevel: null,
|
||||||
|
startDate: null,
|
||||||
|
|
||||||
|
toggle_howto: function() {
|
||||||
|
$('#howto').slideToggle();
|
||||||
|
},
|
||||||
|
|
||||||
|
change_level: function( chosenLevel ) {
|
||||||
|
WordFighter.level = chosenLevel;
|
||||||
|
|
||||||
|
switch( chosenLevel ) {
|
||||||
|
case 'E' :
|
||||||
|
$("#valid3header").show();
|
||||||
|
$("#valid3column").show();
|
||||||
|
$("#valid7header").show();
|
||||||
|
$("#valid7column").show();
|
||||||
|
break;
|
||||||
|
case 'M' :
|
||||||
|
$("#valid3header").show();
|
||||||
|
$("#valid3column").show();
|
||||||
|
$("#valid7header").hide();
|
||||||
|
$("#valid7column").hide();
|
||||||
|
break;
|
||||||
|
case 'H' :
|
||||||
|
$("#valid3header").hide();
|
||||||
|
$("#valid3column").hide();
|
||||||
|
$("#valid7header").show();
|
||||||
|
$("#valid7column").show();
|
||||||
|
break;
|
||||||
|
case 'X' :
|
||||||
|
$("#valid3header").show();
|
||||||
|
$("#valid3column").show();
|
||||||
|
$("#valid7header").hide();
|
||||||
|
$("#valid7column").hide();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
notify_dual: function() {
|
||||||
|
$.ajax({
|
||||||
|
url: '/wordFighter/levelChoice',
|
||||||
|
data: { level: WordFighter.level },
|
||||||
|
success: function(data){
|
||||||
|
$("#waitingGame").load('/wordFighter/get_ready', function() {
|
||||||
|
console.log( "Current opponent : " + WordFighter.opponentLevel );
|
||||||
|
console.log( data );
|
||||||
|
display_text('versus', '#howToPlay', 1, false);
|
||||||
|
$("#fighter1portrait").addClass( WordFighter.level );
|
||||||
|
$("#fighter1portrait").css( "visibility", "visible");
|
||||||
|
addFighter( WordFighter.get_fighter( WordFighter.level) );
|
||||||
|
addScoreBoard();
|
||||||
|
WordFighter.opponentLevel = WordFighter.get_random_fighter();
|
||||||
|
setTimeout( function() {
|
||||||
|
WordFighter.start_game();
|
||||||
|
}, 3000 );
|
||||||
|
WordFighter.set_opponent();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
get_fighter : function(level) {
|
||||||
|
switch( level ) {
|
||||||
|
case 'E' :
|
||||||
|
return new Sakura();
|
||||||
|
case 'M' :
|
||||||
|
return new Ryu();
|
||||||
|
case 'H' :
|
||||||
|
return new Felicia();
|
||||||
|
case 'X' :
|
||||||
|
return new Akuma();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
get_random_fighter : function() {
|
||||||
|
var levels = new Array();
|
||||||
|
levels[ 0 ] = 'E';
|
||||||
|
levels[ 1 ] = 'M';
|
||||||
|
levels[ 2 ] = 'H';
|
||||||
|
levels[ 3 ] = 'X';
|
||||||
|
return levels[ Math.floor(Math.random() * 4) ];
|
||||||
|
},
|
||||||
|
|
||||||
|
set_opponent: function() {
|
||||||
|
var fighter2Div = $("#fighter2portrait");
|
||||||
|
if( fighter2Div != "undefined" && WordFighter.opponentLevel != null ){
|
||||||
|
fighter2Div.addClass(WordFighter.opponentLevel);
|
||||||
|
fighter2Div.css( "visibility", "visible");
|
||||||
|
addFighter2( WordFighter.get_fighter( WordFighter.opponentLevel ) );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
hit_opponent: function( hit ) {
|
||||||
|
fighter2.ouch();
|
||||||
|
fighter2.health = fighter2.health - hit;
|
||||||
|
},
|
||||||
|
|
||||||
|
start_game: function() {
|
||||||
|
|
||||||
|
$("#waitingGame").hide();
|
||||||
|
$("#gamePanel").show();
|
||||||
|
$("#start").attr("disabled","disabled");
|
||||||
|
$("#level").attr("disabled","disabled");
|
||||||
|
|
||||||
|
fighter1.start();
|
||||||
|
fighter2.start();
|
||||||
|
|
||||||
|
display_text(game_waiting_ready);
|
||||||
|
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
WordFighter.clean();
|
||||||
|
WordFighter.first = true;
|
||||||
|
WordFighter.init_score();
|
||||||
|
COUNTDOWN.init(0, DURATION);
|
||||||
|
SCOREBOARD.init();
|
||||||
|
|
||||||
|
setTimeout( function() {
|
||||||
|
WordFighter.new_word();
|
||||||
|
COUNTDOWN.callback = function() {
|
||||||
|
$('#start').removeAttr('disabled');
|
||||||
|
$('#level').removeAttr('disabled');
|
||||||
|
WordFighter.game_over();
|
||||||
|
};
|
||||||
|
}, 3000)
|
||||||
|
},
|
||||||
|
|
||||||
|
setLetter: function( index, character ) {
|
||||||
|
$( "#letter" + index ).removeClass();
|
||||||
|
$( "#letter" + index ).addClass( "letter" );
|
||||||
|
$( "#letter" + index ).addClass( character );
|
||||||
|
},
|
||||||
|
|
||||||
|
keypressedHandler: function( event ) {
|
||||||
|
if( WordFighter.activeKeypress )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
WordFighter.activeKeypress = true;
|
||||||
|
|
||||||
|
if( event.which == 32 && WordFighter.level != 'X' ) { // space
|
||||||
|
while( WordFighter.erase() );
|
||||||
|
WordFighter.started = false;
|
||||||
|
WordFighter.new_word();
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( event.which == 13 ) { // enter
|
||||||
|
WordFighter.check_word();
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( event.which == 8 && !$.browser.safari) { // backspace
|
||||||
|
if( WordFighter.word.length > 0 ) {
|
||||||
|
WordFighter.erase();
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var character = String.fromCharCode(event.which);
|
||||||
|
|
||||||
|
for( var index = 1; index < 8; index++ )
|
||||||
|
{
|
||||||
|
if( WordFighter.process( index, character, "hide" ) ) {
|
||||||
|
$( "#typed" + (WordFighter.word.length + 1) ).show();
|
||||||
|
$( "#typed" + (WordFighter.word.length + 1) ).addClass( character );
|
||||||
|
WordFighter.word += character;
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
// Hack for Chrome
|
||||||
|
prevent_backspace: function( event ) {
|
||||||
|
if( event.which == 8 ) { // backspace
|
||||||
|
if( WordFighter.word.length > 0 ) {
|
||||||
|
WordFighter.erase();
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
clean: function() {
|
||||||
|
for( var index = 1; index < 8; index++ ) {
|
||||||
|
var character = WordFighter.word.charAt( index );
|
||||||
|
$( "#typed" + WordFighter.word.length ).removeClass( character );
|
||||||
|
$( "#letter" + index ).removeClass();
|
||||||
|
$( "#letter" + index ).addClass( "letter" );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
erase: function() {
|
||||||
|
var character = WordFighter.word.charAt( WordFighter.word.length - 1);
|
||||||
|
for( var index = 1; index < 8; index++ )
|
||||||
|
{
|
||||||
|
if( WordFighter.process( index, character, "show" ) ) {
|
||||||
|
$( "#typed" + WordFighter.word.length ).hide();
|
||||||
|
$( "#typed" + WordFighter.word.length ).removeClass( character );
|
||||||
|
WordFighter.word = WordFighter.word.substring(0, WordFighter.word.length - 1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
process: function( index, character, visibility ) {
|
||||||
|
if( $( "#letter" + index ).hasClass( character ) )
|
||||||
|
{
|
||||||
|
if( ( visibility === "hide" && $( "#letter" + index ).hasClass( "hideLetter" ) )
|
||||||
|
|| ( visibility === "show" && $( "#letter" + index ).hasClass( "showLetter" ) ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$( "#letter" + index ).addClass( visibility + "Letter");
|
||||||
|
$( "#letter" + index ).removeClass( visibility === "show" ? "hideLetter" : "showLetter" );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
new_word: function() {
|
||||||
|
|
||||||
|
if( WordFighter.started ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.combo = 0;
|
||||||
|
$.ajax({
|
||||||
|
url: '/wordFighter/newEnigma',
|
||||||
|
data: {level: WordFighter.level},
|
||||||
|
success: function(data){
|
||||||
|
console.log("Ajax : ");
|
||||||
|
console.log(data);
|
||||||
|
WordFighter.letters = data.letters;
|
||||||
|
|
||||||
|
for( i = 1; i < WordFighter.letters.length + 1; i++ )
|
||||||
|
{
|
||||||
|
WordFighter.setLetter( i, data.letters[ i - 1 ] )
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.answers = data.words;
|
||||||
|
|
||||||
|
var rest = 0;
|
||||||
|
var total = 0;
|
||||||
|
for( var i = 3; i < 8; i++ ) {
|
||||||
|
total += $( "#valid" + i).length;
|
||||||
|
rest += $( "#valid" + i).find( ":empty" ).length;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !WordFighter.first ) {
|
||||||
|
if( rest == 0) {
|
||||||
|
COUNTDOWN.add( total * 5 );
|
||||||
|
WordFighter.change_score( WordFighter.score + total * 5 );
|
||||||
|
} else {
|
||||||
|
if( rest / total < 0.5 )
|
||||||
|
fighter2.kick();
|
||||||
|
else
|
||||||
|
fighter2.punch();
|
||||||
|
fighter1.ouch();
|
||||||
|
WordFighter.change_score( Math.max( 0, WordFighter.score -5 * rest ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for( i = data.minLength; i < data.maxLength +1; i++ )
|
||||||
|
{
|
||||||
|
$( "#valid" + i ).empty();
|
||||||
|
var obj = data.words[i];
|
||||||
|
var count = 0;
|
||||||
|
if( obj != undefined )
|
||||||
|
count = obj.length;
|
||||||
|
|
||||||
|
for( j = 0; j < count; j++ )
|
||||||
|
{
|
||||||
|
$( "#valid" + i ).append( "<li id=\"valid" + i + "-" + j + "\" style=\"background-color:yellow\"></li>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WordFighter.started = true;
|
||||||
|
|
||||||
|
if( WordFighter.first ) {
|
||||||
|
WordFighter.startDate = new Date();
|
||||||
|
COUNTDOWN.start();
|
||||||
|
|
||||||
|
display_text( game_start );
|
||||||
|
setTimeout( function() {
|
||||||
|
hide_text();
|
||||||
|
}, 1500);
|
||||||
|
WordFighter.first = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
check_word: function() {
|
||||||
|
var lAnswers = WordFighter.answers[ WordFighter.word.length ];
|
||||||
|
var position = -1;
|
||||||
|
if( lAnswers )
|
||||||
|
position = lAnswers.indexOf( WordFighter.word );
|
||||||
|
if( position == -1 ) {
|
||||||
|
WordFighter.combo = 0;
|
||||||
|
WordFighter.activeKeypress = true;
|
||||||
|
while(WordFighter.erase());
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
WordFighter.activeKeypress = true;
|
||||||
|
if( $("#valid" + WordFighter.word.length + "-" + position).text().length == 0 ) {
|
||||||
|
WordFighter.combo++;
|
||||||
|
if( ( WordFighter.combo % 3 ) == 0 )
|
||||||
|
fighter1.kick();
|
||||||
|
else
|
||||||
|
fighter1.punch();
|
||||||
|
WordFighter.hit_opponent( WordFighter.word.length );
|
||||||
|
$("#valid" + WordFighter.word.length + "-" + position).append( WordFighter.word );
|
||||||
|
WordFighter.change_score( WordFighter.score + 10 * WordFighter.word.length );
|
||||||
|
WordFighter.check_validated();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while(WordFighter.erase());
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
check_validated: function() {
|
||||||
|
var rest = 0;
|
||||||
|
for( var i = 3; i < 8; i++ ) {
|
||||||
|
rest += $( "#valid" + i).find( ":empty" ).length;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( rest == 0 ) {
|
||||||
|
while( WordFighter.erase() );
|
||||||
|
WordFighter.started = false;
|
||||||
|
WordFighter.new_word();
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
game_over: function() {
|
||||||
|
COUNTDOWN.stop();
|
||||||
|
WordFighter.show_game_over();
|
||||||
|
WordFighter.activeKeypress = true;
|
||||||
|
var highscore = true;
|
||||||
|
var win = WordFighter.score > 0;
|
||||||
|
|
||||||
|
for( i = 3; i < 8; i++ )
|
||||||
|
{
|
||||||
|
var words = WordFighter.answers[i];
|
||||||
|
if( words != undefined )
|
||||||
|
{
|
||||||
|
for( j = 0; j < words.length; j++ )
|
||||||
|
{
|
||||||
|
var id = "#valid" + ( words[ j ].length ) + "-" + j;
|
||||||
|
$( id ).empty();
|
||||||
|
$( id ).append( words[ j ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.started = false;
|
||||||
|
},
|
||||||
|
|
||||||
|
show_game_over: function() {
|
||||||
|
$('.button').show();
|
||||||
|
/*
|
||||||
|
$.ajax({
|
||||||
|
url: "/wordFighter/gameOver",
|
||||||
|
data: {level: WordFighter.level},
|
||||||
|
success: function(data){
|
||||||
|
$("#modalDialog").prepend(data).modal({backdrop: false, show: true});
|
||||||
|
|
||||||
|
$(".replayButton").bind( "click", function() {
|
||||||
|
if( WordFighter.mode!="dual")
|
||||||
|
window.location.href = "/wordFighter/game";
|
||||||
|
else
|
||||||
|
window.location.href = "/wordFighter/invite/" + opponent;
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
*/
|
||||||
|
},
|
||||||
|
|
||||||
|
init_score: function() {
|
||||||
|
WordFighter.score = 0;
|
||||||
|
SCOREBOARD.init();
|
||||||
|
},
|
||||||
|
|
||||||
|
change_score: function(score) {
|
||||||
|
WordFighter.score = score;
|
||||||
|
SCOREBOARD.set_score( WordFighter.score );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function drawText( divHTML, message ) {
|
||||||
|
var html = "";
|
||||||
|
|
||||||
|
for( var i = 0; i < message.length; i++ ) {
|
||||||
|
var letter = message[i];
|
||||||
|
var x = ((97 - message.charCodeAt(i)) * 16);
|
||||||
|
if( letter == " " )
|
||||||
|
html += "<div class='blank'></div>";
|
||||||
|
else if( letter == "!" )
|
||||||
|
html += "<div class='clock' style='background-position: -416px -16px'></div>";
|
||||||
|
else
|
||||||
|
html += "<div class='clock' style='background-position: " + x + "px -16px'></div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
divHTML.css( "width", (message.length * 16) + "px");
|
||||||
|
divHTML.css( "margin-left", "-" + (message.length * 8) + "px");
|
||||||
|
divHTML.css( "margin-top", "20px");
|
||||||
|
divHTML.css( "position", "relative");
|
||||||
|
divHTML.css( "left", "50%");
|
||||||
|
divHTML.css( "top", "50%");
|
||||||
|
divHTML.append( html );
|
||||||
|
};
|
||||||
235
js/wordfighters_multiplayer.js
Normal file
@@ -0,0 +1,235 @@
|
|||||||
|
WordFighter.notify_dual = function() {
|
||||||
|
$.ajax({
|
||||||
|
url: '/wordFighter/levelChoice',
|
||||||
|
data: { level: WordFighter.level },
|
||||||
|
success: function(data){
|
||||||
|
$("#waitingGame").load('/wordFighter/ready', function() {
|
||||||
|
console.log( "Current opponent : " + WordFighter.opponentLevel );
|
||||||
|
console.log( data );
|
||||||
|
$("#fighter1portrait").addClass( WordFighter.level );
|
||||||
|
$("#fighter1portrait").css( "visibility", "visible");
|
||||||
|
addFighter( WordFighter.get_fighter( WordFighter.level) );
|
||||||
|
if( data.opponentLevel != "undefined" ) {
|
||||||
|
WordFighter.opponentLevel = data.opponentLevel;
|
||||||
|
}
|
||||||
|
WordFighter.set_opponent();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.new_word = function() {
|
||||||
|
|
||||||
|
if( WordFighter.started ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.combo = 0;
|
||||||
|
$.ajax({
|
||||||
|
url: '/wordFighter/newEnigma',
|
||||||
|
data: {level: WordFighter.level, mode: WordFighter.mode },
|
||||||
|
success: function(data){
|
||||||
|
WordFighter.letters = data.letters;
|
||||||
|
|
||||||
|
for( i = 1; i < WordFighter.letters.length + 1; i++ )
|
||||||
|
{
|
||||||
|
WordFighter.setLetter( i, data.letters[ i - 1 ] )
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.answers = data.words;
|
||||||
|
|
||||||
|
var rest = 0;
|
||||||
|
var total = 0;
|
||||||
|
for( var i = 3; i < 8; i++ ) {
|
||||||
|
total += $( "#valid" + i).length;
|
||||||
|
rest += $( "#valid" + i).find( ":empty" ).length;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log( data.remaining_time + " seconds" );
|
||||||
|
COUNTDOWN.setTime( data.remaining_time);
|
||||||
|
|
||||||
|
for( i = data.minLength; i < data.maxLength +1; i++ )
|
||||||
|
{
|
||||||
|
$( "#valid" + i ).empty();
|
||||||
|
var obj = data.words[i];
|
||||||
|
var count = 0;
|
||||||
|
if( obj != undefined ) {
|
||||||
|
if( WordFighter.mode == "offline" )
|
||||||
|
count = obj.length;
|
||||||
|
else
|
||||||
|
count = obj;
|
||||||
|
}
|
||||||
|
for( j = 0; j < count; j++ )
|
||||||
|
{
|
||||||
|
$( "#valid" + i ).append( "<li id=\"valid" + i + "-" + j + "\" style=\"background-color:yellow\"></li>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.started = true;
|
||||||
|
|
||||||
|
if( WordFighter.first ) {
|
||||||
|
WordFighter.startDate = new Date();
|
||||||
|
COUNTDOWN.start();
|
||||||
|
|
||||||
|
display_text( game_start );
|
||||||
|
setTimeout( function() {
|
||||||
|
hide_text();
|
||||||
|
}, 1500);
|
||||||
|
WordFighter.first = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.check_word = function() {
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: '/wordFighter/check',
|
||||||
|
data: {suggested: WordFighter.word },
|
||||||
|
success: function(data){
|
||||||
|
if( data.valid )
|
||||||
|
{
|
||||||
|
WordFighter.combo++;
|
||||||
|
if( ( WordFighter.combo % 3 ) == 0 )
|
||||||
|
fighter1.kick();
|
||||||
|
else
|
||||||
|
fighter1.punch();
|
||||||
|
|
||||||
|
WordFighter.activeKeypress = true;
|
||||||
|
$("#valid" + WordFighter.word.length + "-" + data.position).append( WordFighter.word );
|
||||||
|
|
||||||
|
WordFighter.change_score( data.score );
|
||||||
|
fighter1.punch();
|
||||||
|
WordFighter.hit_opponent(WordFighter.word.length );
|
||||||
|
|
||||||
|
while(WordFighter.erase());
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
|
||||||
|
WordFighter.check_validated();
|
||||||
|
} else {
|
||||||
|
WordFighter.combo = 0;
|
||||||
|
WordFighter.activeKeypress = true;
|
||||||
|
while(WordFighter.erase());
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
fighter1.health = data.fighter1;
|
||||||
|
fighter2.health = data.fighter2;
|
||||||
|
|
||||||
|
if( fighter1.health == 0 || fighter2.health == 0 )
|
||||||
|
WordFighter.game_over();
|
||||||
|
|
||||||
|
if( data.remaining_time )
|
||||||
|
COUNTDOWN.setTime( data.remaining_time );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.game_over = function() {
|
||||||
|
COUNTDOWN.stop();
|
||||||
|
WordFighter.activeKeypress = true;
|
||||||
|
var highscore = true;
|
||||||
|
var win = WordFighter.score > 0;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: '/wordFighter/answers',
|
||||||
|
data: {action: "answers"},
|
||||||
|
success: function(data){
|
||||||
|
$("#modalDialog").prepend(data.modal).modal({backdrop: false, show: true});
|
||||||
|
|
||||||
|
$(".replayButton").bind( "click", function() {
|
||||||
|
if( WordFighter.mode!="dual")
|
||||||
|
window.location.href = "/wordFighter/game";
|
||||||
|
else
|
||||||
|
window.location.href = "/wordFighter/invite/" + opponent;
|
||||||
|
} );
|
||||||
|
|
||||||
|
for( i = data.minLength; i < data.maxLength +1; i++ )
|
||||||
|
{
|
||||||
|
var words = data.answers[i];
|
||||||
|
if( words != undefined )
|
||||||
|
{
|
||||||
|
for( j = 0; j < words.length; j++ )
|
||||||
|
{
|
||||||
|
var id = "#valid" + ( words[ j ].length ) + "-" + j;
|
||||||
|
$( id ).empty();
|
||||||
|
$( id ).append( words[ j ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WordFighter.answers = null;
|
||||||
|
|
||||||
|
fighter1.health = data.fighter1;
|
||||||
|
fighter2.health = data.fighter2;
|
||||||
|
console.log( fighter1.health + " vs " + fighter2.health );
|
||||||
|
switch( data.state ) {
|
||||||
|
case "win" :
|
||||||
|
fighter1.victory();
|
||||||
|
fighter2.loose();
|
||||||
|
display_text( game_win );
|
||||||
|
break;
|
||||||
|
case "loose" :
|
||||||
|
fighter1.loose();
|
||||||
|
fighter2.victory();
|
||||||
|
display_text( game_loose );
|
||||||
|
break;
|
||||||
|
default :
|
||||||
|
display_text( game_draw );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
WordFighter.started = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.callback = function(data) {
|
||||||
|
if( data.id != WordFighter.id && data.action != "replay" )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if( data.action != undefined ) {
|
||||||
|
|
||||||
|
if( data.fighter1 != undefined )
|
||||||
|
fighter1.health = data.fighter1;
|
||||||
|
if( data.fighter2 != undefined )
|
||||||
|
fighter2.health = data.fighter2;
|
||||||
|
switch( data.action ) {
|
||||||
|
case "start" :
|
||||||
|
addHealthBars();
|
||||||
|
$("#waitingGame").show();
|
||||||
|
WordFighter.start_game();
|
||||||
|
break;
|
||||||
|
case "join" :
|
||||||
|
break;
|
||||||
|
case "opponentLevel" :
|
||||||
|
WordFighter.opponentLevel = data.level;
|
||||||
|
WordFighter.set_opponent();
|
||||||
|
break;
|
||||||
|
case "hit" :
|
||||||
|
case "beat" :
|
||||||
|
WordFighter.opponentCombo++;
|
||||||
|
if( (WordFighter.opponentCombo % 3 ) == 0 )
|
||||||
|
fighter2.kick();
|
||||||
|
else
|
||||||
|
fighter2.punch();
|
||||||
|
fighter1.ouch();
|
||||||
|
if( data.action == "beat" )
|
||||||
|
WordFighter.game_over();
|
||||||
|
break;
|
||||||
|
case "timeout" :
|
||||||
|
if( WordFighter.started ) {
|
||||||
|
var endDate = new Date();
|
||||||
|
console.log( WordFighter.startDate.toTimeString() + " - " + endDate.toTimeString() + " = Timeout in " + ( (endDate.getSeconds() - WordFighter.startDate.getSeconds())) + " / " + (endDate.getTime() - WordFighter.startDate.getTime()));
|
||||||
|
WordFighter.game_over();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "replay" :
|
||||||
|
$(".replayButton").bind( "click", function() {
|
||||||
|
window.location.href = '/wordFighter/game/' + data.id;
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
172
js/wordfighters_single.js
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
WordFighter.notify_dual = function() {
|
||||||
|
$.ajax({
|
||||||
|
url: '/wordFighter/levelChoice',
|
||||||
|
data: { level: WordFighter.level },
|
||||||
|
success: function(data){
|
||||||
|
$("#waitingGame").load('/wordFighter/ready', function() {
|
||||||
|
console.log( "Current opponent : " + WordFighter.opponentLevel );
|
||||||
|
console.log( data );
|
||||||
|
$("#fighter1portrait").addClass( WordFighter.level );
|
||||||
|
$("#fighter1portrait").css( "visibility", "visible");
|
||||||
|
addFighter( WordFighter.get_fighter( WordFighter.level) );
|
||||||
|
addScoreBoard();
|
||||||
|
WordFighter.opponentLevel = WordFighter.get_random_fighter();
|
||||||
|
setTimeout( function() {
|
||||||
|
WordFighter.start_game();
|
||||||
|
}, 3000 );
|
||||||
|
WordFighter.set_opponent();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.new_word = function() {
|
||||||
|
|
||||||
|
if( WordFighter.started ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.combo = 0;
|
||||||
|
$.ajax({
|
||||||
|
url: '/wordFighter/newEnigma',
|
||||||
|
data: {level: WordFighter.level},
|
||||||
|
success: function(data){
|
||||||
|
console.log(data);
|
||||||
|
WordFighter.letters = data.letters;
|
||||||
|
|
||||||
|
for( i = 1; i < WordFighter.letters.length + 1; i++ )
|
||||||
|
{
|
||||||
|
WordFighter.setLetter( i, data.letters[ i - 1 ] )
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.answers = data.words;
|
||||||
|
|
||||||
|
var rest = 0;
|
||||||
|
var total = 0;
|
||||||
|
for( var i = 3; i < 8; i++ ) {
|
||||||
|
total += $( "#valid" + i).length;
|
||||||
|
rest += $( "#valid" + i).find( ":empty" ).length;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log( data.remaining_time + " seconds" );
|
||||||
|
COUNTDOWN.setTime( data.remaining_time);
|
||||||
|
|
||||||
|
if( rest / total < 0.5 )
|
||||||
|
fighter2.kick();
|
||||||
|
else
|
||||||
|
fighter2.punch();
|
||||||
|
fighter1.ouch();
|
||||||
|
WordFighter.change_score( data.score );
|
||||||
|
|
||||||
|
for( i = data.minLength; i < data.maxLength +1; i++ )
|
||||||
|
{
|
||||||
|
$( "#valid" + i ).empty();
|
||||||
|
var obj = data.words[i];
|
||||||
|
var count = 0;
|
||||||
|
if( obj != undefined )
|
||||||
|
count = obj;
|
||||||
|
|
||||||
|
for( j = 0; j < count; j++ )
|
||||||
|
{
|
||||||
|
$( "#valid" + i ).append( "<li id=\"valid" + i + "-" + j + "\" style=\"background-color:yellow\"></li>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.started = true;
|
||||||
|
|
||||||
|
if( WordFighter.first ) {
|
||||||
|
WordFighter.startDate = new Date();
|
||||||
|
COUNTDOWN.start();
|
||||||
|
|
||||||
|
display_text( game_start );
|
||||||
|
setTimeout( function() {
|
||||||
|
hide_text();
|
||||||
|
}, 1500);
|
||||||
|
WordFighter.first = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.check_word = function() {
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: '/wordFighter/check',
|
||||||
|
data: {suggested: WordFighter.word },
|
||||||
|
success: function(data){
|
||||||
|
if( data.valid )
|
||||||
|
{
|
||||||
|
WordFighter.combo++;
|
||||||
|
if( ( WordFighter.combo % 3 ) == 0 )
|
||||||
|
fighter1.kick();
|
||||||
|
else
|
||||||
|
fighter1.punch();
|
||||||
|
|
||||||
|
WordFighter.activeKeypress = true;
|
||||||
|
$("#valid" + WordFighter.word.length + "-" + data.position).append( WordFighter.word );
|
||||||
|
|
||||||
|
WordFighter.change_score( data.score );
|
||||||
|
fighter1.punch();
|
||||||
|
WordFighter.hit_opponent(WordFighter.word.length );
|
||||||
|
|
||||||
|
while(WordFighter.erase());
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
|
||||||
|
WordFighter.check_validated();
|
||||||
|
} else {
|
||||||
|
WordFighter.combo = 0;
|
||||||
|
WordFighter.activeKeypress = true;
|
||||||
|
while(WordFighter.erase());
|
||||||
|
WordFighter.activeKeypress = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( data.remaining_time )
|
||||||
|
COUNTDOWN.setTime( data.remaining_time );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
WordFighter.game_over = function() {
|
||||||
|
COUNTDOWN.stop();
|
||||||
|
WordFighter.activeKeypress = true;
|
||||||
|
var highscore = true;
|
||||||
|
var win = WordFighter.score > 0;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: '/wordFighter/answers',
|
||||||
|
data: {action: "answers"},
|
||||||
|
success: function(data){
|
||||||
|
console.log(data);
|
||||||
|
$("#modalDialog").prepend(data.modal).modal({backdrop: false, show: true});
|
||||||
|
|
||||||
|
$(".replayButton").bind( "click", function() {
|
||||||
|
if( WordFighter.mode!=="dual")
|
||||||
|
window.location.href = "/wordFighter/game";
|
||||||
|
else
|
||||||
|
window.location.href = "/wordFighter/invite/" + opponent;
|
||||||
|
} );
|
||||||
|
|
||||||
|
for( i = data.minLength; i < data.maxLength +1; i++ )
|
||||||
|
{
|
||||||
|
var words = data.answers[i];
|
||||||
|
if( words != undefined )
|
||||||
|
{
|
||||||
|
for( j = 0; j < words.length; j++ )
|
||||||
|
{
|
||||||
|
var id = "#valid" + ( words[ j ].length ) + "-" + j;
|
||||||
|
$( id ).empty();
|
||||||
|
$( id ).append( words[ j ] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WordFighter.answers = null;
|
||||||
|
|
||||||
|
SCOREBOARD.set_score( data.score );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
WordFighter.started = false;
|
||||||
|
}
|
||||||
1849
lib/gamequery-0.7.1.js
Normal file
26
lib/gunzip.min.js
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */(function() {'use strict';function n(e){throw e;}var p=void 0,aa=this;function t(e,b){var d=e.split("."),c=aa;!(d[0]in c)&&c.execScript&&c.execScript("var "+d[0]);for(var a;d.length&&(a=d.shift());)!d.length&&b!==p?c[a]=b:c=c[a]?c[a]:c[a]={}};var x="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Uint32Array&&"undefined"!==typeof DataView;new (x?Uint8Array:Array)(256);var y;for(y=0;256>y;++y)for(var A=y,ba=7,A=A>>>1;A;A>>>=1)--ba;function B(e,b,d){var c,a="number"===typeof b?b:b=0,f="number"===typeof d?d:e.length;c=-1;for(a=f&7;a--;++b)c=c>>>8^C[(c^e[b])&255];for(a=f>>3;a--;b+=8)c=c>>>8^C[(c^e[b])&255],c=c>>>8^C[(c^e[b+1])&255],c=c>>>8^C[(c^e[b+2])&255],c=c>>>8^C[(c^e[b+3])&255],c=c>>>8^C[(c^e[b+4])&255],c=c>>>8^C[(c^e[b+5])&255],c=c>>>8^C[(c^e[b+6])&255],c=c>>>8^C[(c^e[b+7])&255];return(c^4294967295)>>>0}
|
||||||
|
var D=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,
|
||||||
|
2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,
|
||||||
|
2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,
|
||||||
|
2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,
|
||||||
|
3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,
|
||||||
|
936918E3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],C=x?new Uint32Array(D):D;function E(){}E.prototype.getName=function(){return this.name};E.prototype.getData=function(){return this.data};E.prototype.G=function(){return this.H};function G(e){var b=e.length,d=0,c=Number.POSITIVE_INFINITY,a,f,k,l,m,r,q,g,h,v;for(g=0;g<b;++g)e[g]>d&&(d=e[g]),e[g]<c&&(c=e[g]);a=1<<d;f=new (x?Uint32Array:Array)(a);k=1;l=0;for(m=2;k<=d;){for(g=0;g<b;++g)if(e[g]===k){r=0;q=l;for(h=0;h<k;++h)r=r<<1|q&1,q>>=1;v=k<<16|g;for(h=r;h<a;h+=m)f[h]=v;++l}++k;l<<=1;m<<=1}return[f,d,c]};var J=[],K;for(K=0;288>K;K++)switch(!0){case 143>=K:J.push([K+48,8]);break;case 255>=K:J.push([K-144+400,9]);break;case 279>=K:J.push([K-256+0,7]);break;case 287>=K:J.push([K-280+192,8]);break;default:n("invalid literal: "+K)}
|
||||||
|
var ca=function(){function e(a){switch(!0){case 3===a:return[257,a-3,0];case 4===a:return[258,a-4,0];case 5===a:return[259,a-5,0];case 6===a:return[260,a-6,0];case 7===a:return[261,a-7,0];case 8===a:return[262,a-8,0];case 9===a:return[263,a-9,0];case 10===a:return[264,a-10,0];case 12>=a:return[265,a-11,1];case 14>=a:return[266,a-13,1];case 16>=a:return[267,a-15,1];case 18>=a:return[268,a-17,1];case 22>=a:return[269,a-19,2];case 26>=a:return[270,a-23,2];case 30>=a:return[271,a-27,2];case 34>=a:return[272,
|
||||||
|
a-31,2];case 42>=a:return[273,a-35,3];case 50>=a:return[274,a-43,3];case 58>=a:return[275,a-51,3];case 66>=a:return[276,a-59,3];case 82>=a:return[277,a-67,4];case 98>=a:return[278,a-83,4];case 114>=a:return[279,a-99,4];case 130>=a:return[280,a-115,4];case 162>=a:return[281,a-131,5];case 194>=a:return[282,a-163,5];case 226>=a:return[283,a-195,5];case 257>=a:return[284,a-227,5];case 258===a:return[285,a-258,0];default:n("invalid length: "+a)}}var b=[],d,c;for(d=3;258>=d;d++)c=e(d),b[d]=c[2]<<24|c[1]<<
|
||||||
|
16|c[0];return b}();x&&new Uint32Array(ca);function L(e,b){this.i=[];this.j=32768;this.d=this.f=this.c=this.n=0;this.input=x?new Uint8Array(e):e;this.o=!1;this.k=M;this.w=!1;if(b||!(b={}))b.index&&(this.c=b.index),b.bufferSize&&(this.j=b.bufferSize),b.bufferType&&(this.k=b.bufferType),b.resize&&(this.w=b.resize);switch(this.k){case N:this.a=32768;this.b=new (x?Uint8Array:Array)(32768+this.j+258);break;case M:this.a=0;this.b=new (x?Uint8Array:Array)(this.j);this.e=this.D;this.q=this.A;this.l=this.C;break;default:n(Error("invalid inflate mode"))}}
|
||||||
|
var N=0,M=1;
|
||||||
|
L.prototype.g=function(){for(;!this.o;){var e=P(this,3);e&1&&(this.o=!0);e>>>=1;switch(e){case 0:var b=this.input,d=this.c,c=this.b,a=this.a,f=b.length,k=p,l=p,m=c.length,r=p;this.d=this.f=0;d+1>=f&&n(Error("invalid uncompressed block header: LEN"));k=b[d++]|b[d++]<<8;d+1>=f&&n(Error("invalid uncompressed block header: NLEN"));l=b[d++]|b[d++]<<8;k===~l&&n(Error("invalid uncompressed block header: length verify"));d+k>b.length&&n(Error("input buffer is broken"));switch(this.k){case N:for(;a+k>c.length;){r=
|
||||||
|
m-a;k-=r;if(x)c.set(b.subarray(d,d+r),a),a+=r,d+=r;else for(;r--;)c[a++]=b[d++];this.a=a;c=this.e();a=this.a}break;case M:for(;a+k>c.length;)c=this.e({t:2});break;default:n(Error("invalid inflate mode"))}if(x)c.set(b.subarray(d,d+k),a),a+=k,d+=k;else for(;k--;)c[a++]=b[d++];this.c=d;this.a=a;this.b=c;break;case 1:this.l(da,ea);break;case 2:for(var q=P(this,5)+257,g=P(this,5)+1,h=P(this,4)+4,v=new (x?Uint8Array:Array)(Q.length),s=p,F=p,H=p,w=p,z=p,O=p,I=p,u=p,Z=p,u=0;u<h;++u)v[Q[u]]=P(this,3);if(!x){u=
|
||||||
|
h;for(h=v.length;u<h;++u)v[Q[u]]=0}s=G(v);w=new (x?Uint8Array:Array)(q+g);u=0;for(Z=q+g;u<Z;)switch(z=R(this,s),z){case 16:for(I=3+P(this,2);I--;)w[u++]=O;break;case 17:for(I=3+P(this,3);I--;)w[u++]=0;O=0;break;case 18:for(I=11+P(this,7);I--;)w[u++]=0;O=0;break;default:O=w[u++]=z}F=x?G(w.subarray(0,q)):G(w.slice(0,q));H=x?G(w.subarray(q)):G(w.slice(q));this.l(F,H);break;default:n(Error("unknown BTYPE: "+e))}}return this.q()};
|
||||||
|
var S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Q=x?new Uint16Array(S):S,fa=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258],ga=x?new Uint16Array(fa):fa,ha=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0],T=x?new Uint8Array(ha):ha,ia=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],ja=x?new Uint16Array(ia):ia,ka=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,
|
||||||
|
11,12,12,13,13],U=x?new Uint8Array(ka):ka,V=new (x?Uint8Array:Array)(288),W,la;W=0;for(la=V.length;W<la;++W)V[W]=143>=W?8:255>=W?9:279>=W?7:8;var da=G(V),X=new (x?Uint8Array:Array)(30),Y,ma;Y=0;for(ma=X.length;Y<ma;++Y)X[Y]=5;var ea=G(X);function P(e,b){for(var d=e.f,c=e.d,a=e.input,f=e.c,k=a.length,l;c<b;)f>=k&&n(Error("input buffer is broken")),d|=a[f++]<<c,c+=8;l=d&(1<<b)-1;e.f=d>>>b;e.d=c-b;e.c=f;return l}
|
||||||
|
function R(e,b){for(var d=e.f,c=e.d,a=e.input,f=e.c,k=a.length,l=b[0],m=b[1],r,q;c<m&&!(f>=k);)d|=a[f++]<<c,c+=8;r=l[d&(1<<m)-1];q=r>>>16;q>c&&n(Error("invalid code length: "+q));e.f=d>>q;e.d=c-q;e.c=f;return r&65535}
|
||||||
|
L.prototype.l=function(e,b){var d=this.b,c=this.a;this.r=e;for(var a=d.length-258,f,k,l,m;256!==(f=R(this,e));)if(256>f)c>=a&&(this.a=c,d=this.e(),c=this.a),d[c++]=f;else{k=f-257;m=ga[k];0<T[k]&&(m+=P(this,T[k]));f=R(this,b);l=ja[f];0<U[f]&&(l+=P(this,U[f]));c>=a&&(this.a=c,d=this.e(),c=this.a);for(;m--;)d[c]=d[c++-l]}for(;8<=this.d;)this.d-=8,this.c--;this.a=c};
|
||||||
|
L.prototype.C=function(e,b){var d=this.b,c=this.a;this.r=e;for(var a=d.length,f,k,l,m;256!==(f=R(this,e));)if(256>f)c>=a&&(d=this.e(),a=d.length),d[c++]=f;else{k=f-257;m=ga[k];0<T[k]&&(m+=P(this,T[k]));f=R(this,b);l=ja[f];0<U[f]&&(l+=P(this,U[f]));c+m>a&&(d=this.e(),a=d.length);for(;m--;)d[c]=d[c++-l]}for(;8<=this.d;)this.d-=8,this.c--;this.a=c};
|
||||||
|
L.prototype.e=function(){var e=new (x?Uint8Array:Array)(this.a-32768),b=this.a-32768,d,c,a=this.b;if(x)e.set(a.subarray(32768,e.length));else{d=0;for(c=e.length;d<c;++d)e[d]=a[d+32768]}this.i.push(e);this.n+=e.length;if(x)a.set(a.subarray(b,b+32768));else for(d=0;32768>d;++d)a[d]=a[b+d];this.a=32768;return a};
|
||||||
|
L.prototype.D=function(e){var b,d=this.input.length/this.c+1|0,c,a,f,k=this.input,l=this.b;e&&("number"===typeof e.t&&(d=e.t),"number"===typeof e.z&&(d+=e.z));2>d?(c=(k.length-this.c)/this.r[2],f=258*(c/2)|0,a=f<l.length?l.length+f:l.length<<1):a=l.length*d;x?(b=new Uint8Array(a),b.set(l)):b=l;return this.b=b};
|
||||||
|
L.prototype.q=function(){var e=0,b=this.b,d=this.i,c,a=new (x?Uint8Array:Array)(this.n+(this.a-32768)),f,k,l,m;if(0===d.length)return x?this.b.subarray(32768,this.a):this.b.slice(32768,this.a);f=0;for(k=d.length;f<k;++f){c=d[f];l=0;for(m=c.length;l<m;++l)a[e++]=c[l]}f=32768;for(k=this.a;f<k;++f)a[e++]=b[f];this.i=[];return this.buffer=a};
|
||||||
|
L.prototype.A=function(){var e,b=this.a;x?this.w?(e=new Uint8Array(b),e.set(this.b.subarray(0,b))):e=this.b.subarray(0,b):(this.b.length>b&&(this.b.length=b),e=this.b);return this.buffer=e};function $(e){this.input=e;this.c=0;this.m=[];this.s=!1}$.prototype.F=function(){this.s||this.g();return this.m.slice()};
|
||||||
|
$.prototype.g=function(){for(var e=this.input.length;this.c<e;){var b=new E,d=p,c=p,a=p,f=p,k=p,l=p,m=p,r=p,q=p,g=this.input,h=this.c;b.u=g[h++];b.v=g[h++];(31!==b.u||139!==b.v)&&n(Error("invalid file signature:"+b.u+","+b.v));b.p=g[h++];switch(b.p){case 8:break;default:n(Error("unknown compression method: "+b.p))}b.h=g[h++];r=g[h++]|g[h++]<<8|g[h++]<<16|g[h++]<<24;b.H=new Date(1E3*r);b.N=g[h++];b.M=g[h++];0<(b.h&4)&&(b.I=g[h++]|g[h++]<<8,h+=b.I);if(0<(b.h&8)){m=[];for(l=0;0<(k=g[h++]);)m[l++]=String.fromCharCode(k);
|
||||||
|
b.name=m.join("")}if(0<(b.h&16)){m=[];for(l=0;0<(k=g[h++]);)m[l++]=String.fromCharCode(k);b.J=m.join("")}0<(b.h&2)&&(b.B=B(g,0,h)&65535,b.B!==(g[h++]|g[h++]<<8)&&n(Error("invalid header crc16")));d=g[g.length-4]|g[g.length-3]<<8|g[g.length-2]<<16|g[g.length-1]<<24;g.length-h-4-4<512*d&&(f=d);c=new L(g,{index:h,bufferSize:f});b.data=a=c.g();h=c.c;b.K=q=(g[h++]|g[h++]<<8|g[h++]<<16|g[h++]<<24)>>>0;B(a,p,p)!==q&&n(Error("invalid CRC-32 checksum: 0x"+B(a,p,p).toString(16)+" / 0x"+q.toString(16)));b.L=
|
||||||
|
d=(g[h++]|g[h++]<<8|g[h++]<<16|g[h++]<<24)>>>0;(a.length&4294967295)!==d&&n(Error("invalid input size: "+(a.length&4294967295)+" / "+d));this.m.push(b);this.c=h}this.s=!0;var v=this.m,s,F,H=0,w=0,z;s=0;for(F=v.length;s<F;++s)w+=v[s].data.length;if(x){z=new Uint8Array(w);for(s=0;s<F;++s)z.set(v[s].data,H),H+=v[s].data.length}else{z=[];for(s=0;s<F;++s)z[s]=v[s].data;z=Array.prototype.concat.apply([],z)}return z};t("Zlib.Gunzip",$);t("Zlib.Gunzip.prototype.decompress",$.prototype.g);t("Zlib.Gunzip.prototype.getMembers",$.prototype.F);t("Zlib.GunzipMember",E);t("Zlib.GunzipMember.prototype.getName",E.prototype.getName);t("Zlib.GunzipMember.prototype.getData",E.prototype.getData);t("Zlib.GunzipMember.prototype.getMtime",E.prototype.G);}).call(this);
|
||||||
9266
lib/jquery-1.7.1.js
vendored
Executable file
120
lib/jquery.i18n.js
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery i18n plugin
|
||||||
|
* @requires jQuery v1.1 or later
|
||||||
|
*
|
||||||
|
* See https://github.com/recurser/jquery-i18n
|
||||||
|
*
|
||||||
|
* Licensed under the MIT license.
|
||||||
|
*
|
||||||
|
* Version: <%= pkg.version %> (<%= meta.date %>)
|
||||||
|
*/
|
||||||
|
(function($) {
|
||||||
|
/**
|
||||||
|
* i18n provides a mechanism for translating strings using a jscript dictionary.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
var __slice = Array.prototype.slice;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* i18n property list
|
||||||
|
*/
|
||||||
|
var i18n = {
|
||||||
|
|
||||||
|
dict: null,
|
||||||
|
missingPattern: null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* load()
|
||||||
|
*
|
||||||
|
* Load translations.
|
||||||
|
*
|
||||||
|
* @param property_list i18nDict : The dictionary to use for translation.
|
||||||
|
*/
|
||||||
|
load: function(i18nDict, missingPattern) {
|
||||||
|
if (this.dict !== null) {
|
||||||
|
$.extend(this.dict, i18nDict);
|
||||||
|
} else {
|
||||||
|
this.dict = i18nDict;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (missingPattern) {
|
||||||
|
this.missingPattern = missingPattern;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* unload()
|
||||||
|
*
|
||||||
|
* Unloads translations and clears the dictionary.
|
||||||
|
*/
|
||||||
|
unload: function() {
|
||||||
|
this.dict = null;
|
||||||
|
this.missingPattern = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* _()
|
||||||
|
*
|
||||||
|
* Looks the given string up in the dictionary and returns the translation if
|
||||||
|
* one exists. If a translation is not found, returns the original word.
|
||||||
|
*
|
||||||
|
* @param string str : The string to translate.
|
||||||
|
* @param property_list params.. : params for using printf() on the string.
|
||||||
|
*
|
||||||
|
* @return string : Translated word.
|
||||||
|
*/
|
||||||
|
_: function (str) {
|
||||||
|
dict = this.dict;
|
||||||
|
if (dict && dict.hasOwnProperty(str)) {
|
||||||
|
str = dict[str];
|
||||||
|
} else if (this.missingPattern !== null) {
|
||||||
|
return this.printf(this.missingPattern, str);
|
||||||
|
}
|
||||||
|
args = __slice.call(arguments);
|
||||||
|
args[0] = str;
|
||||||
|
// Substitute any params.
|
||||||
|
return this.printf.apply(this, args);
|
||||||
|
},
|
||||||
|
|
||||||
|
/*
|
||||||
|
* printf()
|
||||||
|
*
|
||||||
|
* Substitutes %s with parameters given in list. %%s is used to escape %s.
|
||||||
|
*
|
||||||
|
* @param string str : String to perform printf on.
|
||||||
|
* @param string args : Array of arguments for printf.
|
||||||
|
*
|
||||||
|
* @return string result : Substituted string
|
||||||
|
*/
|
||||||
|
printf: function(str, args) {
|
||||||
|
if (arguments.length < 2) return str;
|
||||||
|
args = $.isArray(args) ? args : __slice.call(arguments, 1);
|
||||||
|
return str.replace(/([^%]|^)%(?:(\d+)\$)?s/g, function(p0, p, position) {
|
||||||
|
if (position) {
|
||||||
|
return p + args[parseInt(position)-1];
|
||||||
|
}
|
||||||
|
return p + args.shift();
|
||||||
|
}).replace(/%%s/g, '%s');
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* _t()
|
||||||
|
*
|
||||||
|
* Allows you to translate a jQuery selector.
|
||||||
|
*
|
||||||
|
* eg $('h1')._t('some text')
|
||||||
|
*
|
||||||
|
* @param string str : The string to translate .
|
||||||
|
* @param property_list params : Params for using printf() on the string.
|
||||||
|
*
|
||||||
|
* @return element : Chained and translated element(s).
|
||||||
|
*/
|
||||||
|
$.fn._t = function(str, params) {
|
||||||
|
return $(this).html(i18n._.apply(i18n, arguments));
|
||||||
|
};
|
||||||
|
|
||||||
|
$.i18n = i18n;
|
||||||
|
})(jQuery);
|
||||||
1
lib/jquery.mockjax.min.js
vendored
Normal file
42
lib/utf.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
// http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt
|
||||||
|
|
||||||
|
/* utf.js - UTF-8 <=> UTF-16 convertion
|
||||||
|
*
|
||||||
|
* Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp>
|
||||||
|
* Version: 1.0
|
||||||
|
* LastModified: Dec 25 1999
|
||||||
|
* This library is free. You can redistribute it and/or modify it.
|
||||||
|
*/
|
||||||
|
function Utf8ArrayToStr(array) {
|
||||||
|
var out, i, len, c;
|
||||||
|
var char2, char3;
|
||||||
|
|
||||||
|
out = "";
|
||||||
|
len = array.length;
|
||||||
|
i = 0;
|
||||||
|
while(i < len) {
|
||||||
|
c = array[i++];
|
||||||
|
switch(c >> 4)
|
||||||
|
{
|
||||||
|
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
|
||||||
|
// 0xxxxxxx
|
||||||
|
out += String.fromCharCode(c);
|
||||||
|
break;
|
||||||
|
case 12: case 13:
|
||||||
|
// 110x xxxx 10xx xxxx
|
||||||
|
char2 = array[i++];
|
||||||
|
out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
// 1110 xxxx 10xx xxxx 10xx xxxx
|
||||||
|
char2 = array[i++];
|
||||||
|
char3 = array[i++];
|
||||||
|
out += String.fromCharCode(((c & 0x0F) << 12) |
|
||||||
|
((char2 & 0x3F) << 6) |
|
||||||
|
((char3 & 0x3F) << 0));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||