You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

136 lines
5.2 KiB

import React, { useState } from 'react'
import { View, Text, Image, Button } from '@tarojs/components'
import { Range, Radio } from '@nutui/nutui-react-taro';
import { useSelector } from 'react-redux'
import Taro from '@tarojs/taro';
import { redirectTo } from '@/utils/application'
import './new_table.scss'
import Title from '@/components/title'
import { reqCreateTable } from '@/api/wsapi'
import { showToast } from '@/utils/application'
import userIcon from '@/assets/icon/user-2.svg'
import robotIcon from '@/assets/icon/robot-1.svg'
import closeIcon from '@/assets/icon/close-1.svg'
import addIcon from '@/assets/icon/add-2.svg'
function NewTable() {
const {username, nickname, avatar} = useSelector(state => state.user);
const [submitLoading, setSubmitLoading] = useState(false);
const [choosingPlace, setChoosingPlace] = useState(-1);
const [texasType, setTexasType] = useState(1);
const [bigBlind, setBigBlind] = useState(2);
const [players, setPlayers] = useState([0,0,0,0,0,0]); // 0空位,1玩家,2机器人
const playerRows = players.reduce((arr, item, idx) => {
const row = parseInt(idx / 2);
let rowArr = arr[row] || [];
rowArr[idx % 2] = {index: idx, item};
arr[row] = rowArr;
return arr;
}, []);
const choosePlayer = (playerPos) => {
players[playerPos] = 1;
setPlayers([...players])
// setPlayers
}
const createTable = async () => {
if (submitLoading) { return }
setSubmitLoading(true)
try {
const _ = await reqCreateTable({
texasType, bigBlind,
players: players.filter(type => type === 1).length,
robots: players.filter(type => type === 2).length,
});
redirectTo({url: '/pages/table/table'})
}catch(err) {
showToast({title: err})
} finally {
setSubmitLoading(false)
}
}
return (
<View className="nt">
<Title title={""} bgColor={true} />
<View className="game-props">
<View className="prop-wrap">
<View className="prop-k"><Text>牌局类型</Text></View>
<View className="prop-v">
<Radio.RadioGroup value={texasType} direction="horizontal" onChange={setTexasType}>
<Radio value={1} iconSize={Taro.pxTransform(16)}>限注德州扑克</Radio>
<Radio disabled value={2} iconSize={Taro.pxTransform(16)}>底池限制德州扑克</Radio>
<Radio disabled value={3} iconSize={Taro.pxTransform(16)}>无限制德州扑克</Radio>
</Radio.RadioGroup>
</View>
</View>
<View className="prop-wrap">
<View className="prop-k"><Text>大盲注额</Text></View>
<View className="prop-v">
<Range modelValue={bigBlind} min={2} max={20} step={2}
hiddenRange={true} hiddenTag={false}
activeColor="#1BCE7D" inactiveColor="#D8D8D8"
button={<View className="range-custom-button"><Text>{bigBlind}</Text></View>}
onChange={v => setBigBlind(v)}/>
</View>
</View>
<View className="prop-wrap">
<View className="prop-k"><Text>入场金额</Text></View>
<View className="prop-v amount-in"><Text>{bigBlind * 100}</Text></View>
</View>
</View>
<View className="nt-wrap">
{
playerRows.map((row, i) => (
<View key={i} className="playerRow">
{
row.map((player, j) => (
player.item === 0
? <View key={j} onClick={() => choosePlayer(player.index)} className='player empty-player'><Image className="empty-icon" src={addIcon} /></View>
: <View key={j} className="player-wrap">
<View className="player-icon"><Image className="player-icon-img" src={player.item === 1 ? userIcon : robotIcon} /></View>
<View className="close-icon" onClick={(e) => {
e.stopPropagation();
players[player.index] = 0;
setPlayers([...players]);
}}><Image className="close-icon-img" src={closeIcon} /></View>
<View className="player">
<Text className="player-name">{player.item === 1 ? 'Player' : 'Robot'}#{player.index + 1}</Text>
</View>
</View>
))
}
</View>
))
}
<View className="self-wrap">
<View className="self">
<View className="avatar-wrap"><Image className="avatar" src={avatar} /></View>
<View className="nickname"><Text>{nickname}</Text></View>
</View>
</View>
<View className='submit-btn-wrap'>
<Button className='submit-btn' loading={submitLoading} onClick={createTable}>CREATE</Button>
</View>
</View>
{/* <Picker
title=''
isVisible={choosingPlace > -1}
listData={[{value: 1, text: 'Player'}, {value: 2, text: 'Robot'}]}
onConfirm={(values) => {
players[choosingPlace] = values[0];
setPlayers([...players]);
}}
onClose={() => setChoosingPlace(-1)}
/> */}
</View>
)
}
export default NewTable