diff --git a/src/game/lib/animal.js b/src/game/lib/animal.js
index 6a98d1f..fc0c233 100644
--- a/src/game/lib/animal.js
+++ b/src/game/lib/animal.js
@@ -10,6 +10,10 @@ function Animal(type, x, y) {
}
+Animal.prototype.setScale = function(value) {
+ this.sprite.scale.set(value);
+}
+
Animal.prototype.setIconSprite = function(species) {
this.setSpecies(species);
diff --git a/src/game/lib/animal_list.js b/src/game/lib/animal_list.js
new file mode 100644
index 0000000..6daff90
--- /dev/null
+++ b/src/game/lib/animal_list.js
@@ -0,0 +1,59 @@
+function AnimalList(y) {
+ this.animals = [];
+ this.activeAnimalIndex = -1;
+
+ var animalCount = Animal.SPECIES_DATA.length;
+ var lineWidth = GAME_SCREEN_SIZE.x - AnimalList.MARGIN_X * 2;
+ console.log("lineWidth : " + lineWidth);
+ var offsetAnimal = lineWidth / (animalCount - 1);
+ console.log("animalCount : " + animalCount);
+ console.log("offsetAnimal : " + offsetAnimal);
+
+ for(var i = 0; i < animalCount; i++) {
+ this.animals[i] = new Animal(
+ Animal.TYPE_ICON,
+ AnimalList.MARGIN_X + offsetAnimal * i,
+ y
+ );
+ this.inactivate(i);
+ }
+
+ this.activeAnimalIndex = 0;
+ this.activate(this.activeAnimalIndex);
+}
+
+AnimalList.prototype.activate = function(index) {
+ this.inactivate(this.activeAnimalIndex);
+
+ this.activeAnimalIndex = index;
+
+ this.animals[this.activeAnimalIndex].setScale(2);
+ this.animals[index].setAlpha(1);
+ this.animate(this.activeAnimalIndex);
+}
+
+AnimalList.prototype.inactivate = function(index) {
+ this.animals[index].stopAnimation();
+ this.animals[index].setScale(1);
+ this.animals[index].setAlpha(AnimalList.ALPHA_INACTIVE);
+
+ var animalData = Animal.SPECIES_DATA[index];
+ this.animals[index].setIconSprite(animalData);
+}
+
+AnimalList.prototype.animate = function(index) {
+ var animalData = Animal.SPECIES_DATA[index];
+ this.animals[index].startAnimation(animalData);
+}
+
+AnimalList.prototype.stopAnimation = function() {
+ this.animals[this.activeAnimalIndex].stopAnimation();
+}
+
+AnimalList.prototype.tweenAnimation = function(animationType) {
+ this.animals[this.activeAnimalIndex].tweenAnimation(animationType);
+}
+
+
+AnimalList.MARGIN_X = 160;
+AnimalList.ALPHA_INACTIVE = 0.1;
\ No newline at end of file
diff --git a/src/game/typing/practice/game.js b/src/game/typing/practice/game.js
index 51786d2..1bd6c97 100644
--- a/src/game/typing/practice/game.js
+++ b/src/game/typing/practice/game.js
@@ -24,20 +24,7 @@ var TypingPractice = {
screenTopUI.makeFullScreenButton();
- // this.animalOnTitle = new Animal(Animal.TYPE_ON_TITLE, game.world.centerX - 200, 30);
- this.animalOnTitle = new Animal(Animal.TYPE_ON_TITLE, game.world.centerX, 100);
- this.animalOnTitle.startAnimation(Animal.SPECIES_DATA[0]);
-
- this.animalPrev = new Animal(Animal.TYPE_ICON, game.world.centerX - 200, 100);
- this.animalPrev.setIconSprite(Animal.SPECIES_DATA[0]);
- this.animalPrev.setAlpha(0);
-
- this.animalNext = new Animal(Animal.TYPE_ICON, game.world.centerX + 200, 100);
- this.animalNext.setIconSprite(Animal.SPECIES_DATA[1]);
- this.animalNext.setAlpha(0.3);
-
this.typingScore = new TypingScore();
-
this.stageTimer = new StageTimer( TypingPractice.STAGE_TIMER_SEC, (function() {
self.isOnStage = false;
@@ -46,6 +33,9 @@ var TypingPractice = {
}));
+ this.animalList = new AnimalList(100);
+
+
// typing content
var typingContentBG = new TypingContentBG();
typingContentBG.makePracticeContentBG();
@@ -151,7 +141,7 @@ var TypingPractice = {
this.leftHand.moveToDefaultPosition();
this.rightHand.moveToDefaultPosition();
- this.animalOnTitle.stopAnimation();
+ this.animalList.stopAnimation();
var gameOverText = new GameOverText();
game.time.events.add(Phaser.Timer.SECOND * 2, this.goResult, this);
@@ -370,21 +360,12 @@ var TypingPractice = {
if(this.isKeyPressed(inputContent, typingContent)) {
this.typingScore.increase();
var animalLevelID = Animal.animalLevelIDByRecord(this.typingScore.score(), Animal.TYPE_PRACTICE);
- console.log(animalLevelID);
- console.log(this.playingAnimalIndex);
+ // console.log(animalLevelID);
+ // console.log(this.playingAnimalIndex);
if(animalLevelID > this.playingAnimalIndex) {
this.playingAnimalIndex = animalLevelID;
- this.animalOnTitle.startAnimation(Animal.SPECIES_DATA[this.playingAnimalIndex]);
- this.animalOnTitle.tweenAnimation(Animal.ANIMATION_TYPE_CHANGE);
-
- if(this.playingAnimalIndex == 1)
- this.animalPrev.setAlpha(0.3);
- this.animalPrev.setIconSprite(Animal.SPECIES_DATA[this.playingAnimalIndex - 1]);
-
- if(this.playingAnimalIndex == Animal.SPECIES_DATA.length - 1)
- this.animalNext.setAlpha(0);
- else
- this.animalNext.setIconSprite(Animal.SPECIES_DATA[this.playingAnimalIndex + 1]);
+ this.animalList.activate(this.playingAnimalIndex);
+ this.animalList.tweenAnimation(Animal.ANIMATION_TYPE_CHANGE);
}
this.playNextContent();
@@ -395,14 +376,8 @@ var TypingPractice = {
this.typingScore.reset();
this.playingAnimalIndex = 0;
- this.animalOnTitle.startAnimation(Animal.SPECIES_DATA[this.playingAnimalIndex]);
- this.animalOnTitle.tweenAnimation(Animal.ANIMATION_TYPE_DAMAGE);
-
- this.animalPrev.setIconSprite(Animal.SPECIES_DATA[0]);
- this.animalPrev.setAlpha(0);
-
- this.animalNext.setIconSprite(Animal.SPECIES_DATA[1]);
- this.animalNext.setAlpha(0.3);
+ this.animalList.activate(this.playingAnimalIndex);
+ this.animalList.tweenAnimation(Animal.ANIMATION_TYPE_DAMAGE);
}
},
diff --git a/src/game/typing/test/game.js b/src/game/typing/test/game.js
index 30d90cc..5448b73 100644
--- a/src/game/typing/test/game.js
+++ b/src/game/typing/test/game.js
@@ -22,11 +22,6 @@ var TypingTest = {
screenTopUI.makeFullScreenButton();
- // this.animalOnTitle = new Animal(Animal.TYPE_ON_TITLE, game.world.centerX - 200, 30);
- this.animalOnTitle = new Animal(Animal.TYPE_ON_TITLE, game.world.centerX, GAME_SCREEN_SIZE.y - 110);
- this.animalOnTitle.startAnimation(Animal.SPECIES_DATA[0]);
-
-
this.averageTypingSpeedText = new AverageTypingSpeed();
this.contentProgressText = new ContentProgress();
@@ -104,6 +99,9 @@ var TypingTest = {
}
+ this.animalList = new AnimalList(GAME_SCREEN_SIZE.y - 110);
+
+
// bottom ui
var screenBottomUI = new ScreenBottomUI();
screenBottomUI.printLeftTextWithBestRecord(sessionStorageManager.getBestRecord());
@@ -156,7 +154,7 @@ var TypingTest = {
gameOver: function() {
var gameOverText = new GameOverText();
- this.animalOnTitle.stopAnimation();
+ this.animalList.stopAnimation();
game.time.events.add(Phaser.Timer.SECOND * 2, this.goResult, this);
},
@@ -401,9 +399,8 @@ var TypingTest = {
// console.log('-----------------------------------');
var animalLevelID = Animal.animalLevelIDByRecord(typingRecordTotalInteger, Animal.TYPE_TEST);
- this.animalOnTitle.startAnimation(Animal.SPECIES_DATA[animalLevelID]);
- this.animalOnTitle.tweenAnimation(Animal.ANIMATION_TYPE_CHANGE);
-
+ this.animalList.activate(animalLevelID);
+ this.animalList.tweenAnimation(Animal.ANIMATION_TYPE_CHANGE);
},
playNextContent: function() {
diff --git a/src/web/client/typing_practice.html b/src/web/client/typing_practice.html
index 89ef56e..e0496eb 100644
--- a/src/web/client/typing_practice.html
+++ b/src/web/client/typing_practice.html
@@ -29,6 +29,7 @@
+
diff --git a/src/web/client/typing_test.html b/src/web/client/typing_test.html
index ce1abe9..8f54c87 100644
--- a/src/web/client/typing_test.html
+++ b/src/web/client/typing_test.html
@@ -29,6 +29,7 @@
+