source: components/blackjack/BlackjackHeader.jsx@ 1df3fde

main
Last change on this file since 1df3fde was 9bd09b0, checked in by anastasovv <simon@…>, 2 years ago

Roulette place a bet functionality

  • Property mode set to 100644
File size: 10.3 KB
RevLine 
[87614a5]1import React from 'react'
2
3import Link from 'next/link'
4
5import { useRouter } from 'next/router'
6
7import { AiOutlineArrowLeft } from 'react-icons/ai'
8
[64dc53b]9import { useEffect } from 'react'
[87614a5]10import { useDispatch, useSelector } from 'react-redux'
11
[9bd09b0]12import { setBlackjackGame, setPlayer } from '../../redux/reducers/playerSlice'
[64dc53b]13import { setBlackjack, setStyle } from '../../redux/reducers/styleSlice'
[87614a5]14
15import axios from 'axios';
16
[64dc53b]17const BlackjackHeader = () => {
[87614a5]18 const dispatch = useDispatch();
19
20 const router = useRouter();
21
22 const playerState = useSelector(state => state.player);
23 const styleState = useSelector(state => state.style);
24
25 useEffect(() => {
26 // display loading screen
27 dispatch(setStyle({
28 ...styleState.style,
29 displayLoadingScreen: true,
30 }));
31
32 dispatch(setBlackjack({
33 ...styleState.blackjack,
34 inputControls: {
35 ...styleState.blackjack.inputControls,
36 initialBet: {
37 ...styleState.blackjack.inputControls.initialBet,
38 chosenCredits: parseInt(playerState.player.credits/2),
39 }
40 }
41 }));
42
[285c3cc]43 axios.get(`/api/blackjack?action=get_player_info_on_enter&session_id=${localStorage.CAESSINO_SESSION_ID}`).then(res => {
44 if (res.data?.success) {
[87614a5]45 dispatch(setPlayer({
46 ...playerState.player,
[285c3cc]47 displayName: res.data?.displayName,
48 session_id: res.data?.session_id,
49 credits: res.data?.credits,
[87614a5]50 }));
51
[9bd09b0]52 dispatch(setBlackjackGame({
53 ...playerState.blackjackGame,
[285c3cc]54 status: res.data?.status,
55 playerCards: res.data?.playerCards,
56 dealerCards: res.data?.dealerCards,
57 }))
58
59 dispatch(setStyle({
60 ...styleState.style,
61 displayLoadingScreen: false,
62 }))
[87614a5]63
[285c3cc]64 if (parseInt(res.data?.status.toString().substr(1, 1)) == 5) {
65 dispatch(setBlackjack({
66 ...styleState.blackjack,
67 inputControls: {
68 ...styleState.blackjack.inputControls,
69 initialBet: {
70 ...styleState.blackjack.inputControls.initialBet,
71 chosenCredits: parseInt(res.data?.initialBet),
72 },
73 sideBet: {
74 ...styleState.blackjack.inputControls.sideBet,
75 chosenCredits: 0,
76 }
77 },
78 displays: {
79 ...styleState.blackjack.displays,
80 initialBet: false,
81 hitStand: true,
82 }
83 }))
84
85 if (res.data?.outcome === 'player_busted') {
[87614a5]86 dispatch(setStyle({
87 ...styleState.style,
[285c3cc]88 alert: {
89 show: true,
90 title: 'You busted!',
91 subtitle: `You lost $${-1*res.data?.earnings}`,
92 button: {
93 text: 'Play again',
94 action: 'play_again',
[87614a5]95 }
96 }
[285c3cc]97 }))
98 }
99 else if (res.data?.outcome === 'dealer_busted') {
100 dispatch(setStyle({
101 ...styleState.style,
102 alert: {
103 show: true,
104 title: 'Dealer busted!',
105 subtitle: `You won $${res.data?.earnings}`,
106 button: {
107 text: 'Play again',
108 action: 'play_again',
109 }
[87614a5]110 }
[285c3cc]111 }))
112 }
113 else if (res.data?.outcome === 'player_won') {
114 dispatch(setStyle({
115 ...styleState.style,
116 alert: {
117 show: true,
118 title: 'You won!',
119 subtitle: `You won $${res.data?.earnings}`,
120 button: {
121 text: 'Play again',
122 action: 'play_again',
123 }
[87614a5]124 }
[285c3cc]125 }))
126 }
127 else if (res.data?.outcome === 'player_lost') {
128 dispatch(setStyle({
129 ...styleState.style,
130 alert: {
131 show: true,
132 title: 'You lost!',
133 subtitle: `You lost $${-1*res.data?.earnings}`,
134 button: {
135 text: 'Play again',
136 action: 'play_again',
137 }
[87614a5]138 }
[285c3cc]139 }))
140 }
141 else if (res.data?.outcome === 'draw') {
142 dispatch(setStyle({
143 ...styleState.style,
144 alert: {
145 show: true,
146 title: 'Draw!',
147 subtitle: `You got your $${res.data?.earnings} back`,
148 button: {
149 text: 'Play again',
150 action: 'play_again',
151 }
[87614a5]152 }
[285c3cc]153 }))
154 }
155 }
[87614a5]156
[285c3cc]157 if (parseInt(res.data?.status.toString().substr(1, 1)) == 4) {
158 dispatch(setBlackjack({
159 ...styleState.blackjack,
160 inputControls: {
161 ...styleState.blackjack.inputControls,
162 initialBet: {
163 ...styleState.blackjack.inputControls.initialBet,
164 chosenCredits: parseInt(res.data?.initialBet),
165 },
166 sideBet: {
167 ...styleState.blackjack.inputControls.sideBet,
168 chosenCredits: 0,
169 }
170 },
171 displays: {
172 ...styleState.blackjack.displays,
173 initialBet: false,
174 hitStand: true,
[87614a5]175 }
[285c3cc]176 }))
177 }
[87614a5]178
[285c3cc]179 if (parseInt(res.data?.status.toString().substr(1, 1)) == 3) {
180 dispatch(setBlackjack({
181 ...styleState.blackjack,
182 inputControls: {
183 ...styleState.blackjack.inputControls,
184 initialBet: {
185 ...styleState.blackjack.inputControls.initialBet,
186 chosenCredits: parseInt(res.data?.initialBet),
187 },
188 sideBet: {
189 ...styleState.blackjack.inputControls.sideBet,
190 chosenCredits: parseInt(res.data?.sideBet),
191 }
192 },
193 displays: {
194 ...styleState.blackjack.displays,
195 initialBet: false,
196 hitStand: true,
[87614a5]197 }
[285c3cc]198 }))
199 }
[87614a5]200
[285c3cc]201 if (parseInt(res.data?.status.toString().substr(1, 1)) == 2) {
202 dispatch(setBlackjack({
203 ...styleState.blackjack,
204 inputControls: {
205 ...styleState.blackjack.inputControls,
206 initialBet: {
207 ...styleState.blackjack.inputControls.initialBet,
208 chosenCredits: parseInt(res.data?.initialBet),
209 }
210 },
211 displays: {
212 ...styleState.blackjack.displays,
213 initialBet: false,
214 sideBet: true,
[87614a5]215 }
[285c3cc]216 }))
217 }
[87614a5]218
[285c3cc]219 if (parseInt(res.data?.status.toString().substr(1, 1)) == 1) {
220 dispatch(setBlackjack({
221 ...styleState.blackjack,
222 inputControls: {
223 ...styleState.blackjack.inputControls,
224 initialBet: {
225 ...styleState.blackjack.inputControls.initialBet,
[9bd09b0]226 chosenCredits: parseInt(res.data?.credits/2),
[285c3cc]227 }
228 },
229 }))
230 }
[87614a5]231 }
232 else {
233 dispatch(setStyle({
234 ...styleState.style,
235 notification: {
236 show: true,
237 text: 'Please login in order to play blackjack.',
238 status: 'error',
239 },
240 displayLoadingScreen: false,
241 }))
242
243 router.push('/');
244 }
245 });
246 }, []);
247
248 return (
249 <header className="header">
250 <Link href="/" passHref>
251 <h2>
252 <AiOutlineArrowLeft />
253 </h2>
254 </Link>
255 <nav>
256 <ul>
[ebf5e04]257 <li>Hi, {playerState?.player?.displayName}</li>
[87614a5]258 <li>Balance: ${playerState?.player?.credits}</li>
259 </ul>
260 </nav>
261 </header>
262 )
263}
264
[64dc53b]265export default BlackjackHeader
Note: See TracBrowser for help on using the repository browser.