11import { useEffect , useState } from "react" ;
22import { useHistory , useLocation } from "react-router-dom" ;
3+ import Cookies from "js-cookie" ;
34
45import { useAuth } from '../hooks/useAuth' ;
56import { useSaveStory } from '../hooks/useSaveStory' ;
@@ -28,6 +29,9 @@ export function useMatch() {
2829 const { storyValue, updateStoryValue } = useSaveStory ( ) ;
2930 const history = useHistory ( ) ;
3031 const locationUrl = useLocation ( ) ;
32+ const [ selectedMonster , setSelectedMonster ] = useState (
33+ Cookies . get ( 'monsterSelected' ) === undefined ? 0 : Number ( Cookies . get ( 'monsterSelected' ) )
34+ ) ;
3135
3236 const [ match , setMatch ] = useState < MatchType > ( {
3337 turn : true ,
@@ -38,8 +42,8 @@ export function useMatch() {
3842 const [ battleSituation , setBattleSituation ] = useState ( String ) ;
3943 const [ battleStatus , setBattleStatus ] = useState ( String ) ;
4044
41- const [ yourMonster , setYourMonster ] = useState < MonsterType > ( { ...yourMonsterStorage [ 0 ] } ) ;
4245 const [ opponentMonster , setOpponentMonster ] = useState < MonsterType > ( { ...opponentMonsterStorage [ 0 ] } ) ;
46+ const [ yourMonster , setYourMonster ] = useState < MonsterType > ( { ...yourMonsterStorage [ selectedMonster ] } ) ;
4347
4448 useEffect ( ( ) => {
4549 if ( locationUrl . pathname === '/story-battle' ) {
@@ -52,19 +56,33 @@ export function useMatch() {
5256 } )
5357 } else { // treino
5458 setOpponentMonster ( { ...opponentMonsterStorage [ match . opponentMonsterNumber ] } ) ;
55- setYourMonster ( { ...yourMonsterStorage [ 0 ] } ) ;
59+ setYourMonster ( {
60+ ...yourMonsterStorage [ selectedMonster ]
61+ } ) ;
5662 }
5763 } , [ match . opponentMonsterNumber ] ) ;
5864
65+ function selectMonster ( number : number ) {
66+ setSelectedMonster ( number ) ;
67+
68+ Cookies . set ( 'monsterSelected' , String ( number ) ) ;
69+ }
70+
5971 async function gameMode ( mode : String ) {
60- if ( mode === 'new-game' ) {
72+ if ( mode === 'new-game' || mode === 'select-monster' ) {
6173 if ( ! user ) {
6274 await signInWithGoogle ( ) ;
6375 }
6476
77+ if ( mode === 'select-monster' ) {
78+ history . push ( '/select-monster' ) ;
79+ return ;
80+ }
81+
6582 updateStoryValue ( { // Parâmetros para novo jogo do modo história
6683 opponentMonsterNumber : 0 ,
67- yourMonsterNumber : 0 ,
84+ yourMonsterNumber : selectedMonster ,
85+ monsterImage : yourMonsterStorage [ selectedMonster ] . monsterImg ,
6886 storyNumber : 0 ,
6987 remedy : 2 ,
7088 maximumPower : 2 ,
@@ -107,14 +125,16 @@ export function useMatch() {
107125 setMatch ( { ...match , turn : ! match . turn } ) ;
108126 }
109127
110- function useItem ( item : string ) {
128+ function item ( item : string ) {
111129 if ( item === 'remedy' && match . remedy > 0 ) {
112130 if ( locationUrl . pathname === '/story-battle' ) {
113131 updateStoryValue ( { ...storyValue , remedy : storyValue . remedy - 1 } ) ;
114132 }
115133
116134 setMatch ( { ...match , remedy : match . remedy - 1 , turn : false } ) ;
117- setYourMonster ( { ...yourMonster , life : yourMonster . id === 'inicial' ? 6 : 12 } ) ;
135+ setYourMonster ( { ...yourMonster ,
136+ life : Number ( yourMonster . id ) - 1 === selectedMonster ? yourMonsterStorage [ selectedMonster ] . life : 12
137+ } ) ;
118138 setBattleSituation ( yourMonster . name + ' restaurou a vida!' ) ;
119139 } else if ( item === 'maximumPower' && match . maximumPower > 0 ) {
120140 if ( locationUrl . pathname === '/story-battle' ) {
@@ -131,32 +151,32 @@ export function useMatch() {
131151
132152 function aftermath ( attackerName : string ) {
133153 // Modo história
134- // @todo não deveria atualizar informações da história aqui? rever
154+ // @todo useMatch não deveria atualizar informações do modo história
135155 if ( locationUrl . pathname === '/story-battle' ) {
136156 let score = storyValue . score + 100 + ( storyValue . remedy * 100 ) + ( storyValue . maximumPower * 100 ) + ( yourMonster . life * 10 ) ;
137157
138- if ( opponentMonster . life <= 0 && opponentMonster . id !== 'boss1 ' ) { // Próxima história
158+ if ( opponentMonster . life <= 0 && opponentMonster . id !== '5 ' ) { // Próxima história
139159 updateStoryValue ( {
140160 ...storyValue ,
141161 storyNumber : storyStorage . findIndex ( x => x . callBattle === storyValue . opponentMonsterNumber ) + 1 ,
142162 opponentMonsterNumber : storyValue . opponentMonsterNumber + 1 ,
143163 score : score
144164 } ) ;
145165 } else if (
146- yourMonster . life <= 0 && opponentMonster . id === 'boss1 ' && yourMonster . id === 'inicial '
166+ yourMonster . life <= 0 && opponentMonster . id === '5 ' && yourMonster . id !== '4 '
147167 ) { // Ultima chance
148168 updateStoryValue ( {
149169 ...storyValue ,
150170 storyNumber : storyStorage . findIndex ( x => x . id === 'part5' ) ,
151- yourMonsterNumber : 1
171+ yourMonsterNumber : 3
152172 } ) ;
153173 } else if ( yourMonster . life <= 0 ) {
154174 updateStoryValue ( {
155175 ...storyValue ,
156176 storyNumber : storyStorage . findIndex ( x => x . id === 'bad-ending' ) ,
157177 inGame : false
158178 } ) ;
159- } else if ( opponentMonster . life <= 0 && yourMonster . id === 'yourMonster1 ' ) {
179+ } else if ( opponentMonster . life <= 0 && yourMonster . id === '4 ' ) {
160180 updateStoryValue ( {
161181 ...storyValue ,
162182 storyNumber : storyStorage . findIndex ( x => x . id === 'good-ending' ) ,
@@ -200,12 +220,14 @@ export function useMatch() {
200220 return {
201221 gameMode,
202222 fighting,
203- useItem ,
223+ item ,
204224 continueGame,
205225 match,
206226 battleSituation,
207227 battleStatus,
208228 yourMonster,
209- opponentMonster
229+ opponentMonster,
230+ selectMonster,
231+ selectedMonster
210232 } ;
211233}
0 commit comments