diff --git a/index.html b/index.html
index 88f19a2..1470644 100644
--- a/index.html
+++ b/index.html
@@ -13,6 +13,7 @@
+
diff --git a/src/main.js b/src/main.js
index 31a62b9..a7b94c8 100644
--- a/src/main.js
+++ b/src/main.js
@@ -50,7 +50,7 @@ let config = {
// }
}
},
- scene: [ Menu, Tutorial, Fighting]
+ scene: [ Menu, Tutorial, Fighting, Credits]
}
diff --git a/src/prefabs/Character.js b/src/prefabs/Character.js
index 60d66a3..c6135d7 100644
--- a/src/prefabs/Character.js
+++ b/src/prefabs/Character.js
@@ -1,29 +1,33 @@
class Character extends Phaser.Physics.Arcade.Sprite {
// poop
- constructor(scene, x, y , texture, frame, health, mana, attack_dmg, name, power, index) {
+ constructor(scene, x, y , texture, frame, health, mana, attack_dmg, name, power, type, index) {
super(scene, x, y, texture)
scene.add.existing(this)
scene.physics.add.existing(this)
this.body.setImmovable(true)
this.x = x
this.y = y
- console.log('the y value is : ' + this.y)
+ // console.log('the y value is : ' + this.y)
// setting character properties
this.index = index
this.health = health
this.mana = mana
this.name = name // for prints
this.hurtTimer = temp_timer
- this.power = power
- // creating a boolean value to check if the current character has attacked
+ this.power = power // the abilities
+ this.type = type
+ this.attack_dmg = attack_dmg // for dmg
+ // setting boolean values for state checking
this.hurt = false
this.hasAttacked = false
- // setting up fighting damage
- this.attack_dmg = attack_dmg
-
this.collapsed = false
- // temporary check
- this.check = ''
+
+ // creating an array of attacks
+ // might make a dictionary
+ this.attackList = Array(2).fill(-1)
+
+
+
this.projectile = new Projectile(scene, this.x + this.width/2, this.y - this.height/2, `${this.name}_projectile`, this)
scene.FSM_holder[index] = new StateMachine('idle', {
@@ -40,6 +44,7 @@ class Character extends Phaser.Physics.Arcade.Sprite {
class IdleState extends State {
// in this state the character may only enter the attack and hurt state
enter (scene, character) {
+ console.log(character.attackList)
// player is not attacking in idle state
character.clearTint()
// player is not hurt
@@ -69,13 +74,7 @@ class IdleState extends State {
// is entered
}
}, null, scene)
- }
-
-
-
-
-
-
+ }
}
}
@@ -84,6 +83,11 @@ class AttackState extends State {
enter (scene, character) {
// remove the enemies health
// scene.enemy.damaged = true
+ character.mana -= 10
+ // change mana amt later
+ scene.characters_mp[character.index].match(character.mana)
+
+
scene.dmgToEnemy = character.attack_dmg
scene.selectionMenu.allowSelect = false
// console.log("selection allow is "+ scene.selectionMenu.allowSelect)
diff --git a/src/prefabs/Selection.js b/src/prefabs/Selection.js
index 3d7a227..17b39dc 100644
--- a/src/prefabs/Selection.js
+++ b/src/prefabs/Selection.js
@@ -11,7 +11,9 @@ class SelectionMenu extends Phaser.GameObjects.Graphics{
// set the current player at the first one
this.current_player = 0 // which character player is on
+ this.current_attack = 0 // which attack is shown first
this.current_selection = 2 // what the cursor is pointing at
+
this.cursor_pos = -20
this.allowSelect = true // to keep track if the player has attacked
@@ -21,7 +23,7 @@ class SelectionMenu extends Phaser.GameObjects.Graphics{
this.cursorImage = scene.add.image(x + -36, y + this.cursor_pos, 'cursor').setOrigin(0.5, 0)
this.charDisplay = scene.add.bitmapText(x + -28, y + -20, 'font', this.characters[this.current_player].name, 8)
this.item = scene.add.bitmapText(x + -28, y + -8, 'font', "PHONE", 8)
- this.powerDisplay = scene.add.bitmapText( x + -28, y + 4, 'font', this.characters[this.current_player].power, 8)
+ this.powerDisplay = scene.add.bitmapText( x + -28, y + 4, 'font', this.characters[this.current_player].attackList[this.current_attack], 8)
this.selections = [ this.powerDisplay, this.item, this.charDisplay ]
this.selections[this.current_selection].setTint(0xDFFF00);
this.availableChar = this.scene.checkActive()
@@ -103,6 +105,8 @@ class SelectionMenu extends Phaser.GameObjects.Graphics{
charChange(input){
this.availableChar = this.updateAvailable()
this.current_player += input
+ // when character is changed auto set the current attack to 0
+ this.current_attack = 0
console.log(this.availableChar)
console.log(this.current_player)
@@ -118,8 +122,23 @@ class SelectionMenu extends Phaser.GameObjects.Graphics{
this.charCursor.x = this.characters[this.availableChar[this.current_player]].x+ 15
this.charDisplay.text = this.characters[this.availableChar[this.current_player]].name
- this.powerDisplay.text = this.characters[this.availableChar[this.current_player]].power
-
+ this.powerDisplay.text = this.characters[this.availableChar[this.current_player]].attackList[this.current_attack]
+
+ }
+
+ attackChange(input){
+ // using the same logic as charChange()
+ // manuever through the selected characters attacks
+ console.log(input)
+ this.current_attack += input
+ if (this.current_attack >= this.characters[this.availableChar[this.current_player]].attackList.length){
+ this.current_attack = 0
+ }
+ else if (this.current_attack < 0){
+ this.current_attack = this.characters[this.availableChar[this.current_player]].attackList.length - 1
+ }
+ console.log('current attack' + this.current_attack)
+ this.powerDisplay.text = this.characters[this.availableChar[this.current_player]].attackList[this.current_attack]
}
}
\ No newline at end of file
diff --git a/src/scenes/Credits.js b/src/scenes/Credits.js
index e69de29..49b93b3 100644
--- a/src/scenes/Credits.js
+++ b/src/scenes/Credits.js
@@ -0,0 +1,85 @@
+class Credits extends Phaser.Scene {
+ constructor(){
+ super('creditsScene')
+ }
+
+ create() {
+ this.logo = this.add.image(centerX, centerY - tileSize / 2, 'title_image').setScale(2).setOrigin(0.5)
+ // setting up inputs
+ this.keys = this.input.keyboard.createCursorKeys()
+ this.direction = 'up'
+ this.add.bitmapText(this.width, game.config.height - 8, 'font', '[Space] to Pause [Up] or [Down] to Scroll', 8).setOrigin(0, 0.5)
+ this.add.bitmapText(this.width, game.config.height - 16, 'font', '[Left] or [Right] for Menu', 8, 1).setOrigin(0, 0.5)
+
+ this.paused = false // value to check if paused
+ const content = ['\nCode: by Charlize Serrano\n',
+ 'Assets: by Charlize Serrano\n\n\n',
+ '- Music from Pixabay - \n',
+ 'Musician: Grand_Project \n',
+ 'Song: On The Road To The Eighties_Loop2\n\n\n',
+ '- Fonts from DaFont - \n\n\n\n\n\n',
+ 'Game Influenced by:\n',
+ 'The Amazing World of Gumball\n',
+ 'Season 5 Episode 18: The Console'
+ ]
+
+ this.credits = this.add.bitmapText(centerX, game.config.height + 72, 'font', content, 8, 1).setOrigin(0.5);
+
+ }
+
+ // allow for scrolling inside of credits
+ update() {
+ const { left, right, up, down, space, shift } = this.keys
+ if (!this.paused){
+ this.move(this.logo, -1)
+ this.move(this.credits, -1)
+ }
+ if (Phaser.Input.Keyboard.JustDown(space)){
+ this.pause()
+ }
+ if (down.isDown) {
+ this.direction = 'down'
+ this.move(this.logo, 10)
+ this.move(this.credits, 10)
+
+ }
+ if (up.isDown){
+ this.direction = 'up'
+ this.move(this.logo, -10)
+ this.move(this.credits, -10)
+
+ }
+
+ if (left.isDown || right.isDown ){
+ this.scene.start('menuScene')
+ }
+
+ }
+ move(item, input) {
+ item.y += input
+
+ // resetting position
+ if (item.y >= 500 && this.direction == 'down'){
+ item.y = -50
+ }
+ if (item.y <= -200 && this.direction == 'up'){
+ item.y = game.config.height + 60
+ }
+ }
+ pause() {
+ console.log("REACHED????")
+ // allow to pause and unpause
+ if (!this.paused){
+ this.paused = true
+ console.log('paused is ' + this.paused)
+ this.move(this.logo, 0)
+ this.move(this.credits, 0)
+ return
+ }
+ else if (this.paused){
+ this.paused = false
+ return
+ // this.move(this.logo, -1)
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/scenes/Fighting.js b/src/scenes/Fighting.js
index 46b1123..0d6aac1 100644
--- a/src/scenes/Fighting.js
+++ b/src/scenes/Fighting.js
@@ -17,7 +17,6 @@ class Fighting extends Phaser.Scene {
this.dmgToEnemy = 0
this.enemy_dmg = 0
- this.availableCharacters =
this.enemyX = leftPos - tileSize
this.enemyY = floorY + tileSize
@@ -36,13 +35,18 @@ class Fighting extends Phaser.Scene {
this.music = this.sound.add('fight_music').setLoop(true).setVolume(0.4)
// adding a character to scene - each character should have their own HP
- this.gumball = new Character(this, rightPos-tileSize, floorY + tileSize /1.5, 'gumball', 0, this.hp, MP, 30, 'GUMBALL', 'MAGIC', 0).setOrigin(0,1)
- this.anais = new Character(this, rightPos, floorY +tileSize / 1.5, 'anais', 0, this.hp, MP, 50, 'ANAIS', 'SCIENCE', 1).setOrigin(0,1)
- this.darwin = new Character(this, rightPos + tileSize, floorY + tileSize / 1.5, 'darwin', 0, this.hp, MP, 10, 'DARWIN', 'SUPPORT', 2).setOrigin(0,1)
+ this.gumball = new Character(this, rightPos-tileSize, floorY + tileSize /1.5, 'gumball', 0, this.hp, MP, 30, 'GUMBALL', 'MAGIC', 'physical', 0).setOrigin(0,1)
+ this.gumball.attackList = [ 'SCRATCH', 'MAGIC']
+
+ this.anais = new Character(this, rightPos, floorY +tileSize / 1.5, 'anais', 0, this.hp, MP, 50, 'ANAIS', 'SCIENCE', 'mage', 1).setOrigin(0,1)
+ this.anais.attackList = [ 'PUNCH', 'SCIENCE' ]
+
+ this.darwin = new Character(this, rightPos + tileSize, floorY + tileSize / 1.5, 'darwin', 0, this.hp, MP, 10, 'DARWIN', 'SUPPORT', 'mage', 2).setOrigin(0,1)
+ this.darwin.attackList = [ 'SLAP', 'SUPPORT' ]
// adding each character health
this.gumball_hp = new HealthBar(this, centerX, floorY + tileSize, this.gumball, 0)
this.gumball_mp = new ManaBar(this, centerX + tileSize * 3 + 12, floorY + tileSize, this.gumball, 0)
-
+
this.anais_hp = new HealthBar(this, centerX,floorY+ tileSize *1.5, this.anais, 0)
this.anais_mp = new ManaBar(this, centerX + tileSize * 3 + 12, floorY+ tileSize *1.5, this.anais, 1)
@@ -52,9 +56,12 @@ class Fighting extends Phaser.Scene {
// adding all characters into an array to loop all the characters
this.characters = [ this.gumball, this.anais, this.darwin ]
this.characters_hp = [ this.gumball_hp, this.anais_hp, this.darwin_hp ]
+ this.characters_mp = [ this.gumball_mp, this.anais_mp, this.darwin_mp ]
+
// adding enemy to scene - enemy has their own prefab
this.enemy = new Enemy(this, leftPos - tileSize, floorY + tileSize / 1.5, 'penny', 0, HP, MP, 152, 'PENNY').setOrigin(0,1).setFlipX(true)
this.enemy_hp = new HealthBar(this, centerX, tileSize / 4, this.enemy)
+ // enemy does not need mana
this.summon = new Summon(this, rightPos - tileSize * 3, centerY, 'nicole', 200).setOrigin(0,1)
@@ -118,6 +125,15 @@ class Fighting extends Phaser.Scene {
if (Phaser.Input.Keyboard.JustDown(space)){
this.selectionMenu.select()
}
+ if (this.selectionMenu.current_selection == 0){
+ if (Phaser.Input.Keyboard.JustDown(right)){
+ this.selectionMenu.attackChange(1)
+ }
+ if (Phaser.Input.Keyboard.JustDown(left)){
+ this.selectionMenu.attackChange(-1)
+ }
+ }
+
if (this.selectionMenu.current_selection == 2){
if (Phaser.Input.Keyboard.JustDown(right)){
this.selectionMenu.charChange(1)
@@ -126,6 +142,7 @@ class Fighting extends Phaser.Scene {
this.selectionMenu.charChange(-1)
}
}
+
if (Phaser.Input.Keyboard.JustDown(up)){
this.selectionMenu.lookChoice(1)
}
diff --git a/src/scenes/Menu.js b/src/scenes/Menu.js
index e468dce..513e56e 100644
--- a/src/scenes/Menu.js
+++ b/src/scenes/Menu.js
@@ -183,9 +183,12 @@ class Menu extends Phaser.Scene{
update() {
const { left, right, up, down, space, shift } = this.keys
- if (left.isDown || right.isDown || up.isDown ){
+ if (right.isDown || up.isDown ){
this.scene.start('fightingScene')
}
+ if (left.isDown){
+ this.scene.start('creditsScene')
+ }
if (down.isDown){
this.scene.start('tutorialScene')