Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Manish Kumar
webpoke
Commits
6d3ecb9e
Commit
6d3ecb9e
authored
Jun 24, 2020
by
Manish Kumar
Browse files
partie update small fix, pokeballs displayed, buttons updated, better pokemon switch transittions
parent
aef61119
Changes
10
Show whitespace changes
Inline
Side-by-side
backend/app/controllers/partie.controller.js
View file @
6d3ecb9e
...
...
@@ -95,14 +95,14 @@ exports.updatePartie = (req, res) => {
message
:
err
.
message
||
"
Some error occurred while updating pokemon state.
"
});
else
if
(
req
.
body
.
nextPokemon
!=
-
1
){
Partie
.
activateNextPokemon
(
req
.
body
.
nextPokemon
,
(
err
,
data4
)
=>
{
console
.
log
(
req
.
body
.
nextPokemon
,
req
.
body
.
pokemon2
.
id_etat
);
Partie
.
activateNextPokemon
(
req
.
body
.
nextPokemon
,
req
.
body
.
pokemon2
.
id_etat
,
(
err
,
data4
)
=>
{
if
(
err
)
res
.
status
(
500
).
send
({
message
:
err
.
message
||
"
Some error occurred while updating pokemon state.
"
});
res
.
send
(
data4
);
});
}
else
{
res
.
send
(
data3
)
}
...
...
backend/app/methods/JSONmanip.js
View file @
6d3ecb9e
...
...
@@ -28,6 +28,41 @@ exports.filterJSON = function(data, type) {
}
exports
.
filterJSONCombat
=
function
(
data
)
{
var
separatorsNames
=
[
"
types
"
,
"
stats
"
,
"
base_stats
"
,
"
moves
"
];
var
separators
=
[
"
id_type
"
,
"
id
"
,
"
baseStat_id
"
,
"
id_move
"
];
var
containers
=
[{}];
separators
.
forEach
(
sep
=>
containers
.
push
({}));
var
dataSet
=
new
Set
();
var
filteredData
=
[];
var
i
=
-
1
;
Object
.
keys
(
data
).
forEach
(
function
(
key
)
{
var
switcher
=
0
;
containers
.
forEach
((
el
,
index
,
containers
)
=>
containers
[
index
]
=
{});
Object
.
keys
(
data
[
key
]).
forEach
(
function
(
key2
)
{
if
(
separators
.
includes
(
key2
))
switcher
++
;
containers
[
switcher
][
key2
]
=
data
[
key
][
key2
];
});
separatorsNames
.
forEach
(
sep
=>
containers
[
0
][
sep
]
=
[])
if
(
dataSet
.
has
(
data
[
key
][
"
id_pokemon
"
]))
{
for
(
var
j
=
0
;
j
<
separators
.
length
;
j
++
){
filteredData
[
i
][
separatorsNames
[
j
]].
push
(
containers
[
j
+
1
]);
}
}
else
{
i
++
;
filteredData
.
push
(
containers
[
0
]);
dataSet
.
add
(
data
[
key
][
"
id_pokemon
"
]);
for
(
var
j
=
0
;
j
<
separators
.
length
;
j
++
){
filteredData
[
i
][
separatorsNames
[
j
]].
push
(
containers
[
j
+
1
]);
}
}
});
filteredData
.
forEach
(
pokemon
=>
{
separatorsNames
.
forEach
(
sep
=>
pokemon
[
sep
]
=
arrUnique
(
pokemon
[
sep
]));
});
return
filteredData
;
}
exports
.
filterJSONCombatOld
=
function
(
data
)
{
var
separatorsNames
=
[
"
types
"
,
"
stats
"
,
"
base_stats
"
,
"
moves
"
];
var
separators
=
[
"
id_type
"
,
"
id
"
,
"
baseStat_id
"
,
"
id_move
"
];
var
dataSet
=
new
Set
();
...
...
backend/app/models/partie.model.js
View file @
6d3ecb9e
...
...
@@ -199,7 +199,7 @@ Partie.updatePartieTour = (id_partie, winner, result) => { ////////////?????????
sql
.
rollback
(
function
()
{
throw
err
;
});
result
Global
(
err
,
null
);
result
(
err
,
null
);
return
;
}
console
.
log
(
'
Transaction Complete for winner !!!!
'
);
...
...
@@ -216,15 +216,15 @@ Partie.updatePartieTour = (id_partie, winner, result) => { ////////////?????????
Partie
.
updatePartie
=
(
id_etat
,
active
,
stats
,
moves
,
result
)
=>
{
sql
.
beginTransaction
(
function
(
errTransaction
)
{
if
(
errTransaction
)
{
throw
err
;
}
sql
.
query
(
'
UPDATE etatpoke SET active=? WHERE id_etat=?
'
,
[
active
,
id_etat
],
function
(
err
,
res
)
{
if
(
err
)
{
console
.
log
(
"
error:
"
,
err
);
sql
.
rollback
(
function
()
{
throw
err
;
});
result
(
err
,
null
);
return
;
}
//
sql.query('UPDATE etatpoke SET active=? WHERE id_etat=?', [active, id_etat], function(err, res) {
//
if (err) {
//
console.log("error: ", err);
//
sql.rollback(function() {
//
throw err;
//
});
//
result(err, null);
//
return;
//
}
var
sqlStats
=
[];
stats
.
forEach
(
stat
=>
{
...
...
@@ -255,16 +255,49 @@ Partie.updatePartie = (id_etat, active, stats, moves, result) => {
result
(
err
,
null
);
return
;
}
sql
.
commit
(
function
(
err
)
{
if
(
err
)
{
console
.
log
(
"
error:
"
,
err
);
sql
.
rollback
(
function
()
{
throw
err
;
});
result
(
err
,
null
);
return
;
}
console
.
log
(
'
Transaction Complete: etatPoke updated
'
);
//sql.end();
});
});
result
(
null
,
{
res
:
true
,
id
:
res
.
insertId
});
});
// });
});
}
Partie
.
activateNextPokemon
=
(
id_etat
,
result
)
=>
{
sql
.
query
(
'
UPDATE etatpoke SET active=1 WHERE id_etat=?
'
,
[
id_etat
],
function
(
err
,
res
)
{
Partie
.
activateNextPokemon
=
(
next_id_etat
,
dead_id_etat
,
result
)
=>
{
sql
.
beginTransaction
(
function
(
errTransaction
)
{
if
(
errTransaction
)
{
throw
err
;
}
sql
.
query
(
'
UPDATE etatpoke SET active=1 WHERE id_etat=?
'
,
[
next_id_etat
],
function
(
err
,
res
)
{
if
(
err
)
{
console
.
log
(
"
error:
"
,
err
);
sql
.
rollback
(
function
()
{
throw
err
;
});
result
(
err
,
null
);
return
;
}
sql
.
query
(
'
UPDATE etatpoke SET active=0 WHERE id_etat=?
'
,
[
dead_id_etat
],
function
(
err
,
res
)
{
if
(
err
)
{
console
.
log
(
"
error:
"
,
err
);
sql
.
rollback
(
function
()
{
throw
err
;
});
result
(
err
,
null
);
return
;
}
sql
.
commit
(
function
(
err
)
{
if
(
err
)
{
console
.
log
(
"
error:
"
,
err
);
sql
.
rollback
(
function
()
{
...
...
@@ -273,9 +306,14 @@ Partie.activateNextPokemon = (id_etat, result) => {
result
(
err
,
null
);
return
;
}
console
.
log
(
'
Transaction complete : death of pokemon, pokemon switched
'
,
next_id_etat
,
dead_id_etat
);
//sql.end();
});
});
result
(
null
,
res
);
});
});
}
Partie
.
refuse
=
(
id_partie
,
result
)
=>
{
...
...
backend/app/models/pokemon.model.js
View file @
6d3ecb9e
...
...
@@ -11,7 +11,7 @@ const Pokemon = function(pokemon) {
Pokemon
.
getAll
=
result
=>
{
sql
.
query
(
"
SELECT * FROM pokemon
WHERE id_pokemon < 175
"
,
(
err
,
res
)
=>
{
sql
.
query
(
"
SELECT * FROM pokemon
"
,
(
err
,
res
)
=>
{
if
(
err
)
{
console
.
log
(
"
error:
"
,
err
);
result
(
null
,
err
);
...
...
frontend/src/app/battle-menu/battle-menu.component.css
View file @
6d3ecb9e
#refuse
{
background-color
:
rgb
(
219
,
54
,
54
);
border-color
:
rgb
(
219
,
54
,
54
);
color
:
beige
;
}
\ No newline at end of file
frontend/src/app/battle-menu/battle-menu.component.html
View file @
6d3ecb9e
...
...
@@ -7,11 +7,11 @@
<div
class=
"col-md-8 px-3"
>
<div
class=
"card-block px-3"
>
<h4
class=
"card-title"
>
{{partie.pseudo}}
</h4>
<p
class=
"card-text"
>
he
y !
</p>
<p
class=
"card-text"
*ngIf=
"partie.joueurTour==uid"
>
It's your turn to pla
y !
</p>
</div>
</div>
<div
class=
"col-md-4"
>
<
a
c
lass=
"btn btn-primary"
id=
"remove"
[routerLink]=
"['/battle', partie.id_partie, partie.joueurTour, partie.pseudo]"
skipLocationChange
>
Continue
</
a
>
<
button
[ngC
lass
]
=
"
partie.joueurTour==uid ? 'btn btn-success':'
btn btn-primary
'
"
id=
"remove"
[routerLink]=
"['/battle', partie.id_partie, partie.joueurTour, partie.pseudo]"
skipLocationChange
>
Continue
</
button
>
</div>
</div>
</div>
...
...
@@ -29,8 +29,8 @@
</div>
</div>
<div
class=
"col-md-4"
>
<
a
class=
"btn btn-primary"
id=
"accept"
(click)=
"acceptChallenge(partie, i)"
>
Accept
</
a
>
<
a
class=
"btn btn-
primary
"
id=
"refuse"
(click)=
"refuseChallenge(partie.id_partie, i)"
>
Refuse
</
a
>
<
button
class=
"btn btn-primary"
id=
"accept"
(click)=
"acceptChallenge(partie, i)"
>
Accept
</
button
>
<
button
class=
"btn btn-
success
"
id=
"refuse"
(click)=
"refuseChallenge(partie.id_partie, i)"
>
Refuse
</
button
>
</div>
</div>
</div>
...
...
frontend/src/app/battle/battle.component.html
View file @
6d3ecb9e
...
...
@@ -19,7 +19,7 @@
</div>
<div
class=
"top"
>
<div
class=
"pokeballs"
>
<div
c
lass=
"poke
ball
"
*ngFor=
"let poke of
self
Team"
></div>
<div
[ngC
lass
]
=
"poke
.stats[0].stat_value>0 ? 'pokeball pokeballAlive' : 'pokeball pokeballKo'
"
*ngFor=
"let poke of
enemy
Team"
></div>
</div>
</div>
</div>
...
...
frontend/src/app/battle/battle.component.ts
View file @
6d3ecb9e
import
{
Component
,
OnInit
}
from
'
@angular/core
'
;
import
{
HttpClient
}
from
'
@angular/common/http
'
;
import
{
ActivatedRoute
}
from
'
@angular/router
'
;
import
{
ActivatedRoute
,
Router
}
from
'
@angular/router
'
;
import
{
ChatService
}
from
'
../chat.service
'
;
@
Component
({
selector
:
'
app-battle
'
,
...
...
@@ -35,6 +35,8 @@ export class BattleComponent implements OnInit {
enemySpecDEf
:
number
;
enemyAtk
:
number
;
enemyAffichageHp
:
number
=
0
;
tempPoke
:
any
;
//to alternate between two pokemon when death
oldPoke
:
any
;
//to deactivate when death
enemyPseudo
:
string
;
endgame
:
boolean
=
false
;
...
...
@@ -52,7 +54,7 @@ export class BattleComponent implements OnInit {
curPokeIndex
:
number
;
curEnemyPokeIndex
:
number
;
constructor
(
private
route
:
ActivatedRoute
,
private
httpClient
:
HttpClient
,
private
chatService
:
ChatService
)
{
}
constructor
(
private
router
:
Router
,
private
route
:
ActivatedRoute
,
private
httpClient
:
HttpClient
,
private
chatService
:
ChatService
)
{
}
startup
(){
this
.
selfTeam
.
forEach
(
(
el
,
i
)
=>
{
...
...
@@ -97,9 +99,10 @@ export class BattleComponent implements OnInit {
getNextEnemyPokemon
(){
this
.
endgame
=
true
;
this
.
oldPoke
=
this
.
enemyPokemon
this
.
enemyTeam
.
forEach
(
el
=>
{
if
(
el
.
stats
[
0
].
stat_value
>
0
)
{
this
.
en
em
y
Poke
mon
=
el
;
this
.
t
em
p
Poke
=
el
;
this
.
endgame
=
false
;
}
else
this
.
endgame
=
this
.
endgame
&&
true
;
...
...
@@ -110,14 +113,26 @@ export class BattleComponent implements OnInit {
setTimeout
(()
=>
this
.
boxMessage
=
"
You won !
"
,
3000
);
return
false
;
}
else
{
this
.
selfKOMessage
(
this
.
tempPoke
);
return
true
;
}
}
selfKOMessage
(
tempPoke
){
setTimeout
(()
=>
this
.
boxMessage
=
this
.
enemyPokemon
.
pokeName
+
"
is K.O. !
"
,
2000
);
setTimeout
(()
=>
this
.
boxMessage
=
this
.
enemyPseudo
+
"
summons
"
+
tempPoke
.
pokeName
+
"
!
"
,
4000
);
setTimeout
(()
=>
this
.
affectEnemyStats
(
tempPoke
),
5000
);
setTimeout
(()
=>
this
.
boxMessage
=
this
.
waitingMsg
,
7000
);
}
affectEnemyStats
(
tempPoke
){
this
.
enemyPokemon
=
tempPoke
;
this
.
enemyCurHealth
=
this
.
enemyPokemon
.
stats
[
0
].
stat_value
;
this
.
enemyAtk
=
this
.
enemyPokemon
.
stats
[
1
].
stat_value
;
this
.
enemyDef
=
this
.
enemyPokemon
.
stats
[
2
].
stat_value
;
this
.
enemyType
=
this
.
enemyPokemon
.
types
[
0
].
id_type
;
this
.
enemyMaxHealth
=
this
.
enemyPokemon
.
base_stats
[
0
].
base_stat
;
this
.
enemyAffichageHp
=
this
.
healthUpdate
(
this
.
enemyCurHealth
,
this
.
enemyMaxHealth
);
return
true
;
}
}
healthUpdate
(
currentHealth
,
maxHealth
){
...
...
@@ -128,6 +143,7 @@ export class BattleComponent implements OnInit {
this
.
curHealthSelf
-=
dmg
;
if
(
this
.
curHealthSelf
<
0
)
this
.
curHealthSelf
=
0
;
this
.
affichageHp
=
this
.
healthUpdate
(
this
.
curHealthSelf
,
this
.
maxHealth
);
this
.
updatePokemonJSON
();
}
applyDamageOpponent
(
dmg
){
...
...
@@ -153,12 +169,11 @@ export class BattleComponent implements OnInit {
typeAdv
(
move
){
console
.
log
(
move
);
this
.
dmgClasse
=
move
.
id_dmg_classe
;
this
.
httpClient
.
post
(
"
http://localhost:3000/geteff
"
,
{
typeNous
:
move
.
m_id_type
,
typeEux
:
this
.
enemyType
},
{
responseType
:
'
json
'
,
withCredentials
:
true
}).
subscribe
((
res
:
any
)
=>
{
console
.
log
(
res
);
this
.
moveToSend
=
move
;
this
.
boxMessage
=
this
.
curPoke
.
pokeName
+
"
used
"
+
move
.
identifier
+
"
!
"
;
setTimeout
(()
=>
this
.
boxMessage
=
this
.
waitingMsg
,
1000
)
;
this
.
dmgClasse
=
move
.
id_dmg_classe
;
this
.
dmgToSend
=
this
.
calculeDmg
(
res
.
body
[
0
].
damage_factor
,
move
.
power
);
move
.
pp
--
;
this
.
yourTurn
=
false
;
...
...
@@ -166,25 +181,18 @@ export class BattleComponent implements OnInit {
}
updateDBPokemon
(
death
){
this
.
enemyPokemon
.
stats
[
0
].
stat_value
=
this
.
enemyCurHealth
;
this
.
enemyPokemon
.
stats
[
1
].
stat_value
=
this
.
enemyAtk
;
this
.
enemyPokemon
.
stats
[
2
].
stat_value
=
this
.
enemyDef
;
this
.
curPoke
.
stats
[
0
].
stat_value
=
this
.
curHealthSelf
;
this
.
curPoke
.
stats
[
1
].
stat_value
=
this
.
atk
;
this
.
curPoke
.
stats
[
2
].
stat_value
=
this
.
def
;
this
.
selfTeam
[
this
.
curPokeIndex
]
=
this
.
curPoke
;
this
.
enemyTeam
[
this
.
curEnemyPokeIndex
]
=
this
.
enemyPokemon
;
this
.
updatePokemonJSON
()
if
(
death
){
this
.
enemyPokemon
.
active
=
0
;
if
(
this
.
getNextEnemyPokemon
()){
console
.
log
(
"
death note
"
);
this
.
httpClient
.
post
(
"
http://localhost:3000/updatepartie
"
,
{
nextPokemon
:
this
.
en
em
y
Poke
mon
.
id_etat
,
pokemon1
:
this
.
curPoke
,
pokemon2
:
this
.
enemy
Poke
mon
,
id_partie
:
this
.
id_partie
,
winner
:
undefined
},
{
responseType
:
'
json
'
,
withCredentials
:
true
}).
subscribe
((
res
:
any
)
=>
{
this
.
httpClient
.
post
(
"
http://localhost:3000/updatepartie
"
,
{
nextPokemon
:
this
.
t
em
p
Poke
.
id_etat
,
pokemon1
:
this
.
curPoke
,
pokemon2
:
this
.
old
Poke
,
id_partie
:
this
.
id_partie
,
winner
:
undefined
},
{
responseType
:
'
json
'
,
withCredentials
:
true
}).
subscribe
((
res
:
any
)
=>
{
console
.
log
(
res
);
this
.
chatService
.
sendBattleExchcange
(
this
.
enemyPseudo
,
{
move
:
this
.
moveToSend
,
dmg
:
this
.
dmgToSend
,
nextPokemon
:
this
.
en
em
y
Poke
mon
,
endgame
:
false
,
sender
:
this
.
pseudo
});
this
.
chatService
.
sendBattleExchcange
(
this
.
enemyPseudo
,
{
move
:
this
.
moveToSend
,
dmg
:
this
.
dmgToSend
,
nextPokemon
:
this
.
t
em
p
Poke
,
endgame
:
false
,
sender
:
this
.
pseudo
});
});
}
else
{
console
.
log
(
"
winning note
"
);
this
.
httpClient
.
post
(
"
http://localhost:3000/updatepartie
"
,
{
nextPokemon
:
this
.
enemyPokemon
.
id_etat
,
pokemon1
:
this
.
curPoke
,
pokemon2
:
this
.
enemy
Poke
mon
,
id_partie
:
this
.
id_partie
,
winner
:
this
.
uid
},
{
responseType
:
'
json
'
,
withCredentials
:
true
}).
subscribe
((
res
:
any
)
=>
{
this
.
httpClient
.
post
(
"
http://localhost:3000/updatepartie
"
,
{
nextPokemon
:
-
1
,
pokemon1
:
this
.
curPoke
,
pokemon2
:
this
.
old
Poke
,
id_partie
:
this
.
id_partie
,
winner
:
this
.
uid
},
{
responseType
:
'
json
'
,
withCredentials
:
true
}).
subscribe
((
res
:
any
)
=>
{
console
.
log
(
res
);
this
.
chatService
.
sendBattleExchcange
(
this
.
enemyPseudo
,
{
move
:
this
.
moveToSend
,
dmg
:
this
.
dmgToSend
,
nextPokemon
:
this
.
enemyPokemon
,
endgame
:
true
,
sender
:
this
.
pseudo
});
});
...
...
@@ -195,16 +203,29 @@ export class BattleComponent implements OnInit {
console
.
log
(
res
);
this
.
chatService
.
sendBattleExchcange
(
this
.
enemyPseudo
,
{
move
:
this
.
moveToSend
,
dmg
:
this
.
dmgToSend
,
nextPokemon
:
undefined
,
endgame
:
false
,
sender
:
this
.
pseudo
});
});
setTimeout
(()
=>
this
.
boxMessage
=
this
.
waitingMsg
,
1000
);
}
}
updatePokemonJSON
(){
this
.
enemyPokemon
.
stats
[
0
].
stat_value
=
this
.
enemyCurHealth
;
this
.
enemyPokemon
.
stats
[
1
].
stat_value
=
this
.
enemyAtk
;
this
.
enemyPokemon
.
stats
[
2
].
stat_value
=
this
.
enemyDef
;
this
.
curPoke
.
stats
[
0
].
stat_value
=
this
.
curHealthSelf
;
this
.
curPoke
.
stats
[
1
].
stat_value
=
this
.
atk
;
this
.
curPoke
.
stats
[
2
].
stat_value
=
this
.
def
;
this
.
selfTeam
[
this
.
curPokeIndex
]
=
this
.
curPoke
;
this
.
enemyTeam
[
this
.
curEnemyPokeIndex
]
=
this
.
enemyPokemon
;
}
calculeDmg
(
eff
,
power
){
console
.
log
(
eff
,
power
);
console
.
log
(
eff
,
power
,
this
.
dmgClasse
);
console
.
log
(
this
.
enemyDef
+
"
"
+
this
.
atk
);
if
(
this
.
dmgClasse
==
2
){
let
dmg
=
Math
.
round
(((((
0.4
*
this
.
level
+
2
)
*
this
.
atk
*
power
)
/
(
50
*
this
.
enemyDef
))
+
2
)
*
(
eff
/
100
)
*
(
Math
.
random
()
*
(
1
-
0.85
)
+
0.85
));
this
.
applyDamageOpponent
(
dmg
);
console
.
log
(
this
.
level
,
this
.
atk
,
power
,
this
.
enemyDef
,
)
console
.
log
(
dmg
+
"
"
+
this
.
enemyCurHealth
);
this
.
applyDamageOpponent
(
dmg
);
return
dmg
;
}
else
if
(
this
.
dmgClasse
==
3
){
let
dmg
=
Math
.
round
(((((
0.4
*
this
.
level
+
2
)
*
this
.
atkspec
*
power
)
/
(
50
*
this
.
enemySpecDEf
))
+
2
)
*
(
eff
/
100
)
*
(
Math
.
random
()
*
(
1
-
0.85
)
+
0.85
));
...
...
frontend/src/app/team-menu/team-menu.component.css
View file @
6d3ecb9e
#remove
{
background-color
:
rgb
(
219
,
54
,
54
);
border-color
:
rgb
(
219
,
54
,
54
);
color
:
beige
;
}
.dropydown
{
overflow-y
:
scroll
;
height
:
10rem
;
...
...
frontend/src/app/team-menu/team-menu.component.html
View file @
6d3ecb9e
...
...
@@ -33,7 +33,7 @@
</div>
</div>
<div
class=
"col-md-4"
>
<
a
class=
"btn btn-primary"
id=
"remove
"
(click)=
"removePokemon(pokemon)"
>
Remove
</
a
>
<
button
type=
"button"
class=
"btn btn-danger
"
(click)=
"removePokemon(pokemon)"
>
Remove
</
button
>
</div>
</div>
</div>
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment